.container{width:min(100% - 4rem,1160px);margin-inline:auto}.skip-link{position:fixed;left:1rem;top:-100px;z-index:999;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.skip-link:focus-visible{top:1rem}.site-header{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border)}.header-inner{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:2rem}.brand{display:inline-flex;color:var(--navy);text-decoration:none;flex-shrink:0}.logo{display:inline-flex;align-items:center;gap:.85rem}.logo-mark{width:62px;height:auto;flex-shrink:0}.logo-wordmark{display:grid;font-size:1rem;line-height:1.25;letter-spacing:-.035em}.logo-wordmark strong{font-weight:700}.logo-role{margin-top:.4rem;font-size:.58rem;letter-spacing:.19em;text-transform:uppercase;color:var(--text-secondary)}.logo-icon{border-radius:25%}.nav-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:1.5rem}.nav-list a{position:relative;display:inline-flex;align-items:center;min-height:44px;color:var(--text-secondary);text-decoration:none;font-size:.8rem;font-weight:500}.nav-list a:hover,.nav-list a[aria-current]{color:var(--accent-text)}.nav-list a[aria-current]:after{content:"";position:absolute;bottom:2px;left:0;right:0;height:2px;background:var(--accent)}.menu-toggle{display:none}.section{padding-block:var(--section-space)}.section-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr);gap:clamp(2rem,6vw,6rem)}.section-head{margin-bottom:2.5rem}.section-layout>.section-head{margin-bottom:0}.section-head h2{margin:0;font-size:clamp(1.9rem,3vw,2.6rem)}.section-head p{color:var(--text-secondary);max-width:65ch;margin:1rem 0 0}.section-head .eyebrow,.eyebrow{margin:0 0 1.25rem;color:var(--accent-text);font-size:.69rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.hero{padding-block:1.6rem 0}.hero-topline,.hero-bottomline{display:flex;justify-content:space-between;gap:1rem;color:var(--text-secondary);font-size:.7rem}.hero-topline{letter-spacing:.015em}.hero-topline span:last-child:before{content:"";display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:.6rem;vertical-align:middle}.hero-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,.7fr);gap:3rem;align-items:center;padding-block:clamp(3.5rem,6vw,6rem)}.hero-content h1{margin:0;font-size:clamp(1.3rem,2vw,1.65rem);letter-spacing:-.035em}.hero-role{color:var(--text-secondary);margin:.15rem 0 0;font-size:.95rem}.hero-statement{margin:1.9rem 0 1.4rem;font-size:clamp(2.3rem,4.8vw,4.1rem);font-weight:500;letter-spacing:-.055em;line-height:1.13}.hero-statement span{color:var(--accent-text)}.hero-summary{color:var(--text-secondary);max-width:57ch;font-size:.98rem;margin:0 0 1.9rem}.cta-group{display:flex;flex-wrap:wrap;gap:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:1.5rem;min-height:46px;padding:.7rem 1.1rem;text-decoration:none;font-size:.85rem;font-weight:600;border:1px solid transparent;border-radius:5px;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.btn-primary{background:var(--accent-text);color:#fff}.btn-primary:hover{background:var(--accent-hover);color:#fff}.btn-secondary{color:var(--navy);border-color:#cbd0da;background:var(--surface)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent-text);background:#f5f8ff}.btn-small{font-size:.8rem;padding:.6rem .9rem}.hero-links{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.25rem}.hero-links a{min-height:44px;display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem;color:var(--text-secondary);text-decoration:none}.hero-links a:hover{color:var(--accent-text);text-decoration:underline}.hero-brand{display:grid;justify-items:center;align-content:center;border-left:1px solid var(--border);min-height:260px;padding-left:2rem}.hero-brand .logo-mark{width:min(100%,205px)}.brand-rule{width:28px;height:3px;background:var(--accent);margin-top:2rem}.hero-brand p{color:var(--text-secondary);font-size:.6rem;text-transform:uppercase;letter-spacing:.18em;margin:1.2rem 0 0}.hero-bottomline{padding-block:1.3rem;border-top:1px solid var(--border)}.about-section{border-top:1px solid var(--border)}.about-copy h3{margin:0 0 1.2rem;font-size:1.15rem}.copy-stack{display:grid;gap:1rem}.copy-stack p{margin:0;color:var(--text-secondary)}.projects-section,.skills-section{background:var(--background-secondary)}.project-section+.project-section{margin-top:4rem}.project-section-head{margin-bottom:1.5rem}.project-section-title{margin:0;font-size:1.1rem;font-weight:600}.project-section-head p:not(.project-section-title){color:var(--text-secondary);margin:.35rem 0 0;max-width:72ch;font-size:.9rem}.projects-grid{display:grid;gap:1.5rem}.project-card{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .16s ease}.project-card:hover{border-color:#a6bce3}.project-card-featured{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;padding:1.5rem;gap:2rem}.project-content{min-width:0;display:flex;flex-direction:column;gap:1rem}.project-copy{display:grid;gap:.6rem}.project-card h3{margin:0;font-size:clamp(1.2rem,2vw,1.6rem);letter-spacing:-.03em}.project-subtitle{font-size:.82rem;font-weight:500;margin:0;color:var(--accent-text)}.project-description{margin:0;font-size:.9rem;color:var(--text-secondary)}.project-gallery{min-width:0}.project-image-wrap{position:relative;aspect-ratio:16 / 10;overflow:hidden;border-radius:5px;background:#eef0f4;border:1px solid var(--border)}.project-image-button{display:block;width:100%;height:100%;border:0;padding:0;background:transparent;cursor:zoom-in}.project-image-button:focus-visible{outline-offset:-4px}.project-image{width:100%;height:100%;object-fit:contain;object-position:center;transition:opacity .16s ease}.project-image-button:hover .project-image{opacity:.9}.project-image-hint{position:absolute;right:.7rem;bottom:.7rem;padding:.3rem .6rem;border-radius:4px;background:var(--navy);color:#fff;font-size:.7rem}.project-gallery-nav{position:absolute;top:50%;z-index:2;transform:translateY(-50%);width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd0da;border-radius:50%;background:var(--surface);color:var(--navy);cursor:pointer}.project-gallery-nav span{font-size:1.6rem;line-height:1}.project-gallery-nav:hover{background:var(--navy);color:#fff}.project-gallery-nav-prev{left:.65rem}.project-gallery-nav-next{right:.65rem}.project-gallery-indicator{position:absolute;top:.7rem;right:.7rem;padding:.25rem .55rem;border-radius:4px;background:var(--surface);color:var(--navy);border:1px solid var(--border);font-size:.7rem;font-weight:600}.project-image-placeholder{display:grid;place-items:center;padding:1.5rem;text-align:center;color:var(--text-secondary)}.project-placeholder-copy{max-width:20ch}.badge-row{display:flex;flex-wrap:wrap;gap:.4rem;margin:0}.badge{display:inline-block;padding:.22rem .5rem;color:var(--text-secondary);background:var(--background-secondary);border-radius:3px;font-size:.68rem;font-weight:500}.card-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:auto}.project-details{border-top:1px solid var(--border)}.project-details summary{padding-block:.65rem;min-height:44px;cursor:pointer;color:var(--accent-text);font-size:.8rem;font-weight:600}.project-details-content{display:grid;gap:1.3rem;padding-block:.5rem .25rem}.project-detail-grid{display:grid;gap:1rem}.project-detail-block h4,.architecture-block h4{margin:0 0 .4rem;font-size:.85rem}.project-detail-block p{color:var(--text-secondary);margin:0;font-size:.85rem}.impact-list{margin:0;padding-left:1.1rem;color:var(--text-secondary);display:grid;gap:.6rem;font-size:.88rem}.impact-list li::marker{color:var(--accent)}.architecture-list{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}.architecture-list li{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1fr);gap:.75rem;font-size:.8rem}.architecture-list span,.project-compact-architecture dt{color:var(--text-secondary)}.architecture-list strong{font-weight:500}.projects-grid-secondary{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card-additional{display:flex;flex-direction:column;gap:1.2rem;padding:1.5rem}.project-card-additional .project-content{flex:1}.project-card-additional h3{font-size:1.25rem}.project-compact-architecture{display:grid;gap:.6rem;margin:0;font-size:.82rem}.project-compact-architecture div{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1fr);gap:.5rem}.project-compact-architecture dd{margin:0}.stacked-cards{display:grid;gap:2.5rem;border-left:1px solid var(--border);padding-left:2rem}.experience-card{position:relative;min-width:0}.experience-card:before{content:"";position:absolute;left:calc(-2rem - 5px);top:.45rem;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--surface)}.experience-header h3{margin:0 0 .5rem;font-size:1.2rem}.experience-header p{margin:.2rem 0 0;font-size:.85rem}.current-role{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:.6rem;font-size:.68rem;color:var(--accent-text);font-weight:600}.current-role:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent)}.tech-stack{font-size:.8rem;color:var(--text-secondary);margin-block:1rem}.tech-stack strong{font-weight:600;color:var(--navy)}.muted{color:var(--text-secondary)}.skills-list{margin:0}.skill-group{display:grid;grid-template-columns:140px minmax(0,1fr);gap:1rem;padding-block:1.25rem;border-bottom:1px solid var(--border)}.skill-group:first-child{padding-top:0}.skill-group:last-child{border:0;padding-bottom:0}.skill-group dt{font-size:.85rem;font-weight:600}.skill-group dd{margin:0}.skill-items{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:.85rem;color:var(--text-secondary)}.section-head .skills-note{font-size:.8rem}.education-grid{display:grid;gap:1.75rem}.education-card{border-bottom:1px solid var(--border);padding-bottom:1.75rem}.education-card:last-child{border:0;padding:0}.education-card h3{margin:0;font-size:1.1rem}.education-card p{font-size:.85rem;margin-block:.5rem 0;color:var(--text-secondary)}.contact-section{background:var(--navy);color:#fff}.contact-section .section-head p,.contact-card p{color:#c0ccdf}.contact-section .section-head .eyebrow{color:#8bb7ff}.contact-card{min-width:0}.contact-card>p{margin-top:0}.contact-list{list-style:none;margin:1.5rem 0 0;padding:0}.contact-list li{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-block:.85rem;border-bottom:1px solid #34435b;font-size:.83rem}.contact-list span{color:#c0ccdf}.contact-list a{color:#fff;text-decoration:none;overflow-wrap:anywhere;min-height:28px}.contact-list a:hover{color:#8bb7ff;text-decoration:underline}.site-footer{padding-block:2.5rem 1.5rem}.footer-main{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2rem;padding-bottom:2rem}.footer-motto{font-size:.65rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-secondary)}.footer-links{display:flex;gap:1.25rem}.footer-links a,.footer-bottom a{display:inline-flex;align-items:center;min-height:44px;color:var(--text-secondary);font-size:.75rem;text-decoration:none}.footer-links a:hover,.footer-bottom a:hover{color:var(--accent-text)}.footer-bottom{border-top:1px solid var(--border);padding-top:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--text-secondary);font-size:.68rem}.footer-bottom p{margin:0}.project-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0f1f3bd9}.project-modal{width:min(100%,1100px);max-height:calc(100dvh - 2rem);display:grid;gap:1rem;overflow:auto;padding:1.25rem;border-radius:var(--radius);background:var(--surface)}.project-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.project-modal-header h3{margin:.2rem 0 0;font-size:1.1rem}.project-modal-eyebrow{margin:0;color:var(--accent-text);font-size:.7rem}.project-modal-close{width:44px;height:44px;flex-shrink:0;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--navy);font-size:1.6rem;cursor:pointer}.project-modal-close:hover{border-color:var(--accent)}.project-modal-stage{position:relative;aspect-ratio:16 / 10;overflow:hidden;border-radius:4px;background:var(--background-secondary)}.project-modal-image{width:100%;height:100%;object-fit:contain}.project-modal-footer{display:grid;gap:.75rem}.project-modal-indicator{position:static;justify-self:start}.project-modal-thumbnails{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:.6rem;max-height:7rem;overflow-y:auto;padding:5px}.project-modal-thumbnail{aspect-ratio:16 / 10;padding:0;border:2px solid var(--border);border-radius:4px;overflow:hidden;background:var(--background-secondary);cursor:pointer}.project-modal-thumbnail img{width:100%;height:100%;object-fit:cover}.project-modal-thumbnail.is-active,.project-modal-thumbnail:hover{border-color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 1099px){.menu-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.75rem;min-width:84px;min-height:44px;border:1px solid var(--border);border-radius:5px;color:var(--navy);background:var(--surface);font-size:.78rem;cursor:pointer}.menu-icon{display:grid;gap:5px;width:15px}.menu-icon span{height:1px;background:currentColor;transition:transform .16s ease}.menu-icon.is-open span:first-child{transform:translateY(3px) rotate(45deg)}.menu-icon.is-open span:last-child{transform:translateY(-3px) rotate(-45deg)}.navigation{display:none;position:absolute;top:100%;left:0;right:0;background:var(--surface);border-bottom:1px solid var(--border);padding:1rem 2rem;max-height:calc(100dvh - 80px);overflow:auto}.navigation.is-open{display:block}.nav-list{flex-wrap:wrap;gap:.5rem 2rem}.nav-list a{font-size:.9rem}.hero-grid{grid-template-columns:minmax(0,1.8fr) minmax(0,.7fr);gap:1.5rem}.hero-brand{padding-left:1.5rem}.hero-brand p{text-align:center;line-height:2}.section-layout{grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr);gap:2.5rem}.project-card-featured{gap:1.5rem}}@media (max-width: 767px){.container{width:calc(100% - 2.5rem)}.header-inner{min-height:72px;gap:.75rem}.logo-mark{width:49px}.logo{gap:.6rem}.logo-wordmark{font-size:.9rem}.logo-role{font-size:.5rem;letter-spacing:.12em}.navigation{padding:.75rem 1.25rem;max-height:calc(100dvh - 72px)}.nav-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem 1rem}.nav-list a{width:100%}.hero{padding-top:1.25rem}.hero-topline{font-size:.63rem}.hero-topline span:first-child{max-width:23ch}.hero-topline span:last-child{text-align:right}.hero-grid{grid-template-columns:minmax(0,1fr);padding-block:3rem}.hero-brand{display:none}.hero-statement{font-size:clamp(2.2rem,7.8vw,3.8rem)}.hero-summary{font-size:.9rem}.hero-bottomline{flex-wrap:wrap;gap:.25rem;font-size:.65rem}.section-layout{grid-template-columns:minmax(0,1fr);gap:2rem}.section-head{margin-bottom:2rem}.project-card-featured{grid-template-columns:minmax(0,1fr);padding:1rem;gap:1.5rem}.project-card-additional{padding:1rem}.projects-grid-secondary{grid-template-columns:minmax(0,1fr)}.project-card h3{font-size:1.3rem}.project-section+.project-section{margin-top:2.5rem}.stacked-cards{padding-left:1.5rem}.experience-card:before{left:calc(-1.5rem - 5px)}.skill-group{grid-template-columns:100px minmax(0,1fr)}.contact-list li{flex-direction:column;gap:.15rem}.contact-list a{display:inline-flex;align-items:center;min-height:44px}.footer-main{gap:1rem}.footer-motto{flex-basis:100%;margin:0}.footer-bottom{align-items:flex-start}.footer-bottom p{max-width:30ch}.footer-bottom a{white-space:nowrap}.project-modal{padding:.8rem}.project-modal-stage{aspect-ratio:4 / 3}}@media (max-width: 374px){.container{width:calc(100% - 2rem)}.logo-mark{width:42px}.logo-wordmark{font-size:.79rem}.logo-role{font-size:.46rem}.menu-toggle{min-width:70px;gap:.4rem}.btn{padding-inline:.85rem;gap:.65rem}.hero-links{gap:1.1rem}.skill-group{grid-template-columns:minmax(0,1fr);gap:.5rem}.project-modal-header h3{font-size:.95rem}}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-latin-variable.woff2) format("woff2")}:root{color-scheme:light;--navy: #0f1f3b;--electric-blue: #3b82f6;--soft-gray: #e5e7eb;--background: #ffffff;--background-secondary: #f6f7f9;--surface: #ffffff;--text-primary: #0f1f3b;--text-secondary: #536078;--border: #e5e7eb;--accent: #3b82f6;--accent-hover: #1d4ed8;--accent-text: #245dcb;--radius: 8px;--space-1: .5rem;--space-2: .75rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2rem;--space-6: 3rem;--section-space: clamp(3.5rem, 7vw, 6.5rem)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;font-size:1rem;line-height:1.7;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--background);color:var(--text-primary)}#root{min-height:100vh}h1,h2,h3,h4{line-height:1.25;font-weight:600;text-wrap:balance}h1,h2{letter-spacing:-.045em}p{text-wrap:pretty}img,video{max-width:100%;display:block}a{color:var(--accent-text);text-underline-offset:.22em}a:hover{color:var(--accent-hover)}button,summary{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}a,button,summary{touch-action:manipulation}:focus-visible{outline:3px solid var(--accent);outline-offset:5px}section:focus,main:focus{outline:none}::selection{background:#dbeafe;color:var(--navy)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
