@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700&display=swap";html{scroll-padding-top:0}body{margin:0}button{font:inherit}.ll-root{--content-gutter:clamp(20px, 4vw, 48px);--page-inset-block:0px;--header-height:4.5625rem;--brand-olive:#4b6500;--brand-olive-readable:#a0b36c;--brand-on-olive:#fff;--page-bg:#e4e5df;--bg:#f5f5f0;--bg-alt:#ecede6;--surface:#fff;--surface-raised:#e7e9df;--text:#171917;--text-muted:#5a6059;--accent:var(--brand-olive);--accent-soft:#e4edc8;--accent-2:#087783;--on-accent:var(--brand-on-olive);--border:#d3d7cd;--control-border:#74796d;--focus:var(--accent);--portrait-bg:#22b8c5;--portrait-ink:#082e32;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:48px;--ease:.16s ease;background:var(--page-bg);min-height:100vh;color:var(--text);transition:background-color var(--ease), color var(--ease);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.9375rem;line-height:1.75}.ll-root[data-theme=dark]{--page-bg:#151714;--bg:#0a0a0a;--bg-alt:#111311;--surface:#171717;--surface-raised:#20231a;--text:#f4f4f4;--text-muted:#a4a8a0;--accent:var(--brand-olive-readable);--accent-soft:#252a1c;--accent-2:#22b8c5;--on-accent:#0a0a0a;--border:#282c25;--control-border:#737a6b}.ll-root,.ll-root *,.ll-root :before,.ll-root :after{box-sizing:border-box}.portfolio-shell{background:var(--bg);width:100%;max-width:1440px;margin-inline:auto}:where(.ll-root) a{color:inherit;text-decoration:none}.ll-root :focus-visible{outline:3px solid var(--focus);outline-offset:5px}.ll-root ::selection{background:var(--accent);color:var(--on-accent)}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.display{font-family:Space Grotesk,Inter,sans-serif}.wrap{width:calc(100% - 2 * var(--content-gutter));overflow-wrap:anywhere;margin-inline:auto}.hero-grid>*,.about-grid>*,.skills-grid>*,.project-grid>*,.edu-card>*,.stat-row>*,.identity-meta>*,.footer-inner>*{min-width:0}#main-content,.ll-root section{scroll-margin-block-start:calc(var(--header-height) + 1.25rem)}.ll-root section{border-top:1px solid var(--border);padding-block:clamp(56px,6vw,88px)}.section-head{margin-bottom:40px}.section-head>div{flex-direction:column;display:flex}.section-tag{color:var(--text-muted);letter-spacing:.035em;order:2;margin-top:12px;font-size:.625rem}.section-title{letter-spacing:-.045em;text-transform:uppercase;order:1;margin:0;font-size:clamp(1.75rem,3.5vw,2.625rem);font-weight:700;line-height:1.15}.section-number{color:var(--text);white-space:nowrap}.technical-label{color:var(--accent);letter-spacing:.055em;margin:0;font-size:.625rem;font-weight:500;line-height:1.6}.nav{z-index:50;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}.nav-inner{width:calc(100% - 2 * var(--content-gutter));justify-content:space-between;align-items:center;gap:14px;min-height:4.5rem;margin-inline:auto;padding-block:.5rem;display:flex}.logo{color:var(--accent);letter-spacing:-.06em;align-items:center;gap:0;font-family:IBM Plex Mono,monospace;font-size:1.125rem;font-weight:600;display:flex}.logo-dot{display:none}.logo-cursor{color:var(--accent);font-weight:400}.nav-links{align-items:center;gap:4px;display:none}.nav-links a{min-height:44px;color:var(--text-muted);text-transform:uppercase;transition:color var(--ease), background-color var(--ease);align-items:center;padding:8px 6px;font-size:.625rem;display:inline-flex}.nav-index{margin-right:2px}.nav-links a,.logo,.nav-right{flex-shrink:0}.nav-links a{white-space:nowrap}.nav-links a:hover,.nav-links a[aria-current=location]{color:var(--accent)}.nav-links a[href=\#contact]{border:1px solid var(--accent);background:var(--brand-olive);color:var(--brand-on-olive);border-radius:999px;margin-left:12px;padding-inline:16px}.nav-links a[href=\#contact]:hover{box-shadow:0 0 0 3px var(--accent-soft)}.nav-right{align-items:center;gap:8px;display:flex}.theme-btn,.menu-toggle{border:1px solid var(--control-border);width:2.75rem;min-width:44px;height:2.75rem;min-height:44px;color:var(--text);cursor:pointer;transition:background-color var(--ease), border-color var(--ease);background:0 0;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-btn:hover,.menu-toggle:hover{border-color:var(--accent);background:var(--accent-soft)}.theme-btn:active,.menu-toggle:active{background:var(--surface-raised)}.mobile-nav{max-height:max(0px, calc(100vh - var(--header-height) - var(--page-inset-block) - env(safe-area-inset-bottom,0px)));max-height:max(0px, calc(100dvh - var(--header-height) - var(--page-inset-block) - env(safe-area-inset-bottom,0px)));overscroll-behavior-y:contain;background:var(--bg);border-bottom:1px solid var(--control-border);padding:12px 20px 24px;display:none;position:absolute;inset:100% 0 auto;overflow-y:auto}.mobile-nav.open{flex-direction:column;gap:2px;display:flex}.mobile-nav[hidden]{display:none}.mobile-nav a{min-height:48px;color:var(--text-muted);text-transform:uppercase;align-items:center;padding:10px 12px;font-size:.75rem;display:flex}.mobile-nav a:hover,.mobile-nav a[aria-current=location]{background:var(--accent-soft);color:var(--accent)}.ll-root .hero{border-top:0;padding-block:clamp(56px,7vw,96px)}.hero-grid{align-items:center;gap:40px;display:grid}.eyebrow{color:var(--accent);align-items:center;gap:8px;margin-bottom:24px;font-size:.6875rem;display:inline-flex}.hero h1{margin:0;line-height:1.1}.hero-name{color:var(--text);letter-spacing:-.075em;text-transform:uppercase;font-size:clamp(3rem,7vw,5.75rem);font-weight:700;line-height:.98;display:block}.hero-statement{letter-spacing:-.04em;max-width:25ch;margin-top:24px;font-size:clamp(1.4375rem,2.8vw,2.125rem);font-weight:600;line-height:1.25;display:block}.hero-emphasis{color:var(--accent)}.hero p.lede{max-width:52ch;color:var(--text-muted);margin:28px 0 32px;font-size:.875rem;line-height:1.9}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.hero-actions .btn{flex:9rem;max-width:100%}.btn>svg{flex-shrink:0}.btn{min-height:48px;transition:transform var(--ease), box-shadow var(--ease), background-color var(--ease);border:1px solid #0000;border-radius:2px;justify-content:center;align-items:center;gap:10px;padding:12px 20px;font-size:.75rem;font-weight:600;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn:active{transform:none}.btn-primary{color:var(--brand-on-olive);background:var(--brand-olive);border-color:var(--accent)}.btn-primary:hover{box-shadow:0 0 0 3px var(--accent-soft)}.btn-ghost{color:var(--text);border-color:var(--control-border)}.btn-ghost:hover{background:var(--accent-soft);border-color:var(--accent)}.graph-wrap{border:1px solid var(--border);background:var(--bg-alt);justify-self:center;width:100%;max-width:360px;padding:20px}.graph-caption,.graph-footer{color:var(--text-muted);letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:8px;font-size:.5625rem;display:flex}.signal-dot{background:var(--accent);border-radius:50%;width:5px;height:5px}.graph-caption>span:last-child{margin-left:auto}.graph-svg{width:100%;height:auto;margin-block:16px;display:block}.graph-legend{display:none}.graph-footer{border-top:1px solid var(--border);justify-content:space-between;padding-top:12px}.graph-footer>span:last-child{color:var(--accent);font-size:1.125rem;line-height:1}.graph-edge{stroke:var(--control-border);stroke-width:1px;stroke-opacity:.6}.graph-edge.spoke{stroke:var(--accent);stroke-opacity:.6;stroke-dasharray:5 6;animation:3.2s linear dash}.graph-ring{fill:none;stroke:var(--accent-2);stroke-opacity:.6;stroke-width:1px;transform-origin:200px 200px;animation:4s linear spin}.graph-node-circle{fill:var(--bg);stroke:var(--accent);stroke-width:1.25px}.graph-node.center .graph-node-circle{fill:var(--accent);stroke:none}.graph-node text{fill:var(--text);font-family:IBM Plex Mono,monospace}.graph-node.center text{fill:var(--on-accent);font-weight:600}.graph-node .graph-node-label{fill:var(--text-muted);font-size:.625rem}@keyframes dash{to{stroke-dashoffset:-22px}}@keyframes spin{to{transform:rotate(90deg)}}.about-grid{align-items:start;gap:40px;display:grid}.portrait{margin:0}.portrait figcaption{margin-bottom:18px}.portrait-frame{aspect-ratio:4/5;background:var(--portrait-bg);min-block-size:min-content;color:var(--portrait-ink);border-radius:3px;display:grid;position:relative;overflow:hidden}.portrait-image{object-fit:cover;object-position:center top;width:100%;height:100%;display:block;position:absolute;inset:0}.portrait-placeholder{flex-direction:column;justify-content:space-between;gap:24px;min-width:0;padding:clamp(16px,3vw,24px);display:flex;position:relative}.portrait-coordinate{letter-spacing:.06em;font-size:.6875rem}.portrait-initials{letter-spacing:-.09em;align-self:center;margin-block:auto;font-size:clamp(6rem,14vw,11.25rem);font-weight:600;line-height:1}.portrait-placeholder-copy{border-top:1px solid;gap:8px;padding-top:20px;display:grid}.portrait-placeholder-copy strong{letter-spacing:.03em;font-size:.6875rem}.portrait-placeholder-copy>span{font-size:.75rem;line-height:1.6}.identity-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0 0;display:grid}.identity-meta dt{color:var(--accent);letter-spacing:.07em;margin-bottom:8px;font-size:.5625rem}.identity-meta dd{color:var(--text-muted);text-transform:uppercase;margin:0;font-size:.625rem}.about-copy .about-headline{letter-spacing:-.04em;text-transform:uppercase;max-width:22ch;margin:0 0 24px;font-size:clamp(1.5rem,2.7vw,2rem);font-weight:700;line-height:1.2}.about-copy>p{max-width:65ch;color:var(--text-muted);margin:0 0 22px;font-size:.875rem;line-height:1.9}.about-tech{margin-top:40px}.about-tech .technical-label{margin:0 0 20px}.stack-list{color:var(--text-muted);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;margin:0;padding:0;font-size:.6875rem;list-style:none;display:grid}.stack-list li{align-items:baseline;gap:8px;display:flex}.stack-list li:before{content:"";background:var(--accent);flex-shrink:0;width:3px;height:3px}.stat-list{gap:20px;margin-top:40px;display:grid}.stat-row{align-items:flex-start;gap:12px;display:flex}.stat-row>svg{width:16px;height:16px;color:var(--accent);flex-shrink:0;margin-top:2px}.stat-row h3{color:var(--accent);letter-spacing:.03em;text-transform:uppercase;margin:0 0 7px;font-family:IBM Plex Mono,monospace;font-size:.625rem;font-weight:500}.stat-row p{color:var(--text-muted);margin:0;font-size:.75rem;line-height:1.75}.project-grid{gap:0;display:grid}.project-card{border-top:1px solid var(--border);grid-template-columns:clamp(40px,10vw,64px) minmax(0,1fr);gap:clamp(12px,3vw,20px);padding-block:32px;display:grid}.project-card:last-child{padding-bottom:0}.project-number{color:var(--accent);letter-spacing:-.07em;font-size:3.25rem;font-weight:500;line-height:1}.project-content{flex-direction:column;gap:16px;min-width:0;display:flex}.project-content h3{letter-spacing:-.04em;text-transform:uppercase;margin:0;font-size:clamp(1.3125rem,2.6vw,1.875rem);font-weight:700;line-height:1.15}.project-content>p{max-width:65ch;color:var(--text-muted);margin:0;font-size:.8125rem;line-height:1.85}.project-content .project-status{color:var(--text-muted);margin-top:0;font-size:.625rem}.tag-list,.project-tags{flex-wrap:wrap;gap:8px;display:flex}.tag{overflow-wrap:anywhere;border:1px solid var(--border);max-width:100%;color:var(--text-muted);border-radius:0;padding:4px 7px;font-size:.625rem;line-height:1.5}.note-banner{border-left:2px solid var(--accent);max-width:84ch;color:var(--text-muted);margin-top:32px;padding-left:16px;font-size:.6875rem;line-height:1.9}.skills-grid{gap:clamp(20px,3vw,28px);display:grid}.skill-card{border-top:1px solid var(--border);padding-top:24px}.skill-card-icon{width:32px;height:32px;color:var(--accent);justify-content:center;align-items:center;margin-bottom:18px;display:inline-flex}.skill-card h3{letter-spacing:-.03em;text-transform:uppercase;margin:0 0 8px;font-size:1.0625rem;font-weight:600;line-height:1.4}.skill-card .note{color:var(--accent-2);margin:0 0 22px;font-size:.625rem}.edu-card{border:1px solid var(--border);background:var(--surface);align-items:flex-start;gap:clamp(12px,2vw,20px);padding:clamp(16px,3vw,24px);display:flex}.edu-icon{width:32px;height:32px;color:var(--accent);flex-shrink:0;place-items:center;display:grid}.edu-card h3{letter-spacing:-.03em;text-transform:uppercase;margin:0 0 12px;font-size:clamp(1.125rem,2.5vw,1.625rem);font-weight:600;line-height:1.3}.edu-card .sub{color:var(--accent);margin:0 0 16px;font-size:.6875rem}.edu-card p{max-width:68ch;color:var(--text-muted);margin:0;font-size:.8125rem;line-height:1.9}.contact-inner{gap:32px;display:grid}.contact-inner h2{letter-spacing:-.045em;text-transform:uppercase;margin:16px 0 24px;font-size:clamp(1.75rem,3.5vw,2.625rem);font-weight:700;line-height:1.15}.contact-inner h2>span:last-child{color:var(--accent)}.contact-intro{max-width:40ch;color:var(--text-muted);margin:0;font-size:.8125rem}.contact-links{align-content:center;min-width:0;display:grid}.contact-item{border-bottom:1px solid var(--border);grid-template-columns:24px minmax(0,1fr);align-items:center;gap:12px;padding-block:20px;display:grid}.contact-item:first-child{border-top:1px solid var(--border)}.contact-item>svg{color:var(--accent)}.contact-item>div{gap:4px;min-width:0;display:grid}.contact-item>div>span:last-child{color:var(--text-muted);overflow-wrap:anywhere;font-size:.6875rem}.contact-label{color:var(--text);text-transform:uppercase;font-size:.75rem}.contact-status{color:var(--text-muted);grid-column:2;justify-self:start;font-size:.625rem}.ll-root footer{border-top:1px solid var(--border);padding-block:24px}.footer-inner{color:var(--text-muted);text-transform:uppercase;flex-flow:column wrap;justify-content:space-between;gap:12px;font-size:.625rem;display:flex}.skip-link{z-index:100;border:2px solid var(--focus);background:var(--bg);color:var(--text);border-radius:2px;padding:12px 16px;position:absolute;top:12px;left:20px;transform:translateY(-200%)}.skip-link:focus{transform:none}@media (width>=561px){.ll-root{--page-inset-block:clamp(24px, 4vw, 56px);padding:var(--page-inset-block) clamp(12px, 2vw, 32px)}.portfolio-shell{border:1px solid var(--border);border-radius:28px;box-shadow:0 28px 64px #0000001f}.nav{border-radius:28px 28px 0 0}.portrait,.identity-meta{width:100%;max-width:440px;margin-inline:auto}.identity-meta{margin-top:24px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-actions .btn{flex:0 auto}.footer-inner{flex-direction:row}}@media (width>=981px){.section-head{margin-bottom:56px}.hero-grid{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(32px,4vw,48px)}.graph-wrap{max-width:440px}.about-grid{grid-template-columns:minmax(0,.98fr) minmax(0,1fr);gap:clamp(32px,5vw,64px)}.about-identity{width:100%;max-width:480px}.portrait,.identity-meta{max-width:none}.portrait-frame{aspect-ratio:4/7}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:0 32px}.project-card{grid-template-columns:56px minmax(0,1fr);gap:16px}.project-number{font-size:3.75rem}.project-card:last-child{padding-bottom:32px}.contact-inner{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px}}@media (width>=1101px){.skills-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1281px){.hero-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(48px,5vw,80px)}.graph-wrap{max-width:480px}}@supports (container-type:inline-size){.nav{container:portfolio-navigation/inline-size}@container portfolio-navigation (width>=60rem){.nav-links{display:flex}.menu-toggle,.mobile-nav.open{display:none}}}@supports not (container-type:inline-size){@media (width>=70rem){.nav-links{display:flex}.menu-toggle,.mobile-nav.open{display:none}}}@media (height<=500px) and (width>=561px){.ll-root{--page-inset-block:12px}}@media (width<=560px),(width<=980px) and (height<=500px){.ll-root section{padding-block:48px}.ll-root .hero{padding-block:40px 48px}.hero-grid{gap:32px}.eyebrow{margin-bottom:20px;font-size:.75rem}.hero-name{letter-spacing:-.04em;font-size:clamp(3rem,12.5vw,3.75rem);line-height:1.05}.hero-statement{letter-spacing:-.025em;margin-top:20px;font-size:clamp(1.375rem,6vw,1.625rem);line-height:1.3}.hero p.lede{margin-block:24px;font-size:.9375rem;line-height:1.8}.hero-actions .btn{font-size:.8125rem}.graph-wrap{padding:12px}.graph-caption{letter-spacing:.02em;font-size:.6875rem}.graph-svg{margin-block:12px}.graph-node text{font-size:18px}.graph-node.center text{font-size:22px}.graph-node .graph-node-label,.graph-footer{display:none}.graph-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:16px 0 4px;padding:0;font-size:.75rem;line-height:1.6;list-style:none;display:grid}.graph-legend li{flex-wrap:wrap;align-items:baseline;gap:0 6px;min-width:0;display:flex}.graph-legend strong{flex-shrink:0;font-weight:500}.graph-legend span{min-width:0}.section-head{margin-bottom:28px}.section-tag,.technical-label,.skill-card .note,.contact-status,.identity-meta dt,.stat-row h3,.footer-inner{font-size:.6875rem}.project-card{padding-block:24px}.project-number{font-size:2.75rem}.project-content{gap:14px}.project-content h3{letter-spacing:-.025em;font-size:clamp(1.25rem,5.5vw,1.5rem);line-height:1.2}.project-content>p,.edu-card p,.contact-intro{font-size:.875rem}.project-content .project-status,.tag,.identity-meta dd,.edu-card .sub{font-size:.6875rem}.about-grid{gap:32px}.about-copy>p{font-size:.9375rem;line-height:1.8}.about-tech,.stat-list{margin-top:32px}.stack-list,.contact-item>div>span:last-child{font-size:.75rem}.stat-row p{font-size:.8125rem}.mobile-nav a{font-size:.875rem}}@media (width<=360px){.edu-card{flex-direction:column;gap:12px}}@media (width<=980px) and (height<=500px){.ll-root .hero{padding-block:32px}}@media (prefers-reduced-motion:reduce){.ll-root *,.ll-root :before,.ll-root :after{transition:none!important;animation:none!important}.btn:hover,.btn:active{transform:none}}
