@font-face{font-family:Fraunces Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2")}@font-face{font-family:Fraunces Variable;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/fraunces-latin-wght-italic-Py8at3oI.woff2) format("woff2")}@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;--avatar-frame: #3a3a3a;--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;--avatar-frame: #c8b392;--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,.activity-frame h2,.contact-copy strong,.command-shortcut-head h2,.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]:not([tabindex="-1"])):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}.band{width:100%;border-bottom:1px solid transparent;background:var(--bg)}.frame{width:min(800px,100%);margin:0 auto;border-left:1px solid transparent;border-right:1px solid transparent;position:relative}.site-header{border-bottom:1px dashed var(--line)}.header-frame{display:flex;align-items:center}.desktop-nav{display:flex;align-items:center;font-size:var(--text-md);font-weight:var(--weight-medium);letter-spacing:.005em;color:var(--muted-2)}.desktop-nav>a{position:relative}.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 8px;display:flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:7px;color:var(--muted-2);cursor:pointer}.command-trigger:hover,.command-trigger:focus-visible{color:var(--ink);border-color:color-mix(in srgb,var(--ink) 32%,var(--line));outline:none}.command-trigger svg{flex:0 0 auto;font-size:12px}.command-trigger kbd{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);line-height:1;letter-spacing:.015em}[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)}.command-toast.is-error svg{color:var(--muted-2)}.command-toast>a{flex:0 0 auto;margin-left:4px;color:var(--ink);font-weight:var(--weight-semibold);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--ink) 38%,transparent);text-underline-offset:3px}.command-toast>a:hover{text-decoration-color:currentColor}.command-toast>a:focus-visible{border-radius:2px;outline:2px solid var(--ink);outline-offset:3px}@keyframes command-overlay-in{0%{opacity:0}}@keyframes command-dialog-in{0%{opacity:0;transform:translate(-50%) translateY(-10px) scale(.975)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes command-toast-in{0%{opacity:0;transform:translateY(5px)}}.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 .22s 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:auto}.banner-frame{padding:1.25rem}.banner{width:100%;height:208px;display:block;object-fit:cover;object-position:center;border-radius:12px}.profile-frame{padding:20px;display:flex;align-items:center;gap:27px}.avatar-frame{width:120px;height:120px;border-radius:12px;background:var(--avatar-frame);border:1px solid var(--line);padding:2px;flex:0 0 auto;position:relative;isolation:isolate;cursor:pointer}.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:2px;right:2px;bottom:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);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:44px;height:44px;padding:0;margin:-12px 0 -6px -16px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer}.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}.profile-socials{margin-left:auto;display:grid;grid-template-columns:repeat(2,44px);align-items:center;gap:2px;flex-shrink:0}.profile-socials a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:36px;border-radius:8px;color:var(--muted)}.profile-socials a:hover{color:var(--ink);background:var(--soft)}.profile-socials a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.profile-socials svg{width:17px;height:17px}@media(pointer:coarse){.profile-socials a{min-height:44px}}.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,.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)}.about-tools{position:relative;display:inline-block}.about-tools.is-open:after{content:"";position:absolute;top:0;bottom:0;left:100%;width:12px}.about-tools.opens-left:after{left:auto;right:100%}.about-tools-trigger{display:inline-flex;align-items:center;padding:0;border:0;color:var(--ink);font:inherit;font-weight:var(--weight-semibold);cursor:pointer}.sketch-underline{position:relative;display:inline-block;padding-bottom:2px}.sketch-underline svg{position:absolute;right:-2px;bottom:-2px;left:-2px;width:calc(100% + 4px);height:7px;overflow:visible}.sketch-underline path{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;d:path("M2 5.2C18 2.7 35 6.7 51 4.4C68 2.1 86 5.9 118 3.8");transition:d .52s cubic-bezier(.22,1,.36,1)}.about-tools-trigger:is(:hover,:focus-visible) .sketch-underline path,.about-tools.is-open .sketch-underline path{d:path("M2 5.2C18 6.2 35 2.8 51 4.4C68 6 86 3 118 3.8")}.about-tools-trigger:focus-visible{outline:2px solid color-mix(in srgb,var(--ink) 72%,transparent);outline-offset:3px;border-radius:2px}.about-tools-popover{position:absolute;z-index:20;top:50%;left:calc(100% + 12px);width:min(360px,calc(100vw - 40px));max-height:min(480px,60dvh);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft);box-shadow:0 8px 24px #00000014;backdrop-filter:blur(14px) saturate(1.08);-webkit-backdrop-filter:blur(14px) saturate(1.08);display:flex;flex-wrap:wrap;gap:7px;opacity:0;visibility:hidden;pointer-events:none;clip-path:inset(12% 68% 12% 0 round 18px);transform:translate3d(-20px,-50%,0);transform-origin:left center;transition:clip-path .22s cubic-bezier(.4,0,1,1),opacity .16s ease .06s,visibility 0s linear .22s,transform .22s cubic-bezier(.4,0,1,1)}.about-tools-popover::-webkit-scrollbar{width:8px}.about-tools-popover::-webkit-scrollbar-track{background:transparent;margin-block:12px}.about-tools-popover::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:color-mix(in srgb,var(--muted) 55%,transparent);background-clip:padding-box}.about-tools-popover::-webkit-scrollbar-thumb:hover{background-color:var(--muted)}.about-tools-popover::-webkit-scrollbar-button{display:none;width:0;height:0}@supports not selector(::-webkit-scrollbar){.about-tools-popover{scrollbar-width:thin;scrollbar-color:var(--muted) transparent}}.about-tools.opens-left .about-tools-popover{right:calc(100% + 12px);left:auto;clip-path:inset(12% 0 12% 68% round 18px);transform:translate3d(20px,-50%,0);transform-origin:right center}.about-tools.is-open .about-tools-popover{opacity:1;visibility:visible;pointer-events:auto;clip-path:inset(0 0 0 0 round 12px);transform:translate3d(0,-50%,0);transition-duration:.56s,.18s,0s,.56s;transition-delay:0s;transition-timing-function:cubic-bezier(.22,1,.36,1)}.about-tools-popover:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.about-tool{min-height:28px;padding:4px 9px;border:1px solid transparent;border-radius:7px;background:var(--chip);color:var(--muted-2);display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1;white-space:nowrap}.about-tool svg{width:14px;height:14px}.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:0 20px}.projects-grid{width:min(800px,100%);padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px;row-gap:20px;align-items:stretch}.project-card{min-width:0;padding:20px;border:1px solid transparent;border-top:0;border-bottom:0;background:var(--bg);display:flex;flex-direction:column;color:var(--ink);cursor:pointer;transition:background-color .18s cubic-bezier(.22,1,.36,1)}.project-card:hover,.project-card:focus-visible{background:var(--soft)}.project-image-link{aspect-ratio:4 / 3;height:auto;position:relative;display:block;overflow:hidden;border-radius:6px;background:#171717}.project-image-link picture{position:absolute;display:block;width:370px;right:-52px;bottom:-20px;border:5px solid #ffffff33;border-radius:12px;overflow:hidden}.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-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-image-link.domaininstall-preview img{object-position:center}.project-image-link img{width:100%;height:auto;object-fit:cover;border-radius:8px;display:block}.project-title-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:8px}.project-title-row h3{margin:0;font-family:var(--font-sans);font-size:var(--text-xl);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);font-weight:var(--weight-semibold)}.project-subtitle{margin:2px 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.4}.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:auto;padding-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}.activity-frame{padding:14px 20px}@media(max-width:640px){.about-tools{display:block;margin-top:8px}.about-tools:is(.opens-right,.opens-left) .about-tools-popover{position:static;inset:auto;width:100%;max-width:none;max-height:0;margin-top:0;padding-block:0;overflow:hidden;border-color:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;transform:none;transform-origin:center;transition:max-height .22s cubic-bezier(.16,1,.3,1),margin-top .22s cubic-bezier(.16,1,.3,1),padding .22s cubic-bezier(.16,1,.3,1),border-color .18s ease,opacity .18s ease,visibility .18s ease}.about-tools:is(.opens-right,.opens-left).is-open .about-tools-popover{max-height:min(480px,60dvh);overflow-y:auto;margin-top:8px;padding-block:10px;border-color:var(--line);transform:none}.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}.banner-frame{padding:1.75rem}.banner{height:132px;border-radius:10px}.profile-frame{padding:22px 28px;gap:14px;flex-wrap:wrap;overflow:hidden}.avatar-frame{width:104px;height:104px;border-radius:12px;padding:2px}.avatar-frame img{border-radius:9px}.half-moon{margin:0}.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}.profile-socials{width:100%;margin-left:0}.profile-socials a{height:44px}.title-band{height:59px}.title-frame{height:58px;padding:9px 28px}.title-frame h2,.activity-frame h2,.contact-title-frame>h2{font-size:var(--text-section);line-height:var(--leading-snug)}.title-frame{padding-left:28px;padding-right:28px}.view-all{font-size:var(--text-sm)}.title-band#projects .title-frame{padding-left:28px;padding-right:28px}.projects-grid{grid-template-columns:1fr}.project-card{min-height:0;padding:28px;margin:0}.project-image-link img{height:auto;aspect-ratio:1.82/1;object-fit:cover}.project-description{font-size:var(--text-md);line-height:1.5;margin:8px 0 0;max-width:none}.activity-frame{padding:14px 28px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.theme-button-icon,.command-toast{animation:none!important}.about-tools-trigger svg,.sketch-underline path,.about-tools-popover{transition:none}.sketch-underline path{animation:none!important}}html:not([data-interactive]) .motion-reveal:not(.hero-motion):not([data-initial-reveal]),html:not([data-interactive]) .motion-reveal:not(.hero-motion):not([data-initial-reveal]) *{opacity:1!important;transform:none!important;animation:none!important}.contact-recovery{padding:16px 20px;display:grid;gap:8px;border-top:1px dashed var(--line);color:var(--ink);font-size:var(--text-sm)}.contact-recovery input{width:100%;min-width:0;min-height:44px;padding:8px;border:1px solid var(--line);border-radius:4px;background:var(--soft);color:var(--ink);font:inherit}.contact-recovery a,.resume-link{min-height:44px;display:inline-flex;align-items:center;gap:8px;text-decoration:underline;text-underline-offset:3px}.resume-link{margin-inline:20px}@media(max-width:640px){.contact-recovery{padding-inline:28px}.resume-link{margin-inline:28px}}@media(min-width:641px){.title-band#projects{margin-top:18px}.title-band#projects .title-frame{padding:5px 20px}.project-card{padding:20px}.projects-grid .project-card:nth-child(odd){border-left:0}.projects-grid .project-card:nth-child(2n){border-right:0}.activity-frame{position:relative;padding-top:0}.github-contributions-widget{position:relative;margin-top:0;padding:0}.github-contributions-calendar,.github-contributions-strip{width:739px;max-width:100%;margin:0 auto;padding-top:4px}.github-contributions-calendar svg,.github-contributions-strip 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-view-toggle{position:absolute;z-index:1;top:-40px;right:0;width:auto;margin:0}}.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,.github-contributions-strip{display:block;max-width:100%;overflow-x:auto;overflow-y:hidden;direction:rtl;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.github-contributions-calendar svg,.github-contributions-strip svg{display:block;overflow:visible;direction:ltr}.github-contributions-views{position:relative;display:grid;align-items:start;min-height:56px}.github-contributions-views>[data-morph-layer]{grid-area:1 / 1;min-width:0}.github-contributions-views>[hidden]{display:none}.github-contributions-views.is-morphing{overflow:hidden}.github-contributions-views.is-morphing>[data-morph-layer]{pointer-events:none}.github-contribution-morph{position:absolute;inset:0 auto auto 0;overflow:visible;pointer-events:none}.github-contribution-morph rect{transform-origin:0 0;transform-box:view-box}.github-view-toggle{width:739px;max-width:100%;margin:0 auto 4px;display:flex;justify-content:flex-end;gap:2px}.github-view-toggle button{min-height:30px;padding:4px 8px;border:0;border-radius:5px;color:var(--muted-2);background:transparent;font-family:var(--font-mono);font-size:var(--text-2xs);cursor:pointer}.github-view-toggle button:hover,.github-view-toggle button[aria-pressed=true]{color:var(--ink);background:var(--soft)}.github-view-toggle button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media(pointer:coarse){.github-view-toggle button{min-height:44px}}.github-level-0{fill:#1a1a1a;stroke:#1a1a1a;background:#1a1a1a}.github-level-1{fill:#414141;stroke:#414141;background:#414141}.github-level-2{fill:#737373;stroke:#737373;background:#737373}.github-level-3{fill:#a3a3a3;stroke:#a3a3a3;background:#a3a3a3}.github-level-4{fill:#ebebeb;stroke:#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-strip-mark{stroke:none;shape-rendering:geometricPrecision;pointer-events:none;transition:opacity .14s ease,fill .14s ease}.github-strip-hit{fill:transparent;cursor:pointer}.github-strip-week:hover .github-strip-mark{fill:var(--ink);opacity:1}.github-contribution-tooltip{position:fixed;z-index:100;max-width:240px;transform:translate(-50%,calc(-100% - 6px));transform-origin:50% 100%;opacity:0;filter:none;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,transform .14s ease}.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:#ddcfb8;stroke:#ddcfb8;background:#ddcfb8}:root[data-theme=light] .github-level-1{fill:#b5b89a;stroke:#b5b89a;background:#b5b89a}:root[data-theme=light] .github-level-2{fill:#8b9b78;stroke:#8b9b78;background:#8b9b78}:root[data-theme=light] .github-level-3{fill:#627957;stroke:#627957;background:#627957}:root[data-theme=light] .github-level-4{fill:#3e573d;stroke:#3e573d;background:#3e573d}.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;align-items:center;flex-wrap:wrap;gap:12px;margin-top:18px;color:var(--muted);font-size:var(--text-2xs);line-height:1.6}.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:7px;margin-left:auto}.github-legend-scale{display:grid;grid-template-columns:repeat(5,11px);align-items:center;justify-items:center;gap:3px;height:13px}.github-contributions-footer strong{color:var(--ink);font-weight:500}.github-legend i{display:inline-block;width:11px;height:11px;border-radius:2px}.github-legend.is-strip i{width:2px;height:13px;border-radius:1px}@media(prefers-reduced-motion:no-preference){.github-legend i{transition:width .6s cubic-bezier(.4,0,.2,1),height .6s cubic-bezier(.4,0,.2,1),border-radius .6s cubic-bezier(.4,0,.2,1)}}.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{width:min(800px,100%);height:18px;margin:0 auto;position:relative;border-left:1px solid transparent;border-right:1px solid transparent}.site-footer{position:relative}.site-footer .band{border-bottom:1px solid transparent}.quote-frame{padding:16px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.quote-icon{display:block;width:22px;height:22px;margin:0;color:var(--muted)}.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}.quote-author{display:flex;align-items:center;justify-content:center;width:100%;margin-top:4px}.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;align-items:center;justify-content:space-between;gap:20px;text-align:left}.footer-frame>p,.footer-frame>span{margin:0;font-family:var(--font-sans);font-size:var(--text-sm);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:auto;height:24px;aspect-ratio:32 / 56;flex:0 0 auto;object-fit:contain}.footer-frame>span{display:block;margin-top:0}@media(max-width:640px){.profile-band+.title-band{margin-top:0}.about-band,.about-frame{min-height:0}.about-frame{padding:12px 28px 20px}.about-frame ul{font-size:.9375rem;line-height:var(--leading-body);gap:12px}.about-frame li{padding-left:17px}.menu-button:focus{outline:none}.projects-grid{width:100%}.title-band#projects .title-frame{padding-top:9px;padding-bottom:9px}.projects-grid .project-card{border-left:0;border-right:0}.github-contributions-widget{padding:0}.github-contributions-footer{font-size:var(--text-2xs)}.github-contributions-footer{align-items:flex-start;gap:8px}.github-legend{margin-left:auto}}@media(min-width:641px)and (max-width:820px){.projects-grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));padding-left:0;padding-right:0}}.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:none;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;box-shadow:0 12px 32px #0000003d;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,.activity-band,.quote-band,.footer-band,.profile-frame,.about-frame,.contact-title-frame,.contact-links-frame,.title-band#projects .title-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){.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}.title-band#projects{min-height:59px}.title-band#projects .title-frame{min-height:58px}.project-card{min-height:0}}#main-content,#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-frame{min-height:48px;padding:5px 20px;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:0}.contact-grid{min-height:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:0}.contact-grid>.contact-card{min-width:0;min-height:72px;padding:14px;display:flex;align-items:center;gap:10px;border:0;border-right:1px solid transparent;border-radius:0;color:var(--ink);background:var(--bg);box-shadow:none;transition:background-color .2s ease}.contact-grid>.contact-card:last-child{border-right:0}.contact-grid>a.contact-card:hover{background:color-mix(in srgb,var(--soft) 82%,transparent);transform:none}.contact-email{width:100%;text-align:left;cursor:default}.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-card .contact-arrow{display:block;flex:0 0 auto;margin-left:auto;color:var(--muted);font-size:13px}.contact-email-copy{width:44px;height:44px;min-width:44px;min-height:44px;margin:-5px -8px -5px auto;padding:0;display:grid;place-items:center;border:0;border-radius:0;color:var(--muted);background:transparent;cursor:pointer}.contact-email-copy:hover,.contact-email-copy:focus-visible{color:var(--ink);background:transparent}.contact-email-copy svg{width:13px;height:13px;display:block}.copy-feedback{display:grid;width:13px;height:13px}.copy-feedback svg{grid-area:1 / 1;opacity:0;transition:opacity .16s ease}.copy-feedback[data-state=idle] .copy-idle,.copy-feedback[data-state=copied] .copy-success,.copy-feedback[data-state=error] .copy-error{opacity:1}.contact-card:hover .contact-arrow,.contact-card:focus-visible .contact-arrow{color:var(--ink)}.contact-grid>.contact-email.is-copied{background:color-mix(in srgb,var(--green) 9%,var(--bg))}.contact-grid>.contact-email.is-copied .contact-email-copy{color:var(--green)}.contact-email-copy.is-error{color:var(--muted-2)}@media(min-width:641px)and (prefers-reduced-motion:no-preference){.site-shell:not(.is-boot-complete) :is(.hero-motion .banner,.hero-motion .avatar-frame,.hero-motion .profile-copy,.hero-motion .profile-socials,.desktop-nav),.motion-reveal:not(.is-visible):not([data-initial-reveal]) :is(.banner,.avatar-frame,.profile-copy,.profile-socials,.title-frame>*,.activity-title-band h2,.github-contributions-stage,.contact-title-frame>*,.quote-frame>*,.footer-frame>*),.about-line.motion-reveal:not(.is-visible):not([data-initial-reveal]),.project-card.motion-reveal:not(.is-visible):not([data-initial-reveal]),.contact-card.motion-reveal:not(.is-visible):not([data-initial-reveal]){opacity:0}.site-shell.is-boot-complete .hero-motion.is-visible .banner{animation:banner-arrive .78s cubic-bezier(.16,1,.3,1) 70ms backwards}.site-shell.is-boot-complete .hero-motion.is-visible .avatar-frame{--reveal-x: -12px;--reveal-scale: .965;animation:component-arrive .68s cubic-bezier(.16,1,.3,1) .23s backwards}.site-shell.is-boot-complete .hero-motion.is-visible .profile-copy{--reveal-x: -9px;animation:component-arrive .7s cubic-bezier(.16,1,.3,1) .33s backwards}.site-shell.is-boot-complete .hero-motion.is-visible .profile-socials{--reveal-x: 8px;animation:component-arrive .58s cubic-bezier(.16,1,.3,1) .43s backwards}.title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .title-frame>*,.contact-title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .contact-title-frame>*{--reveal-y: 14px;animation:component-arrive .64s cubic-bezier(.16,1,.3,1) backwards}.title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .title-frame>:nth-child(2),.contact-title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .contact-title-frame>:nth-child(2){animation-delay:95ms}.about-line.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-x: -14px;animation:component-arrive .62s cubic-bezier(.16,1,.3,1) var(--motion-delay, 0ms) backwards}.project-card.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-x: -14px;--reveal-y: 8px;animation:component-arrive .72s cubic-bezier(.16,1,.3,1) var(--motion-delay, 0ms) backwards}.project-card.motion-reveal:is(.is-visible,[data-initial-reveal]):nth-child(2n){--reveal-x: 14px}.project-card.motion-reveal:is(.is-visible,[data-initial-reveal]) picture{--reveal-x: 0px;--reveal-y: 5px;--reveal-scale: 1.025;animation:component-arrive .72s cubic-bezier(.16,1,.3,1) var(--motion-delay, 0ms) backwards}.activity-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .activity-title-band h2{--reveal-x: -10px;animation:component-arrive .62s cubic-bezier(.16,1,.3,1) backwards}.activity-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .github-contributions-stage{animation:component-arrive .52s ease-out .12s backwards}.contact-card.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-x: -10px;animation:component-arrive .62s cubic-bezier(.16,1,.3,1) var(--motion-delay, 0ms) backwards}.contact-card.motion-reveal:is(.is-visible,[data-initial-reveal]):nth-child(2n){--reveal-x: 10px}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .quote-icon{animation:quote-mark-arrive .5s ease-out backwards}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) blockquote{animation:quote-copy-arrive .58s ease-out 90ms backwards}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .quote-author{animation:quote-author-arrive .48s ease-out .21s backwards}.footer-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .footer-frame>*{animation:footer-credit-arrive .6s cubic-bezier(.16,1,.3,1) backwards}.footer-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .footer-frame>:nth-child(2){animation-delay:.1s}}@media(max-width:640px)and (prefers-reduced-motion:no-preference){.site-shell:not(.is-boot-complete) :is(.hero-motion .banner,.hero-motion .avatar-frame,.hero-motion .profile-copy,.hero-motion .profile-socials,.mobile-actions),.motion-reveal:not(.is-visible):not([data-initial-reveal]) :is(.banner,.avatar-frame,.profile-copy,.profile-socials,.title-frame>*,.activity-title-band h2,.github-contributions-stage,.contact-title-frame>*,.quote-frame>*,.footer-frame>*),.about-line.motion-reveal:not(.is-visible):not([data-initial-reveal]),.project-card.motion-reveal:not(.is-visible):not([data-initial-reveal]),.contact-card.motion-reveal:not(.is-visible):not([data-initial-reveal]){opacity:0}.site-shell.is-boot-complete .hero-motion.is-visible .banner{animation:banner-arrive .62s cubic-bezier(.2,.78,.2,1) 40ms backwards}.site-shell.is-boot-complete .hero-motion.is-visible :is(.avatar-frame,.profile-copy,.profile-socials){--reveal-y: 12px;animation:component-arrive .58s cubic-bezier(.2,.78,.2,1) backwards}.site-shell.is-boot-complete .hero-motion.is-visible .avatar-frame{animation-delay:.16s}.site-shell.is-boot-complete .hero-motion.is-visible .profile-copy{animation-delay:.22s}.site-shell.is-boot-complete .hero-motion.is-visible .profile-socials{animation-delay:.28s}.title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .title-frame>*,.contact-title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .contact-title-frame>*{--reveal-y: 12px;animation:component-arrive .56s cubic-bezier(.2,.78,.2,1) backwards}.title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .title-frame>:nth-child(2),.contact-title-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .contact-title-frame>:nth-child(2){animation-delay:70ms}.about-line.motion-reveal:is(.is-visible,[data-initial-reveal]),.contact-card.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-y: 12px;animation:component-arrive .58s cubic-bezier(.2,.78,.2,1) var(--motion-delay, 50ms) backwards}.project-card.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-y: 14px;animation:component-arrive .64s cubic-bezier(.2,.78,.2,1) 60ms backwards}.activity-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .activity-title-band h2{--reveal-y: 12px;animation:component-arrive .56s cubic-bezier(.2,.78,.2,1) backwards}.activity-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .github-contributions-stage{animation:component-arrive .5s ease-out .1s backwards}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .quote-icon{animation:quote-mark-arrive .5s ease-out backwards}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) blockquote{animation:quote-copy-arrive .56s ease-out 90ms backwards}.quote-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .quote-author{animation:quote-author-arrive .5s ease-out .21s backwards}.footer-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .footer-frame>*{animation:footer-credit-arrive .52s cubic-bezier(.2,.78,.2,1) backwards}.footer-band.motion-reveal:is(.is-visible,[data-initial-reveal]) .footer-frame>:nth-child(2){animation-delay:80ms}}@media(prefers-reduced-motion:no-preference){.motion-reveal[data-entrance-complete=true],.motion-reveal[data-entrance-complete=true] :is(.banner,.avatar-frame,.profile-copy,.profile-socials,.title-frame>*,.activity-title-band h2,.github-contributions-stage,.contact-title-frame>*,.quote-frame>*,.footer-frame>*),.project-card.motion-reveal[data-entrance-complete=true] picture,.contribution-wave[data-entrance-complete=true] .github-contributions-calendar rect,.site-shell.is-boot-entrance-complete :is(.hero-motion .banner,.hero-motion .avatar-frame,.hero-motion .profile-copy,.hero-motion .profile-socials,.desktop-nav,.desktop-nav>*,.mobile-actions,.mobile-actions>*){animation:none!important;opacity:1;transform:none}}@media(min-width:641px)and (prefers-reduced-motion:no-preference){.contribution-wave.is-visible:not([data-entrance-complete=true]) .github-contributions-views:not([data-view-switched]) .github-contributions-calendar rect{transform-box:fill-box;transform-origin:center;animation:contribution-cell-arrive .42s cubic-bezier(.16,1,.3,1) backwards;animation-delay:var(--github-delay, 0ms)}}@keyframes banner-arrive{0%{opacity:0}to{opacity:1}}@keyframes component-arrive{0%{opacity:0;transform:translate3d(var(--reveal-x, 0px),var(--reveal-y, 0px),0) scale(var(--reveal-scale, 1))}to{opacity:1;transform:none}}@keyframes contribution-cell-arrive{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:none}}@keyframes quote-mark-arrive{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes quote-copy-arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes quote-author-arrive{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes footer-credit-arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@media(max-width:640px){.contact-title-band{margin-top:20px;min-height:0}.contact-title-frame{min-height:58px;padding:9px 28px;display:flex}.contact-title-frame>h2{height:auto;padding:0;font-size:var(--text-section);line-height:var(--leading-snug)}.contact-links-band,.contact-links-frame,.contact-grid{min-height:0}.contact-links-frame{padding:0}.contact-grid{grid-template-columns:1fr;gap:0}.contact-grid>.contact-card{min-height:74px;padding:11px 28px;justify-content:flex-start;border:0;border-bottom:1px solid transparent}.contact-grid>.contact-card:last-child{border-bottom:0}.contact-card-primary{grid-column:auto;min-height:74px;padding:11px 28px}.contact-card .contact-icon{width:34px;height:34px}.contact-card .contact-arrow{display:block}.footer-grid-gap{height:8px}.quote-frame blockquote{max-width:330px;font-size:var(--text-quote);line-height:var(--leading-quote)}.footer-frame{padding:0 28px;flex-direction:column;align-items:flex-start;gap:8px}}@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:none!important}.command-trigger:hover,.contact-grid>a.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}.command-drawer-handle{display:none}@media(max-width:640px){.site-shell{padding-top:48px}.site-header,.header-frame{height:44px}.site-header{top:2px}.mobile-actions{width:auto;height:44px;min-height:44px;padding:0 2px;display:flex;align-items:center;justify-content:center;gap:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--line) 82%,var(--ink) 18%);border-radius:12px;background:color-mix(in srgb,var(--bg) 92%,transparent);box-shadow:none;backdrop-filter:blur(16px) saturate(1.08);-webkit-backdrop-filter:blur(16px) saturate(1.08)}.mobile-command-trigger{min-width:44px;min-height:44px;height:44px;padding:0 11px;display:flex;align-items:center;justify-content:center;border:0;border-right:1px solid var(--line);border-radius:8px 0 0 8px;color:var(--muted-2);background:transparent;cursor:pointer}.mobile-command-trigger:hover,.mobile-command-trigger:focus-visible{color:var(--ink);background:color-mix(in srgb,var(--ink) 6%,transparent)}.mobile-command-trigger svg{width:13px;height:13px}.mobile-actions .theme-button,.mobile-actions .menu-button{width:44px;height:44px;min-width:44px;min-height:44px;border-radius:0}.mobile-actions .theme-button{font-size:17px}.mobile-actions .menu-button{border-radius:0 8px 8px 0;font-size:19px}.mobile-divider{width:1px;height:22px;flex:0 0 1px;margin:0;background:var(--line)}.mobile-menu{position:absolute;z-index:60;top:50px;right:calc(50% - 71px);width:160px;padding:6px;display:grid;gap:2px;border:1px solid color-mix(in srgb,var(--line) 78%,var(--ink) 22%);border-radius:12px;color:var(--ink);background:color-mix(in srgb,var(--bg) 96%,var(--ink) 4%);box-shadow:0 14px 38px #0000003d;backdrop-filter:blur(18px) saturate(1.08);-webkit-backdrop-filter:blur(18px) saturate(1.08)}.mobile-menu a{min-height:44px;padding:0 10px;display:flex;align-items:center;border-radius:7px;color:var(--muted-2);font-size:var(--text-sm);font-weight:var(--weight-medium)}.mobile-menu a:hover,.mobile-menu a:focus-visible{color:var(--ink);background:color-mix(in srgb,var(--ink) 6%,transparent)}[cmdk-overlay]{background:#0000006b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:command-overlay-in .18s ease-out both}[cmdk-dialog]{inset:auto 0 0;width:100%;max-height:min(82dvh,720px);padding-top:0;padding-bottom:env(safe-area-inset-bottom);display:flex;flex-direction:column;overflow:hidden;border-color:color-mix(in srgb,var(--line) 76%,var(--ink) 24%);border-bottom:0;border-radius:20px 20px 0 0;background:color-mix(in srgb,var(--bg) 98%,var(--ink) 2%);box-shadow:0 -18px 56px #00000052;transform:translateY(var(--command-drag-y, 0px));transition:transform .26s cubic-bezier(.32,.72,0,1);animation:mobile-command-drawer-in .34s cubic-bezier(.32,.72,0,1) both}[cmdk-dialog].is-drag-interacted{animation:none}[cmdk-dialog].is-dragging{transition:none;-webkit-user-select:none;user-select:none}.command-drawer-handle{width:100%;height:44px;min-height:44px;flex:0 0 44px;margin:0;padding:0;display:grid;place-items:center;border:0;border-radius:20px 20px 0 0;color:inherit;background:transparent;cursor:grab;touch-action:none}.command-drawer-handle span{width:38px;height:4px;border-radius:999px;background:color-mix(in srgb,var(--ink) 24%,transparent)}[cmdk-dialog].is-dragging .command-drawer-handle{cursor:grabbing}.command-input-row{height:48px;flex:0 0 48px;padding:0 13px}.command-input-row>kbd,.command-footer{display:none}[cmdk-list]{min-height:0;max-height:none;flex:1 1 auto;overflow-y:auto;padding:6px;overscroll-behavior:contain}[cmdk-item]{min-height:44px}[cmdk-group-heading]{padding-top:7px}.command-shortcut-head{min-height:70px}.command-shortcut-list{max-height:calc(82dvh - 106px);overflow-y:auto}}@keyframes mobile-command-drawer-in{0%{transform:translateY(100%)}to{transform:translateY(var(--command-drag-y, 0px))}}:where(#main-content,#top,#about,#projects,#github-activity,#contact)[data-navigation-focus]:focus{outline:2px solid color-mix(in srgb,var(--ink) 78%,transparent);outline-offset:-2px}@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 .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>:nth-child(1){animation-delay:.54s}.site-shell.is-boot-complete .desktop-nav>.nav-command-cluster>:nth-child(2){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}}@media(max-width:640px)and (prefers-reduced-motion:no-preference){.mobile-menu{--reveal-y: -7px;--reveal-scale: .985;transform-origin:top center;animation:component-arrive .28s cubic-bezier(.16,1,.3,1) both}.site-shell.is-boot-complete .mobile-actions{animation-duration:.6s;animation-delay:50ms}.site-shell.is-boot-complete .mobile-actions>*,.site-shell.is-boot-complete .mobile-actions>:nth-child(1),.site-shell.is-boot-complete .mobile-actions>:nth-child(2),.site-shell.is-boot-complete .mobile-actions>:nth-child(3),.site-shell.is-boot-complete .mobile-actions>:nth-child(4){animation-duration:.44s;animation-delay:.23s}}@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:color-mix(in srgb,var(--ink) 6%,transparent);border-color:color-mix(in srgb,var(--ink) 12%,transparent);backdrop-filter:blur(12px) saturate(1.12);-webkit-backdrop-filter:blur(12px) saturate(1.12);transition:border-color .18s ease,color .18s ease,background .18s ease}.command-trigger:hover,.command-trigger:focus-visible{transform:none;border-color:color-mix(in srgb,var(--ink) 20%,transparent);background:color-mix(in srgb,var(--ink) 10%,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-xs);font-weight:var(--weight-medium);line-height:1.4;text-align:center;text-wrap:balance;-webkit-user-select:none;user-select:none;transform-origin:var(--radix-tooltip-content-transform-origin);--tooltip-shift-x: 0px;--tooltip-shift-y: 0px}.ui-tooltip-content[data-side=top]{--tooltip-shift-y: 4px}.ui-tooltip-content[data-side=bottom]{--tooltip-shift-y: -4px}.ui-tooltip-content[data-side=left]{--tooltip-shift-x: 4px}.ui-tooltip-content[data-side=right]{--tooltip-shift-x: -4px}.ui-tooltip-content[data-state=delayed-open],.ui-tooltip-content[data-state=instant-open]{animation:ui-tooltip-morph-in .48s cubic-bezier(.22,1,.36,1) both}.ui-tooltip-content[data-state=closed]{animation:ui-tooltip-morph-out .2s cubic-bezier(.4,0,1,1) both}.ui-tooltip-arrow{fill:var(--ink)}@keyframes ui-tooltip-morph-in{0%{opacity:0;clip-path:inset(12% 24% round 14px);transform:translate(var(--tooltip-shift-x),var(--tooltip-shift-y))}to{opacity:1;clip-path:inset(-8px round 6px);transform:translate(0)}}@keyframes ui-tooltip-morph-out{0%{opacity:1;clip-path:inset(-8px round 6px);transform:translate(0)}to{opacity:0;clip-path:inset(8% 16% round 12px);transform:translate(var(--tooltip-shift-x),var(--tooltip-shift-y))}}@media(prefers-reduced-motion:reduce){.ui-tooltip-content[data-state]{animation:none}}:root{--section-gap: 24px}.profile-band+.title-band,.title-band#projects,.activity-band,.contact-title-band{margin-top:var(--section-gap);border-top:1px solid transparent}.activity-band,.activity-frame{min-height:0}.site-footer>.footer-grid-gap:first-child{height:var(--section-gap)}.contact-links-frame{padding-bottom:0}.quote-band,.quote-frame,.footer-band,.footer-frame{min-height:0}.site-footer>.footer-grid-gap:nth-child(3){height:40px}.site-footer>.footer-grid-gap:nth-child(5){height:32px}@media(max-width:640px){:root{--section-gap: 20px}.profile-band+.title-band,.title-band#projects,.activity-band,.contact-title-band{margin-top:var(--section-gap)}.site-footer>.footer-grid-gap:first-child{height:var(--section-gap)}.quote-frame{padding-block:8px}.site-footer>.footer-grid-gap:nth-child(3){height:28px}.site-footer>.footer-grid-gap:nth-child(5){height:28px}}
