@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,.tech-frame h2,.activity-frame h2,.project-title-row h3,.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 dashed var(--line);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 7px;display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:6px;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{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)}.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}.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: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 dashed var(--line);border-top:0;border-bottom:0;background:var(--bg);display:flex;flex-direction:column;color:var(--ink);cursor:pointer;transition:border-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))}.project-image-link{height:232px;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 img{width:100%;height:auto;object-fit:cover;border-radius:8px;display:block}.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}.tech-frame{padding:17px 20px 13px}.tech-heading{display:flex;align-items:center}.tech-groups{margin-top:0;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){.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;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}.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)}.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-title-row h3{font-size:var(--text-xl)}.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:0;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}}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}.tech-frame{padding-top:11px}.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}.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% - 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,filter .18s ease,transform .22s cubic-bezier(.2,.9,.25,1.25)}.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{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 dashed var(--line)}.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;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:auto;height:32px;aspect-ratio:32 / 56;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){.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>span:first-child{display:none}.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,.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){.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 dashed var(--line);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 .views,.desktop-nav),.motion-reveal:not(.is-visible):not([data-initial-reveal]) :is(.banner,.avatar-frame,.profile-copy,.views,.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]),.tech-heading.motion-reveal:not(.is-visible):not([data-initial-reveal]),.tech-group.motion-reveal:not(.is-visible):not([data-initial-reveal]) .tech-list li,.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 .views{--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}.tech-heading.motion-reveal:is(.is-visible,[data-initial-reveal]){--reveal-x: -10px;animation:component-arrive .62s cubic-bezier(.16,1,.3,1) backwards}.tech-group.motion-reveal:is(.is-visible,[data-initial-reveal]) .tech-list li{--reveal-y: 7px;--reveal-scale: .96;animation:component-arrive .5s 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 .views,.mobile-actions),.motion-reveal:not(.is-visible):not([data-initial-reveal]) :is(.banner,.avatar-frame,.profile-copy,.views,.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]),.tech-heading.motion-reveal:not(.is-visible):not([data-initial-reveal]),.tech-group.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,.views){--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 .views{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]),.tech-heading.motion-reveal:is(.is-visible,[data-initial-reveal]),.tech-group.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,.views,.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,.tech-group.motion-reveal[data-entrance-complete=true] .tech-list li,.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 .views,.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-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 dashed var(--line)}.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 16px}.monster-can-icon{width:auto;height:30px}}@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-shell:after{content:"";position:absolute;inset-block:0;left:50%;width:min(800px,100%);transform:translate(-50%);border-inline:1px dashed var(--line);pointer-events:none;z-index:2}.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:72px;min-height:44px;height:44px;padding:0 11px;display:flex;align-items:center;justify-content:center;gap:6px;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-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-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 .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}}@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: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-display);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);border-top:1px dashed var(--line)}.tech-band,.tech-frame,.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: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:var(--section-gap)}.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}}
