:root{color-scheme:light;--bg:#fff;--bg-subtle:#fafafa;--surface:#fff;--surface-hover:#f5f5f6;--text:#16161a;--text-muted:#5f5f6a;--text-faint:#8a8a94;--border:#e6e6e9;--border-strong:#d2d2d8;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#2563eb14;--accent-ring:#2563eb4d;--on-accent:#fff;--success:#15803d;--success-soft:#15803d1a;--warning:#b45309;--warning-soft:#b453091a;--danger:#b91c1c;--nav-bg:#ffffffbf;--shadow-md:0 4px 16px #1010140f;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--radius-sm:6px;--radius:10px;--radius-lg:16px;--section-y:clamp(72px,9vw,128px);--gutter:clamp(20px,4vw,40px);--measure:68ch;--nav-h:64px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#0b0c0e;--bg-subtle:#101114;--surface:#131418;--surface-hover:#1a1c21;--text:#ececf1;--text-muted:#9b9ba6;--text-faint:#72727d;--border:#24262c;--border-strong:#34373f;--accent:#7aa2f7;--accent-hover:#9ab8f9;--accent-soft:#7aa2f71f;--accent-ring:#7aa2f759;--on-accent:#0b0c0e;--success:#4ade80;--success-soft:#4ade801f;--warning:#fbbf24;--warning-soft:#fbbf241f;--danger:#f87171;--nav-bg:#0b0c0ebf;--shadow-md:0 4px 16px #00000080}}:root[data-theme=dark]{color-scheme:dark;--bg:#0b0c0e;--bg-subtle:#101114;--surface:#131418;--surface-hover:#1a1c21;--text:#ececf1;--text-muted:#9b9ba6;--text-faint:#72727d;--border:#24262c;--border-strong:#34373f;--accent:#7aa2f7;--accent-hover:#9ab8f9;--accent-soft:#7aa2f71f;--accent-ring:#7aa2f759;--on-accent:#0b0c0e;--success:#4ade80;--success-soft:#4ade801f;--warning:#fbbf24;--warning-soft:#fbbf241f;--danger:#f87171;--nav-bg:#0b0c0ebf;--shadow-md:0 4px 16px #00000080}*,:before,:after{box-sizing:border-box}*{margin:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 24px);-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.65;overflow-x:hidden}img,svg,video{max-width:100%;display:block}img{height:auto}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}::selection{background:var(--accent-soft);color:var(--text)}h1,h2,h3,h4{letter-spacing:-.022em;color:var(--text);text-wrap:balance;font-weight:600;line-height:1.15}p{text-wrap:pretty}.container{width:100%;max-width:1080px;padding-inline:var(--gutter);margin-inline:auto}.container--prose{max-width:780px}.section{padding-block:var(--section-y)}.section--subtle{background:var(--bg-subtle);border-block:1px solid var(--border)}section[id]{scroll-margin-top:calc(var(--nav-h) + 24px)}.eyebrow{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);font-size:.74rem;font-weight:500}.lead{color:var(--text-muted);max-width:var(--measure);font-size:clamp(1rem,1.6vw,1.125rem)}.section-head{margin-bottom:clamp(36px,5vw,56px)}.section-title{margin-top:10px;font-size:clamp(1.6rem,3.4vw,2.2rem)}.section-sub{color:var(--text-muted);max-width:var(--measure);margin-top:12px}.skip-link{z-index:300;background:var(--accent);color:var(--on-accent);border-radius:0 0 var(--radius-sm)0;padding:10px 16px;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.navbar{z-index:100;background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%)blur(14px);border-bottom:1px solid #0000;transition:border-color .2s;position:sticky;top:0}.navbar.is-scrolled{border-bottom-color:var(--border)}.nav-container{height:var(--nav-h);max-width:1080px;padding-inline:var(--gutter);align-items:center;gap:16px;margin-inline:auto;display:flex;position:relative}.nav-logo{font-family:var(--font-mono);color:var(--text);align-items:center;gap:9px;font-size:.88rem;font-weight:600;display:inline-flex}.logo-mark{background:var(--text);width:26px;height:26px;color:var(--bg);letter-spacing:0;border-radius:7px;place-items:center;font-size:.68rem;display:grid}.nav-menu{align-items:center;gap:2px;margin-left:auto;display:flex}.nav-link{color:var(--text-muted);border-radius:var(--radius-sm);padding:7px 11px;font-size:.875rem;transition:color .15s,background-color .15s;display:block}.nav-link:hover{color:var(--text);background:var(--surface-hover)}.nav-link.active{color:var(--text);font-weight:550}.nav-actions{align-items:center;gap:6px;margin-left:8px;display:flex}.icon-btn{border:1px solid var(--border);border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:0 0;place-items:center;transition:color .15s,background-color .15s,border-color .15s;display:grid}.icon-btn:hover{color:var(--text);background:var(--surface-hover);border-color:var(--border-strong)}.icon-btn svg{width:17px;height:17px}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:block}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:none}}.nav-toggle{display:none}@media (width<=880px){.nav-toggle{display:grid}.nav-menu{padding:10px var(--gutter)18px;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;flex-direction:column;align-items:stretch;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;top:calc(100% + 1px);left:0;right:0;transform:translateY(-8px)}.nav-menu.open{opacity:1;visibility:visible;transform:translateY(0)}.nav-link{padding:11px 12px;font-size:.95rem}}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.9rem;font-weight:500;line-height:1.4;transition:background-color .15s,border-color .15s,color .15s,transform .1s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn svg{width:15px;height:15px}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-secondary{color:var(--text);border-color:var(--border-strong);background:0 0}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--text-faint)}.btn[disabled]{opacity:.6;cursor:not-allowed}.link{color:var(--accent);border-bottom:1px solid #0000;align-items:center;gap:6px;font-weight:500;transition:color .15s,border-color .15s;display:inline-flex}.link:hover{color:var(--accent-hover);border-bottom-color:currentColor}.link svg{width:14px;height:14px}.hero{padding-block:clamp(56px,9vw,100px) clamp(64px,9vw,112px)}.hero-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:clamp(32px,6vw,72px);display:grid}.status-badge{font-family:var(--font-mono);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:center;gap:8px;padding:5px 12px 5px 10px;font-size:.72rem;display:inline-flex}.status-dot{background:var(--success);width:6px;height:6px;box-shadow:0 0 0 3px var(--success-soft);border-radius:50%}.hero h1{letter-spacing:-.035em;margin-top:22px;font-size:clamp(2.2rem,6vw,3.4rem)}.hero-role{color:var(--text-muted);letter-spacing:-.01em;margin-top:14px;font-size:clamp(1.05rem,2.2vw,1.28rem);font-weight:450}.hero-role .sep{color:var(--border-strong);margin-inline:9px}.hero-description{color:var(--text-muted);max-width:56ch;margin-top:22px}.hero-buttons{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.hero-meta{border-top:1px solid var(--border);font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:10px 22px;margin-top:34px;padding-top:24px;font-size:.77rem;display:flex}.hero-meta span{align-items:center;gap:7px;display:inline-flex}.hero-meta svg{width:13px;height:13px}.hero-portrait{aspect-ratio:1;background:var(--bg-subtle);width:100%;max-width:340px;box-shadow:0 0 0 1px var(--border),0 0 0 9px var(--bg),0 0 0 10px var(--border);border-radius:50%;justify-self:center;overflow:hidden}.hero-portrait img{object-fit:cover;object-position:center;border-radius:50%;width:100%;height:100%}@media (width<=880px){.hero-grid{grid-template-columns:1fr}.hero-portrait{order:-1;justify-self:start;max-width:200px}}.about-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start;gap:clamp(32px,6vw,64px);display:grid}.about-text p{color:var(--text-muted);max-width:var(--measure)}.about-text p+p{margin-top:18px}.tag-row{flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.tag{font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;font-size:.72rem;display:inline-block}.section--subtle .tag{background:var(--surface)}.about-image{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-subtle);aspect-ratio:4/5;overflow:hidden}.about-image img{object-fit:cover;width:100%;height:100%}@media (width<=880px){.about-grid{grid-template-columns:1fr}.about-image{aspect-ratio:1;max-width:300px}}.highlights{background:var(--border);border:1px solid var(--border);border-radius:var(--radius-lg);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;margin-top:clamp(40px,5vw,56px);display:grid;overflow:hidden}.highlight{background:var(--bg-subtle);flex-direction:column;gap:6px;padding:22px 24px;display:flex}.highlight-label{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);font-size:.68rem}.highlight-value{letter-spacing:-.012em;color:var(--text);font-size:.95rem;font-weight:550}.highlight-note{font-family:var(--font-mono);color:var(--text-muted);font-size:.72rem}.timeline{flex-direction:column;display:flex}.role{border-top:1px solid var(--border);grid-template-columns:160px minmax(0,1fr);gap:0 36px;padding-block:30px;display:grid}.role:last-child{border-bottom:1px solid var(--border)}.role-period{font-family:var(--font-mono);color:var(--text-faint);white-space:nowrap;padding-top:3px;font-size:.76rem}.role-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.role-head h3{letter-spacing:-.015em;font-size:1.05rem}.role-org{color:var(--accent);margin-top:5px;font-size:.9rem;font-weight:500}.role-desc{color:var(--text-muted);max-width:var(--measure);margin-top:14px;font-size:.92rem}.role .project-tags{margin-top:16px}@media (width<=720px){.role{grid-template-columns:1fr;gap:10px}.role-period{padding-top:0}}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex;overflow:hidden}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.project-image{aspect-ratio:16/10;background:var(--bg-subtle);border-bottom:1px solid var(--border);overflow:hidden}.project-image img{object-fit:cover;width:100%;height:100%;transition:transform .4s}.project-card:hover .project-image img{transform:scale(1.03)}.project-info{flex-direction:column;flex:1;padding:22px;display:flex}.project-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.project-info h3{letter-spacing:-.015em;font-size:1.05rem}.project-info p{color:var(--text-muted);font-size:.9rem;line-height:1.6}.status-pill{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid #0000;border-radius:999px;flex-shrink:0;margin-top:2px;padding:3px 9px;font-size:.65rem;font-weight:500}.status-pill.in-progress{color:var(--warning);background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning)28%,transparent)}.status-pill.shipped{color:var(--success);background:var(--success-soft);border-color:color-mix(in srgb,var(--success)28%,transparent)}.status-pill.research{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent)30%,transparent)}.status-pill.neutral{color:var(--text-faint);background:var(--bg-subtle);border-color:var(--border)}.section--subtle .status-pill.neutral{background:var(--bg)}.project-tags{flex-wrap:wrap;gap:6px;margin-top:18px;display:flex}.project-tags .tag{padding:3px 8px;font-size:.69rem}.project-links{flex-wrap:wrap;gap:18px;margin-top:auto;padding-top:20px;display:flex}.project-links .link{font-size:.85rem}.projects-cta{justify-content:center;margin-top:44px;display:flex}.project-group{margin-bottom:clamp(48px,6vw,72px)}.group-head{justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:14px;display:flex}.group-title{letter-spacing:-.018em;font-size:1.15rem}.group-count{font-family:var(--font-mono);color:var(--text-faint);white-space:nowrap;font-size:.72rem}.project-row{border-top:1px solid var(--border);padding-block:28px}.project-group .project-row:last-child{border-bottom:1px solid var(--border)}.project-row-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.project-row-head h3{letter-spacing:-.018em;font-size:1.08rem}.project-row>p{color:var(--text-muted);max-width:var(--measure);font-size:.93rem}.project-row>p em{color:var(--text);font-style:italic}.project-row .project-links{margin-top:18px;padding-top:0}.skills-grid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius-lg);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;display:grid;overflow:hidden}.skill-category{background:var(--bg);padding:26px 24px}.section--subtle .skill-category{background:var(--bg-subtle)}.skill-category h3{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);margin-bottom:16px;font-size:.73rem;font-weight:500}.skill-list li{color:var(--text-muted);padding:5px 0;font-size:.9rem}.contact-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;align-items:flex-start;max-width:620px;padding:clamp(24px,4vw,34px);display:flex}.contact-actions{flex-wrap:wrap;gap:10px;display:flex}.contact-panel .btn svg{width:16px;height:16px}.contact-direct{border-top:1px solid var(--border);flex-wrap:wrap;gap:14px 30px;width:100%;margin-top:28px;padding-top:24px;display:flex}.contact-direct a{font-family:var(--font-mono);color:var(--text-muted);align-items:center;gap:10px;font-size:.82rem;transition:color .15s;display:inline-flex}.contact-direct a:hover{color:var(--text)}.contact-direct svg{width:15px;height:15px;color:var(--text-faint);flex-shrink:0}.footer{border-top:1px solid var(--border);padding-block:36px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.footer p{font-family:var(--font-mono);color:var(--text-faint);font-size:.75rem}.social-links{gap:4px;display:flex}.social-link{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-faint);place-items:center;transition:color .15s,background-color .15s;display:grid}.social-link:hover{color:var(--text);background:var(--surface-hover)}.social-link svg{width:17px;height:17px}.page-header{padding-block:clamp(44px,7vw,84px) clamp(24px,4vw,40px)}.page-header h1{margin-top:12px;font-size:clamp(1.85rem,4.5vw,2.5rem)}.page-header .lead{margin-top:14px}.back-link{color:var(--text-muted);align-items:center;gap:7px;font-size:.85rem;transition:color .15s;display:inline-flex}.back-link:hover{color:var(--text)}.back-link svg{width:14px;height:14px}.posts{padding-bottom:clamp(48px,7vw,80px)}.post{border-top:1px solid var(--border);padding-block:36px}.post:last-child{border-bottom:1px solid var(--border)}.post-meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:10px;font-size:.73rem;display:flex}.post-meta .dot{color:var(--border-strong)}.post-title{margin-top:12px;font-size:clamp(1.2rem,2.6vw,1.45rem)}.post-excerpt{color:var(--text-muted);max-width:var(--measure);margin-top:12px}.post-body{border-top:1px solid var(--border);color:var(--text-muted);max-width:var(--measure);margin-top:20px;padding-top:20px;font-size:.94rem}.post-body p+p{margin-top:14px}.post-body strong{color:var(--text);font-weight:600}.post-body ul{flex-direction:column;gap:12px;display:flex}.post-body li{padding-left:20px;position:relative}.post-body li:before{content:"";background:var(--border-strong);border-radius:50%;width:5px;height:5px;position:absolute;top:.62em;left:2px}.post-gallery{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:24px;display:grid}.post-photo{aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-subtle);cursor:zoom-in;width:100%;transition:border-color .2s,transform .2s}.post-photo:hover{border-color:var(--border-strong);transform:translateY(-2px)}.page-cta{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:48px;display:flex}.lightbox{z-index:200;-webkit-backdrop-filter:blur(6px);opacity:0;visibility:hidden;background:#08080ae6;place-items:center;padding:24px;transition:opacity .2s,visibility .2s;display:grid;position:fixed;inset:0}.lightbox.open{opacity:1;visibility:visible}.lightbox img{object-fit:contain;border-radius:var(--radius);max-width:min(1000px,100%);max-height:86vh}.lightbox-close{border-radius:var(--radius-sm);color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #fff3;place-items:center;width:40px;height:40px;display:grid;position:absolute;top:20px;right:20px}.lightbox-close:hover{background:#ffffff29}.lightbox-close svg{width:18px;height:18px}.js .reveal{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(14px)}.js .reveal.visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.js .reveal{opacity:1;transform:none}}
/*# sourceMappingURL=repo.87780840.css.map */
