:root{color-scheme:dark;--bg-base:#161617;--bg-surface:#1d1d1f;--bg-surface-hover:#26262a;--border-subtle:#ffffff14;--border-hover:#fff3;--text-primary:#f5f5f7;--text-secondary:#86868b;--text-tertiary:#6e6e73;--accent-primary:#2997ff;--accent-muted:#2997ff26;--nav-height:58px;--page-width:760px;--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"SF Mono", "JetBrains Mono", "Fira Code", Menlo, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 24px)}body{isolation:isolate;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-sans);margin:0;line-height:1.6}body:before{z-index:1;pointer-events:none;content:"";opacity:.035;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");position:fixed;inset:0}body.nav-open,body.command-open{overflow:hidden}.scroll-progress{z-index:100;background:var(--accent-primary);pointer-events:none;transform-origin:0;will-change:transform;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,textarea{font:inherit}main,.footer{z-index:2;position:relative;overflow:clip}h1,h2,h3,h4,p{margin-top:0}p{color:var(--text-secondary)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.navbar{z-index:50;width:min(var(--page-width), calc(100% - 40px));min-height:var(--nav-height);border-bottom:1px solid var(--border-subtle);backdrop-filter:blur(16px);background:#161617f0;justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.65rem;font-weight:650;display:inline-flex}.brand-logo{color:var(--text-primary);font-family:var(--font-mono);letter-spacing:-.08em;font-size:.9rem}.brand-name-wrap{display:block}.brand-text{color:var(--text-secondary);font-size:.82rem}.nav-toggle{display:none}.nav-menu,.nav-links,.nav-actions{align-items:center;gap:1rem;display:flex}.nav-links a,.nav-actions a{color:var(--text-secondary);font-size:.78rem;transition:color .2s ease-out}.nav-links a:hover,.nav-actions a:hover,.nav-links a[aria-current]{color:var(--text-primary)}.nav-links a:focus-visible,.nav-actions a:focus-visible,.button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:4px}.nav-actions{gap:.9rem}.social-links{align-items:center;gap:.9rem;display:flex}.social-icon{width:16px;height:16px}.icon-link{justify-content:center;align-items:center;display:inline-flex}.resume-link{align-items:center;font-size:.78rem;transition:color .2s ease-out;display:inline-flex;color:var(--text-secondary)!important}.resume-link:hover{color:var(--text-primary)!important}.hero,.section,.footer{width:min(var(--page-width), calc(100% - 40px));margin:0 auto}.hero{min-height:calc(100svh - var(--nav-height));grid-template-columns:120px minmax(0,1fr);align-items:center;gap:1.5rem;padding:7rem 0 6rem;display:grid;position:relative}.hero-scroll-cue{width:2rem;height:2rem;color:var(--text-tertiary);place-items:center;transition:opacity .36s ease-out,transform .36s ease-out,color .2s ease-out;display:grid;position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%)}.hero-scroll-cue span{border-bottom:1px solid;border-right:1px solid;width:.55rem;height:.55rem;animation:1.8s ease-in-out infinite hero-scroll-cue-bob;transform:rotate(45deg)translate(-2px,-2px)}.hero-scroll-cue:hover{color:var(--text-secondary)}.hero-scroll-cue:focus-visible{outline:2px solid var(--accent-primary);outline-offset:4px}body.has-scrolled .hero-scroll-cue{opacity:0;pointer-events:none;transform:translate(-50%,8px)}.hero-card{border:1px solid var(--border-subtle);background:var(--bg-surface);border-radius:50%;align-self:start;width:120px;height:120px;margin-top:calc(clamp(7rem,14vh,11rem) + 20px);overflow:hidden}.hero-card img{object-fit:cover;width:100%;height:100%}.hero-copy{max-width:680px}.eyebrow,.section-header>.eyebrow{color:var(--text-secondary);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:1rem;font-size:.68rem;font-weight:600;line-height:1.4}h1{letter-spacing:-.045em;max-width:680px;margin-bottom:1.25rem;font-size:clamp(2.75rem,7vw,4.75rem);font-weight:650;line-height:1.02}h2{color:var(--text-primary);letter-spacing:-.035em;margin-bottom:.8rem;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:600;line-height:1.1}h3{color:var(--text-primary);font-size:1.05rem;font-weight:550;line-height:1.3}.hero-summary{max-width:600px;margin-bottom:2rem;font-size:1.1rem;line-height:1.65}.hero-actions,.form-actions{flex-wrap:wrap;gap:1rem;display:flex}.hero-actions .button{width:156px}.button{border:1px solid var(--border-subtle);min-height:38px;color:var(--text-primary);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:.5rem .9rem;font-size:.82rem;transition:all .2s ease-out;display:inline-flex}.button:disabled{cursor:wait;opacity:.65}.button:hover{border-color:var(--border-hover);background:var(--bg-surface-hover)}.button:active{transform:scale(.98)}.button.primary{border-color:var(--accent-primary);background:var(--accent-primary);color:#06111d;font-weight:600}.button.primary:hover{background:#5aaeff;border-color:#5aaeff}.section{padding:4rem 0}.projects-section{padding-top:3.5rem}.section+.section{position:relative}.section+.section:before{background:var(--border-hover);content:"";width:4.5rem;height:2px;position:absolute;top:0;left:0}.section-header{max-width:640px;margin-bottom:2rem}.section-header p:last-child{max-width:620px;margin-bottom:0;font-size:.98rem}.about-fact{margin-top:3rem}.about-fact .eyebrow{margin-bottom:.55rem}.about-fact p{color:var(--text-secondary);margin:0;font-size:.82rem;transition:opacity .22s ease-out}.about-fact p.is-changing{opacity:0}.split-section{grid-template-columns:minmax(180px,.7fr) 1.3fr;gap:3rem;display:grid}.about-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.about-list li{border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);padding-bottom:1rem;font-size:.98rem}.about-list li:last-child{border-bottom:0}.timeline{display:grid}.timeline-item{border-bottom:1px solid var(--border-subtle);grid-template-columns:minmax(0,1fr) 11rem;gap:1.5rem;padding:1.25rem 0;display:grid}.timeline-item:first-child{border-top:1px solid var(--border-subtle)}.timeline-item>span{color:var(--text-tertiary);font-family:var(--font-mono);text-align:right;white-space:nowrap;grid-area:1/2;font-size:.68rem;line-height:1.5}.timeline-item>div{grid-area:1/1}.timeline-item h3{margin-bottom:.15rem}.timeline-item p{max-width:580px;margin:.7rem 0 0;font-size:.9rem}.experience-heading{grid-template-columns:36px 1fr;align-items:center;gap:.75rem;display:grid}.experience-logo{border:1px solid var(--border-subtle);object-fit:cover;border-radius:50%;width:36px;height:36px;display:block}.org{color:var(--text-secondary);margin-bottom:0;font-size:.88rem}.experience-heading .org{margin-top:0}.project-list{flex-direction:column;gap:1rem;display:flex}.project-card{border:1px solid var(--border-subtle);background:var(--bg-surface);border-radius:1rem;grid-template-columns:180px 1fr;align-items:start;gap:1.5rem;padding:1.25rem;transition:opacity .36s cubic-bezier(.2,.8,.2,1),border-color .2s ease-out,background .2s ease-out;display:grid;overflow:clip}.project-card:hover,.project-card:focus-within{border-color:var(--border-hover);background:var(--bg-surface-hover)}.project-card:hover .project-content h3,.project-card:focus-within .project-content h3{color:var(--accent-primary)}.project-card>img{object-fit:cover;opacity:.86;border-radius:.65rem;width:180px;height:140px;transition:transform .24s ease-out,opacity .24s ease-out}.project-card:hover>img,.project-card:focus-within>img{opacity:1;transform:scale(1.015)}.project-card.is-focused{border-color:var(--accent-primary)}.project-list:has(.is-focused) .project-card:not(.is-focused){opacity:.68}.project-card:focus-visible{outline:2px solid var(--accent-primary);outline-offset:4px}.project-content{min-width:0}.project-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.project-number{color:var(--text-tertiary);font-family:var(--font-mono);font-size:.68rem;display:block}.project-title-row{display:block}.project-title-row>.tag-list{margin-top:.65rem}.project-content h3{margin-bottom:0;font-size:1.1rem}.project-summary{margin:.65rem 0 .75rem;font-size:.9rem}.tag-list{flex-wrap:wrap;gap:.35rem .7rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li{color:var(--text-secondary);font-family:var(--font-mono);font-size:.66rem}.tag-list li:not(:last-child):after{content:" /";color:var(--text-tertiary);margin-left:.7rem}details{margin-top:1rem}summary{cursor:pointer;color:var(--accent-primary);font-size:.78rem;list-style:none;display:inline-flex}summary::-webkit-details-marker{display:none}summary:after{content:" +"}details[open] summary:after{content:" −"}.form-status{min-height:1.4em;color:var(--text-secondary);margin:.9rem 0 0;font-size:.86rem;transition:color .18s ease-out,opacity .18s ease-out}.form-status:empty{opacity:0}.form-status.is-pending{color:var(--text-secondary)}.form-status.is-success{color:var(--accent-primary)}.form-status.is-error{color:#ff6b6b}.contact-section #contact-form{transition:opacity .22s ease-out}.contact-section #contact-form[hidden]{display:none}.contact-section #contact-form.is-complete{opacity:0;pointer-events:none}.contact-confirmation[hidden]{display:none}.contact-confirmation{justify-items:start;gap:.9rem;padding:1.5rem 0;display:grid}.contact-confirmation p{margin:0}.contact-confirmation-line{align-items:baseline;gap:.65rem;display:flex}.contact-confirmation-mark{color:var(--accent-primary);font-size:1.4rem;line-height:1}.contact-confirmation #contact-confirmation-message{color:var(--text-primary);font-size:1rem}details[open] .case-study{animation:.22s ease-out case-study-in}.case-study{border-top:1px solid var(--border-subtle);gap:.8rem;margin-top:1rem;padding-top:1rem;display:grid}.case-study article{border-left:1px solid var(--accent-primary);padding-left:.8rem}.case-study h4{color:var(--text-primary);font-family:var(--font-mono);text-transform:uppercase;margin:0 0 .15rem;font-size:.68rem;font-weight:500}.case-study p{margin:0;font-size:.86rem}.project-links{gap:.8rem;display:flex}.project-link{color:var(--accent-primary);font-size:.75rem}.project-link:hover{text-decoration:underline}.project-link .social-icon{display:none}.skill-list{border-top:1px solid var(--border-subtle);display:grid}.skill-row{border-bottom:1px solid var(--border-subtle);grid-template-columns:minmax(170px,.7fr) 1.3fr;gap:2rem;padding:1.15rem 0;display:grid}.skill-row h3{color:var(--text-primary);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.72rem;font-weight:600;line-height:1.5}.skill-row p{color:var(--text-secondary);font-family:var(--font-mono);margin:0;font-size:.74rem;line-height:1.8}.skill-row{transition:background .2s ease-out,border-color .2s ease-out}.skill-row:hover{background:#ffffff05}.skill-row:hover h3{color:var(--accent-primary)}.contact-section{padding-bottom:6rem}form{gap:.85rem;max-width:100%;display:grid}.form-grid{grid-template-columns:repeat(2,1fr);gap:.85rem;display:grid}input,textarea{border:1px solid var(--border-subtle);background:var(--bg-surface);width:100%;color:var(--text-primary);border-radius:.55rem;padding:.8rem .9rem}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:focus,textarea:focus{border-color:var(--accent-primary);outline:2px solid var(--accent-muted);outline-offset:1px}.hidden-field{display:none}.footer{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:1rem;padding:2rem 0 3rem;display:flex}.footer-copy{gap:.35rem;display:grid}.footer p{font-family:var(--font-mono);color:var(--text-tertiary);margin:0;font-size:.66rem}.footer .footer-note{color:var(--text-secondary)}.footer>div{gap:.9rem;display:flex}.footer>.footer-copy{gap:.35rem;display:grid}.footer .icon-link{color:var(--text-secondary);transition:color .2s ease-out}.footer .icon-link:hover{color:var(--accent-primary)}.command-palette[hidden]{display:none}.command-palette{z-index:200;place-items:start center;padding:12vh 1rem 1rem;display:grid;position:fixed;inset:0}.command-backdrop{backdrop-filter:blur(8px);cursor:default;background:#00000094;border:0;position:absolute;inset:0}.command-dialog{border:1px solid var(--border-hover);background:var(--bg-surface);border-radius:.9rem;width:min(100%,480px);position:relative;overflow:hidden;box-shadow:0 24px 80px #00000073}.command-heading{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:1rem 1.1rem;display:flex}.command-heading h2{letter-spacing:0;margin:0;font-size:.92rem}.command-dialog kbd{border:1px solid var(--border-subtle);color:var(--text-tertiary);font-family:var(--font-mono);border-radius:.3rem;padding:.15rem .35rem;font-size:.6rem}.command-list{padding:.45rem;display:grid}.command-list a{color:var(--text-secondary);border-radius:.5rem;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem;font-size:.88rem;transition:background .16s ease-out,color .16s ease-out;display:flex}.command-list a:hover,.command-list a:focus-visible{background:var(--bg-surface-hover);color:var(--text-primary);outline:0}.easter-egg{z-index:150;border:1px solid var(--border-hover);background:var(--bg-surface);color:var(--text-secondary);font-family:var(--font-mono);border-radius:.55rem;padding:.55rem .75rem;font-size:.68rem;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0000003d}.easter-egg:not([hidden]){animation:.18s ease-out easter-egg-in}@keyframes case-study-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-scroll-cue-bob{0%,to{transform:rotate(45deg)translate(-2px,-2px)}50%{transform:rotate(45deg)translate(1px,1px)}}@keyframes easter-egg-in{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}@media (width<=900px){.navbar,.hero,.section,.footer{width:min(100% - 32px, var(--page-width))}.nav-toggle{border:1px solid var(--border-subtle);cursor:pointer;background:0 0;border-radius:50%;place-items:center;width:34px;height:34px;display:inline-grid;position:relative}.nav-toggle span{background:var(--text-primary);width:15px;height:1px;transition:transform .2s ease-out;position:absolute}.nav-toggle span:first-child{transform:translateY(-3px)}.nav-toggle span:last-child{transform:translateY(3px)}.navbar.is-open .nav-toggle span:first-child{transform:rotate(45deg)}.navbar.is-open .nav-toggle span:last-child{transform:rotate(-45deg)}.nav-menu{box-sizing:border-box;visibility:hidden;opacity:0;pointer-events:none;width:100%;height:100dvh;padding:var(--nav-height) 16px 0;background:var(--bg-base);flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex;position:fixed;inset:0}.navbar.is-open{grid-template-columns:1fr auto;grid-template-rows:var(--nav-height) 1fr;background:var(--bg-base);align-items:center;width:100%;height:100dvh;padding:0 16px;display:grid;position:fixed;inset:0}.navbar.is-open .brand,.navbar.is-open .nav-toggle,.navbar.is-closing .brand,.navbar.is-closing .nav-toggle{z-index:2;position:relative}.navbar.is-open .nav-menu{visibility:visible;opacity:1;pointer-events:auto}.navbar.is-closing .nav-menu{visibility:visible;opacity:1;pointer-events:none;transition:none}.navbar.is-open .nav-links,.navbar.is-open .nav-actions,.nav-links,.nav-actions{flex-direction:column;align-items:center;gap:1rem}.navbar.is-open .nav-links,.nav-links{gap:.95rem}.nav-links a{opacity:0;width:auto;color:var(--text-primary);letter-spacing:-.03em;text-align:center;font-size:2rem;font-weight:650;transition:opacity .32s ease-out,transform .32s ease-out,color .2s ease-out;transform:translateY(18px)}.navbar.is-open .nav-links .resume-link{color:var(--text-primary)!important}.navbar.is-open .nav-links a{opacity:1;transform:translateY(0)}.navbar.is-open .nav-links a:first-child{transition-delay:70ms}.navbar.is-open .nav-links a:nth-child(2){transition-delay:.125s}.navbar.is-open .nav-links a:nth-child(3){transition-delay:.18s}.navbar.is-open .nav-links a:nth-child(4){transition-delay:.235s}.navbar.is-open .nav-links a:nth-child(5){transition-delay:.29s}.navbar.is-open .nav-links a:nth-child(6){transition-delay:.345s}.navbar.is-open.is-closing .nav-links a{opacity:0;transform:translateY(18px)}.navbar.is-closing .nav-links a:first-child{transition-delay:.25s}.navbar.is-closing .nav-links a:nth-child(2){transition-delay:.2s}.navbar.is-closing .nav-links a:nth-child(3){transition-delay:.15s}.navbar.is-closing .nav-links a:nth-child(4){transition-delay:.1s}.navbar.is-closing .nav-links a:nth-child(5){transition-delay:50ms}.navbar.is-closing .nav-links a:nth-child(6){transition-delay:0s}.nav-actions{opacity:0;transition:opacity .32s ease-out}.navbar.is-open .nav-actions{opacity:1;flex-direction:column;align-items:center;gap:1rem;transition-delay:.42s}.navbar.is-open.is-closing .nav-actions{opacity:0;transition-delay:0s}.navbar.is-open .social-links{gap:1rem}.navbar.is-open .social-links .icon-link{color:var(--text-secondary)}.brand-name-wrap{display:none}.hero{min-height:calc(100svh - var(--nav-height));grid-template-columns:1fr;align-content:center;align-items:start;padding:4rem 0}.hero-card{align-self:start;width:72px;height:72px;margin-top:0}.hero-summary{font-size:1rem}.split-section{grid-template-columns:1fr;gap:1.5rem}.about-fact{margin-bottom:1.5rem}.timeline-item{grid-template-columns:1fr;gap:.7rem}.timeline-item>span,.timeline-item>div{grid-area:auto/1}.timeline-item>span{text-align:left;order:-1}.project-card{grid-template-columns:1fr;gap:1rem}.project-card>img{width:100%;height:180px}.skill-row{grid-template-columns:1fr;gap:.35rem}.form-grid{grid-template-columns:1fr}.footer{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
