:root{color:var(--ink);background:var(--background);font-synthesis:none;text-rendering:optimizelegibility;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#252525;--background:#f5f0e8;--surface:#ede5d9;--surface-raised:#faf7f1;--text-secondary:#625d55;--border:#d8cbb8;--accent:#c9b99a;--accent-strong:#8a7965;--button-background:#252525;--button-foreground:#f5f0e8;--button-hover:#413a32;--visual-background:#ede5d9;--field-background:#faf7f1;--field-placeholder:#625d55;--error-color:#873b35;--error-border:#a94b43;--success-color:#496445;--link-color:#252525;--selection-foreground:#252525;--chrome-background:#f5f0e8;--chrome-foreground:#252525;--chrome-border:#d8cbb8;--chrome-hover:#8a7965;--shadow-card:0 12px 30px #2525250f;--shadow-raised:0 10px 24px #2525250f;--focus-ring:#8a7965;--disabled-opacity:.58;--space-section:clamp(5rem, 10vw, 9rem);--radius:4px;--header-height:78px;font-optical-sizing:auto;font-family:Inter,Helvetica Neue,Arial,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#f5f0e8;--background:#1a1a1a;--surface:#222;--surface-raised:#292929;--text-secondary:#c5bdb1;--border:#3b3732;--accent:#c9b99a;--accent-strong:#d7c5a7;--button-background:#c9b99a;--button-foreground:#1a1a1a;--button-hover:#d8c8aa;--visual-background:#222;--field-background:#1a1a1a;--field-placeholder:#c5bdb1;--error-color:#f0a49a;--error-border:#c9675d;--success-color:#c7d8b9;--link-color:#f5f0e8;--selection-foreground:#1a1a1a;--chrome-background:#1a1a1a;--chrome-foreground:#f5f0e8;--chrome-border:#3b3732;--chrome-hover:#c9b99a;--shadow-card:0 12px 30px #00000038;--shadow-raised:0 10px 24px #0003;--focus-ring:#c9b99a;--disabled-opacity:.58}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px;scroll-padding-top:calc(var(--header-height) + 1rem)}body{background:var(--background);min-width:320px;color:var(--ink);margin:0;font-size:16px;line-height:1.65;transition:background-color .22s,color .22s}body,button,input,textarea{font-family:Inter,Helvetica Neue,Arial,sans-serif}button,input,textarea{font-size:inherit}body *{transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:ease}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--link-color);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px}img{max-width:100%;display:block}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{letter-spacing:-.035em;line-height:1.14}::selection{color:var(--selection-foreground);background:var(--accent)}.wrap{width:min(1180px,100% - 48px);margin-inline:auto}.section{padding-block:var(--space-section);scroll-margin-top:calc(var(--header-height) + 1rem)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;color:var(--ink);background:var(--surface-raised);padding:10px 15px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:30;min-height:var(--header-height);color:var(--chrome-foreground);background:var(--chrome-background);position:sticky;top:0}.header-inner{min-height:var(--header-height);justify-content:space-between;align-items:center;gap:30px;display:flex}.brand,.footer-brand{align-items:center;gap:12px;text-decoration:none;display:inline-flex}.logo-frame{background:var(--surface-raised);border:1px solid var(--chrome-border);flex:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.logo-frame--small{border-radius:7px;width:48px;height:48px;padding:3px}.logo{object-fit:contain;width:180px;height:180px}.logo--small{width:42px;height:42px}.brand-logo .logo{transition:transform .8s cubic-bezier(.2,.8,.2,1)}.brand:hover .brand-logo .logo,.brand:focus-visible .brand-logo .logo,.footer-brand:hover .brand-logo .logo,.footer-brand:focus-visible .brand-logo .logo{transform:rotateY(360deg)}.main-nav{align-items:center;gap:clamp(14px,2.2vw,30px);display:flex}.main-nav a,.nav-cta{color:var(--chrome-foreground);font-size:12px;font-weight:500;text-decoration:none;transition:color .18s}.main-nav a:hover,.main-nav a.active{color:var(--chrome-hover)}.main-nav .nav-cta{color:var(--ink);background:var(--surface-raised);border-radius:5px;padding:10px 15px}.main-nav .nav-cta:hover{color:var(--button-foreground);background:var(--button-hover)}.theme-toggle{width:36px;height:36px;color:var(--chrome-foreground);border:1px solid var(--chrome-border);cursor:pointer;background:0 0;border-radius:50%;flex:0 0 36px;place-items:center;transition:color .18s,border-color .18s,background-color .18s;display:inline-grid}.theme-toggle:hover{color:var(--chrome-hover);border-color:var(--chrome-hover)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.menu-toggle{color:var(--chrome-foreground);border:1px solid var(--chrome-border);background:0 0;border-radius:4px;padding:8px 12px;display:none}.hero{min-height:min(750px, calc(100svh - var(--header-height)));grid-template-columns:1.05fr .95fr;align-items:center;gap:50px;padding-block:80px 94px;display:grid}.eyebrow{color:var(--text-secondary);letter-spacing:.13em;align-items:center;gap:10px;margin-bottom:18px;font-size:14px;font-weight:700;display:flex}.eyebrow-dot{background:var(--accent);border-radius:50%;flex:0 0 7px;width:7px;height:7px;display:inline-block}.hero-role{margin-bottom:12px;font-size:19px;font-weight:600}.hero-description{max-width:520px;color:var(--text-secondary);margin-bottom:30px;font-size:17px}.hero-actions{flex-wrap:wrap;align-items:center;gap:22px;display:flex}@media (width>=921px){.hero-actions{grid-template-columns:max-content max-content;gap:12px 6px;max-width:500px;display:grid}.hero-actions .text-link{grid-area:1/1/auto/-1;justify-self:start}.hero-actions .button--dark{grid-area:2/1;justify-self:start;max-width:100%}.hero-actions .button--outline{grid-area:2/2;justify-self:start;max-width:100%}}@media (width>=921px) and (width<=1023px){.hero-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.hero-actions .button{gap:6px;padding-inline:8px;font-size:11px}}.button{cursor:pointer;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;gap:18px;min-height:48px;padding:11px 18px;font-size:13px;font-weight:600;text-decoration:none;transition:background .18s,color .18s,transform .18s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button--dark{color:var(--button-foreground);background:var(--button-background)}.button--dark:hover{background:var(--button-hover)}.button--outline{color:var(--ink);border-color:var(--border);background:0 0}.button--outline:hover{border-color:var(--accent-strong);color:var(--accent-strong)}.text-link{text-underline-offset:5px;font-size:13px;font-weight:600;text-decoration-thickness:1px}.text-link:hover,.project-links a:hover,.social-links a:hover,.footer-email:hover{color:var(--accent-strong)}.hero-location{color:var(--text-secondary);margin:45px 0 0;font-size:12px}.hero-visual{aspect-ratio:1.14;justify-self:end;place-items:center;width:min(100%,500px);display:grid;position:relative}.hero-logo-card{z-index:1;aspect-ratio:1;background:var(--background);border:1px solid var(--border);border-radius:12px;place-items:center;width:clamp(280px,34vw,370px);padding:34px;display:grid;position:relative}.hero-signature-card{background:0 0;border:0;border-radius:0}.hero-lines{fill:none;width:100%;height:100%;stroke:var(--border);stroke-width:1.2px;position:absolute;inset:0}.hero-parallax-layer{will-change:transform}.hero-lines circle{fill:var(--accent);stroke:none}.visual-caption{z-index:2;color:var(--text-secondary);background:var(--background);align-items:center;gap:9px;padding:9px 12px;font-size:10px;display:flex;position:absolute;bottom:3%;right:-2%}.visual-caption span{background:var(--accent);border-radius:50%;width:6px;height:6px}.visual-caption i{background:var(--border);width:24px;height:1px}.projects-section{background:var(--surface)}.section-heading{max-width:720px;margin-bottom:52px}.section-heading h2{letter-spacing:-.06em;margin-bottom:18px;font-size:clamp(2.35rem,4.3vw,4rem);font-weight:550}.section-heading>p:last-child{max-width:620px;color:var(--text-secondary);margin-bottom:0;font-size:16px}.project-card{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);min-width:0;transition:transform .22s,box-shadow .22s,background-color .22s,color .22s,border-color .22s;overflow:hidden}.project-card:hover{box-shadow:var(--shadow-card);transform:translateY(-4px)}.project-featured{grid-template-columns:1.02fr .98fr;align-items:stretch;margin-bottom:22px;display:grid}.project-featured .project-details{padding:clamp(26px,4vw,54px)}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:22px;display:grid}.project-visual{min-width:0;padding:18px 18px 0}.project-featured .project-visual{align-items:center;padding:22px;display:flex}.screenshot-frame{aspect-ratio:1.93;background:var(--visual-background);border:1px solid var(--border);border-radius:5px;place-items:center;width:100%;display:grid;position:relative;overflow:hidden}.project-featured .screenshot-frame{aspect-ratio:1.45}.screenshot-link{place-items:center;width:100%;height:100%;display:grid;position:relative}.screenshot-link img{object-fit:contain;width:100%;height:100%;transition:filter .2s}.new-tab-note{color:var(--ink);background:var(--surface-raised);border:1px solid var(--border);opacity:0;border-radius:3px;padding:3px 7px;font-size:9px;transition:opacity .15s;position:absolute;bottom:8px;right:8px}.screenshot-link:hover .new-tab-note,.screenshot-link:focus-visible .new-tab-note{opacity:1}.project-placeholder{aspect-ratio:1.93;background:var(--visual-background);border:1px solid var(--border);border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.project-placeholder--featured{aspect-ratio:1.45;min-height:275px}.placeholder-mark{border:1px solid var(--border);border-radius:50%;width:70px;height:70px;display:block;position:relative}.placeholder-mark i{border-top:2px solid var(--ink);border-left:2px solid var(--ink);width:18px;height:18px;position:absolute;top:18px;left:17px}.placeholder-mark b{background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:43px;left:44px}.placeholder-name{font-size:17px;font-weight:650}.placeholder-note{color:var(--text-secondary);font-size:10px}.project-details{min-width:0;padding:22px}.project-heading{justify-content:space-between;align-items:start;gap:12px;display:flex}.project-kicker{color:var(--accent-strong);letter-spacing:.09em;text-transform:uppercase;margin-bottom:5px;font-size:9px;font-weight:700}.project-heading h3{margin-bottom:0;font-size:25px}.project-title-link{text-decoration:none}.project-title-link:hover{color:var(--accent-strong)}.project-index{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:12px}.project-tagline{color:var(--text-secondary);margin:13px 0 18px;font-size:13px}.project-story{margin:0}.project-story>div{border-top:1px solid var(--border);padding-block:12px}.project-story dt{margin-bottom:3px;font-size:10px;font-weight:700}.project-story dd{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.55}.team-context,.project-note{color:var(--text-secondary);background:var(--surface);margin:10px 0;padding:9px 11px;font-size:11px}.project-note{border-left:2px solid var(--accent)}.tag-list{flex-wrap:wrap;gap:6px;margin:18px 0 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--border);border-radius:3px;padding:4px 8px;font-size:9px}.project-links{gap:16px;margin-top:16px;display:flex}.project-links a{color:var(--ink);font-size:11px;font-weight:650;text-decoration:none}.skills-section{background:var(--background)}.skills-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.skill-group{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:184px;padding:27px;position:relative}.skill-number{color:var(--text-secondary);font-size:10px;position:absolute;top:24px;right:24px}.skill-group h3{margin-bottom:17px;font-size:18px}.skill-group ul,.learning-list,.plain-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.technology-item{background:var(--surface);border:1px solid var(--border);border-radius:5px;align-items:center;gap:8px;min-width:0;min-height:36px;padding:4px 10px 4px 4px;font-size:11px;line-height:1.35;transition:border-color .18s,background-color .18s;display:inline-flex}.technology-item:hover{background:var(--surface-raised);border-color:var(--accent-strong)}.technology-item>span{overflow-wrap:anywhere;min-width:0}.technology-icon{flex:0 0 26px;width:26px;height:26px;display:block;overflow:visible}.technology-art{fill:none;stroke:var(--ink);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.technology-art .art-fill{fill:var(--accent);stroke:var(--accent)}.technology-art .art-dark{fill:var(--ink);stroke:var(--ink)}.learning-list li{max-width:100%}.learning{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:30px;margin-top:44px;padding:28px;display:flex}.learning .eyebrow{margin-bottom:8px}.learning h3{margin:0;font-size:23px}.learning-list{justify-content:end}.about-section{background:var(--surface)}.about-copy{line-height:1.8;max-width:690px!important;font-size:17px!important}.approach-list{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin:48px 0 92px;padding:0;list-style:none;display:grid}.approach-list li{flex-direction:column;gap:16px;min-width:0;padding:22px 20px 24px 0;display:flex;position:relative}.approach-list li+li{border-left:1px solid var(--border);padding-left:24px}.approach-list span{color:var(--accent-strong);font-size:10px}.approach-list strong{font-size:clamp(15px,2vw,20px)}.approach-list i{border-top:1px solid var(--border);border-right:1px solid var(--border);width:24px;height:24px;position:absolute;top:28px;right:18px}.about-education{width:100%}.about-block>h3{margin-bottom:26px;font-size:26px}.about-block h4{letter-spacing:-.01em;margin-bottom:8px;font-size:14px}.education-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;display:grid}.education-list article{border-top:1px solid var(--border);min-width:0;padding:19px 20px 20px 0;position:relative}.education-index{width:27px;height:27px;color:var(--accent-strong);background:var(--background);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;margin-bottom:15px;font-size:9px;font-weight:700;display:inline-flex}.education-list article h4{max-width:360px;font-size:17px}.education-list p{color:var(--text-secondary);margin-bottom:5px;font-size:12px}.education-list .education-place{color:var(--ink);font-weight:600}.about-block .plain-list{margin-bottom:24px;display:block}.plain-list li{color:var(--text-secondary);margin:5px 0;font-size:13px}.contact-section{background:var(--background)}.contact-layout{grid-template-columns:.85fr 1.15fr;align-items:start;gap:clamp(40px,8vw,100px);display:grid}.contact-direct{padding-top:14px}.contact-label{color:var(--text-secondary);margin-bottom:7px;font-size:12px}.email-link{letter-spacing:-.04em;overflow-wrap:anywhere;max-width:100%;font-size:clamp(18px,2.2vw,27px);font-weight:600;text-decoration-thickness:1px;display:inline-block}.contact-actions{flex-wrap:wrap;align-items:center;gap:15px;margin-top:25px;display:flex}.social-links{flex-wrap:wrap;gap:17px;display:flex}.social-links a{color:inherit;font-size:12px;text-decoration:none}.copy-status{min-height:24px;color:var(--success-color);margin-top:13px;font-size:12px}.form-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(22px,4vw,38px)}.form-panel>h3{margin-bottom:8px;font-size:23px}.form-panel>p{color:var(--text-secondary);margin-bottom:22px;font-size:12px}.site-footer{color:var(--chrome-foreground);background:var(--chrome-background);padding-block:25px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px 26px;display:flex}.footer-identity{align-items:center;gap:12px;display:flex}.footer-copyright{color:var(--text-secondary);letter-spacing:.02em;width:auto!important;margin:0!important;font-size:10px!important}.footer-brand{text-decoration:none}.footer-email{font-size:11px;text-decoration:none}.footer-inner .social-links a{color:var(--chrome-foreground)}.footer-inner>p{width:100%;color:var(--text-secondary);margin:0;font-size:10px}@media (prefers-reduced-motion:no-preference){.reveal-pending .reveal{opacity:0;transform:translateY(14px)}.reveal-pending .reveal.is-visible{animation:.65s both reveal-in}@keyframes reveal-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}}@media (width<=920px){.main-nav{gap:15px}.main-nav a{font-size:11px}.hero{gap:24px}.hero h1{font-size:clamp(3rem,7vw,5.3rem)}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-featured{grid-template-columns:1fr 1fr}.project-featured .project-visual{padding:18px}.project-featured .project-placeholder{min-height:225px}.learning{flex-direction:column;align-items:start}.learning-list{justify-content:start}}@media (width<=700px){:root{--header-height:68px;--space-section:76px}.wrap{width:min(100% - 36px,560px)}.header-inner{gap:12px}.logo-frame--small{width:42px;height:42px;padding:2px}.logo--small{width:38px;height:38px}.menu-toggle{align-items:center;gap:9px;display:inline-flex}.menu-lines,.menu-lines:before,.menu-lines:after{background:currentColor;width:15px;height:1px;display:block}.menu-lines{position:relative}.menu-lines:before,.menu-lines:after{content:"";position:absolute;left:0}.menu-lines:before{top:-5px}.menu-lines:after{top:5px}.main-nav{top:var(--header-height);background:var(--chrome-background);border-top:1px solid var(--chrome-border);align-items:stretch;gap:0;padding:8px 18px 20px;display:none;position:absolute;left:0;right:0}.main-nav--open{flex-direction:column;display:flex}.main-nav a{padding:12px 8px;font-size:14px}.main-nav .theme-toggle{align-self:start;margin:8px}.main-nav .nav-cta{text-align:center;margin-top:8px}.hero{grid-template-columns:minmax(0,1fr) minmax(82px,33%);align-items:center;gap:clamp(10px,3vw,20px);min-height:0;padding-block:54px 62px}.hero-copy{order:0;min-width:0}.hero .eyebrow{letter-spacing:.08em;overflow-wrap:anywhere;align-items:flex-start;gap:7px;margin-bottom:13px;font-size:14px}.hero h1{letter-spacing:-.07em;overflow-wrap:anywhere;max-width:530px;margin-bottom:16px;font-size:clamp(1.9rem,8vw,3rem)}.hero-role{margin-bottom:8px;font-size:clamp(12px,3vw,17px)}.hero-description{margin-bottom:18px;font-size:clamp(11px,2.8vw,14px);line-height:1.55}.hero-actions{flex-direction:column;align-items:flex-start;gap:10px}.hero-actions .text-link{order:-1}.hero-actions .button{gap:8px;max-width:100%;min-height:40px;padding:8px 10px;font-size:10px}.hero-actions .text-link{font-size:11px}.hero-location{margin-top:18px;font-size:10px}.hero-visual{aspect-ratio:.9;justify-self:stretch;width:100%;min-width:0}.hero-logo-card{width:min(100%,clamp(82px,28vw,200px));padding:clamp(7px,2vw,18px)}.hero-signature{width:100%;max-width:285px}.hero-lines{inset:0}.visual-caption{font-size:8px;bottom:0;right:0}.section-heading{margin-bottom:34px}.section-heading h2{font-size:clamp(2.15rem,9vw,3.2rem)}.project-featured{grid-template-columns:1fr}.project-featured .project-visual{padding:14px 14px 0}.project-featured .project-placeholder{aspect-ratio:1.7;min-height:210px}.project-featured .project-details{padding:23px}.project-grid{grid-template-columns:1fr;gap:16px}.project-visual{padding:14px 14px 0}.project-details{padding:19px}.project-placeholder{aspect-ratio:1.75}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-group{min-height:165px;padding:19px 14px}.skill-group h3{max-width:85%;font-size:16px}.skill-number{top:17px;right:14px}.learning{margin-top:30px;padding:22px 17px}.learning-list{gap:7px}.approach-list{grid-template-columns:1fr;margin:38px 0 64px}.approach-list li,.approach-list li+li{border-left:0;justify-content:center;gap:5px;min-height:76px;padding:13px 35px 13px 0}.approach-list li+li{border-top:1px solid var(--border)}.approach-list i{top:25px;right:6px}.approach-list strong{font-size:17px}.education-list{grid-template-columns:1fr;gap:12px}.contact-layout{grid-template-columns:1fr;gap:24px}.email-link{font-size:clamp(19px,6vw,28px)}.form-panel{padding:21px 17px}.footer-inner{justify-content:flex-start}.footer-brand{width:100%}.footer-inner>p{margin-top:5px}}@media (width<=380px){.wrap{width:calc(100% - 30px)}.hero{grid-template-columns:minmax(0,1fr) minmax(78px,32%);gap:9px;padding-block:42px 50px}.hero h1{font-size:clamp(1.7rem,8vw,2.05rem)}.hero-description{font-size:11px}.hero-logo-card{width:min(100%,100px);padding:6px}.hero-lines{display:none}.hero-actions{gap:10px}.hero-actions .button{padding-inline:8px;font-size:9px}.button{padding-inline:12px}.skills-grid{grid-template-columns:1fr}.skill-group{min-height:130px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}h1,h2,h3,h4,.hero-domain h2,.project-heading h3,.section-heading h2,.about-block>h3,.form-panel>h3{letter-spacing:-.035em;font-family:Georgia,Times New Roman,serif;font-weight:400}.site-header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb, var(--chrome-background) 94%, transparent);border-bottom:1px solid var(--chrome-border)}.header-inner{width:min(1320px,100% - 64px)}.logo-frame--small{background:0 0;border:0;width:54px;height:54px;padding:5px}.logo--small{width:43px;height:43px;color:var(--ink)}.main-nav{gap:clamp(20px,3vw,42px)}.main-nav a{font-size:13px;position:relative}.main-nav a.active:after{background:var(--accent);content:"";height:1px;position:absolute;bottom:-9px;left:0;right:0}.main-nav .nav-cta{display:none}.theme-toggle{border:0;border-radius:50%}.hero.wrap{width:min(1320px,100% - 64px)}.hero{min-height:min(760px, calc(100svh - var(--header-height)));grid-template-columns:minmax(0,1.08fr) minmax(250px,.9fr) minmax(250px,.85fr);gap:clamp(28px,4vw,70px);padding-block:clamp(52px,8vh,96px)}.hero-copy{max-width:510px}.hero-intro-name{color:var(--ink);letter-spacing:.22em;align-items:center;gap:12px;margin:0 0 12px;font-family:QTChanceryType,Fetamont Script,Segoe Script,Bradley Hand,cursive;font-size:13.5px;font-weight:500;line-height:1.4;display:flex}.hero-intro-name:before{background:var(--accent);content:"";transform-origin:0;flex:0 0 24px;width:24px;height:1px;transform:scaleX(1)}.hero .eyebrow{letter-spacing:.16em;margin-bottom:19px;font-family:QTChanceryType,Fetamont Script,Segoe Script,Bradley Hand,cursive;font-size:11px;font-weight:500;line-height:1.5}.hero h1{letter-spacing:-.045em;max-width:570px;margin-bottom:21px;font-size:clamp(2.7rem,4.2vw,4.2rem);font-weight:400;line-height:1.07}.hero-rule{background:var(--accent);width:42px;height:2px;margin:24px 0 20px;display:block}.hero-description{max-width:440px;color:var(--text-secondary);margin-bottom:26px;font-size:15px;line-height:1.75}.hero-actions{gap:12px}.hero-actions .button{white-space:nowrap;border-radius:6px;gap:10px;min-height:44px;padding:10px 15px;font-size:12px}.hero-actions .button--outline{border-color:var(--accent-strong)}.hero-location{margin-top:40px;font-size:11px}.hero-location span,.hero-study span{color:var(--accent-strong);margin-inline:5px}.hero-visual{aspect-ratio:1;justify-self:center;width:100%;max-width:440px}.hero-lines{stroke:var(--accent);stroke-width:1.2px;overflow:visible}.hero-lines .hero-axis{stroke:var(--accent);opacity:.64}.hero-lines .hero-disc{fill:var(--surface);stroke:none;opacity:.72}.hero-lines .hero-arc{stroke:var(--accent);stroke-width:1.5px}.hero-orbit{transform-box:view-box;transform-origin:50%;will-change:transform;animation:45s linear infinite orbit}@keyframes orbit{to{transform:rotate(360deg)}}.hero-logo-card{width:min(88%,340px);padding:24px}.hero-signature-card{z-index:2}.hero-mark-layer{place-items:center;width:100%;display:grid}.hero-signature{width:100%;max-width:none;height:auto;color:var(--ink)}.hero-domains{align-self:center;min-width:0}.hero-domain{border-bottom:1px solid var(--border);grid-template-columns:48px minmax(0,1fr);align-items:start;gap:17px;padding:22px 0;display:grid}.hero-domain:first-child{padding-top:0}.domain-icon{width:46px;height:46px;color:var(--ink);border:1px solid var(--border);border-radius:50%;place-items:center;display:grid}.domain-icon svg{width:22px;height:22px}.hero-domain h2{margin:0 0 5px;font-size:19px}.hero-domain p{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.6}.hero-study{color:var(--text-secondary);margin:20px 0 0;font-size:11px}@media (prefers-reduced-motion:no-preference){.reveal-pending .hero-copy.is-visible .hero-intro-name,.reveal-pending .hero-copy.is-visible .eyebrow,.reveal-pending .hero-copy.is-visible h1,.reveal-pending .hero-copy.is-visible .hero-rule,.reveal-pending .hero-copy.is-visible .hero-description,.reveal-pending .hero-copy.is-visible .hero-actions,.reveal-pending .hero-copy.is-visible .hero-location{animation:.7s cubic-bezier(.22,1,.36,1) both hero-copy-in}.reveal-pending .hero-copy.is-visible .hero-intro-name:before{animation:.7s cubic-bezier(.22,1,.36,1) both hero-name-rule-in}.reveal-pending .hero-copy.is-visible .eyebrow{animation-delay:.12s}.reveal-pending .hero-copy.is-visible h1{animation-delay:.24s}.reveal-pending .hero-copy.is-visible .hero-rule{animation-delay:.36s}.reveal-pending .hero-copy.is-visible .hero-description{animation-delay:.48s}.reveal-pending .hero-copy.is-visible .hero-actions{animation-delay:.6s}.reveal-pending .hero-copy.is-visible .hero-location{animation-delay:.72s}@keyframes hero-copy-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-name-rule-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}}.section-heading h2{font-weight:400}.project-card,.form-panel{box-shadow:none;border-radius:4px}.project-heading h3{font-size:27px}.site-footer{border-top:1px solid var(--chrome-border)}.projects-stack{padding-bottom:clamp(1.5rem,5vw,4rem);position:relative}.project-stack-card{top:calc(var(--header-height) + 20px);z-index:var(--stack-index);min-height:min(570px, calc(100svh - var(--header-height) - 42px));background:var(--background);box-shadow:none;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);grid-template-areas:"details visual";margin-bottom:clamp(30vh,40vw,52vh);display:grid;position:sticky;overflow:hidden}.project-stack-card:last-child{margin-bottom:clamp(34vh,42vw,54vh)}.project-stack-card .project-details{grid-area:details;align-self:center;padding:clamp(28px,4vw,58px)}.project-stack-card .project-visual{background:var(--surface);grid-area:visual;align-items:center;padding:22px;display:flex}.project-stack-card .screenshot-frame{aspect-ratio:16/10}.project-stack-card .project-placeholder{aspect-ratio:16/10;min-height:0}.project-stack-card:hover,.project-stack-card:focus-within{border-color:var(--accent-strong);box-shadow:none;transform:none}.project-stack-card .screenshot-link img{transition:transform .45s cubic-bezier(.22,1,.36,1);transform:scale(1)}.project-stack-card:hover .screenshot-link img,.project-stack-card:focus-within .screenshot-link img{transform:scale(1.025)}.project-stack-card .project-kicker{letter-spacing:.16em;margin-bottom:10px;font-size:10px}.project-stack-card .project-heading h3{font-size:clamp(2rem,3.2vw,3.15rem);line-height:.98}.project-stack-card .project-index{color:var(--accent-strong);letter-spacing:.14em;font-size:11px}.project-stack-card .project-tagline{color:var(--ink);margin:20px 0;font-size:15px;font-weight:600;line-height:1.6}.project-stack-card .project-story>div{padding-block:10px}.project-stack-card .project-story dd{font-size:11px;line-height:1.55}.project-stack-card .tag-list{margin-top:17px}.project-stack-card .project-links{margin-top:18px}.project-stack-card .project-links a{border-bottom:1px solid var(--accent);padding-bottom:3px;position:relative}.project-stack-card .project-links a span[aria-hidden=true]{transition:transform .2s;display:inline-block}.project-stack-card .project-links a:hover span[aria-hidden=true],.project-stack-card .project-links a:focus-visible span[aria-hidden=true]{transform:translate(3px,-3px)}@media (width<=920px){.project-stack-card{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);min-height:0;margin-bottom:34vh}.project-stack-card .project-details{padding:28px}.project-stack-card .project-visual{padding:16px}}@media (width<=700px),(prefers-reduced-motion:reduce){.projects-stack{gap:18px;padding-bottom:0;display:grid}.project-stack-card{flex-direction:column;min-height:0;margin:0;display:flex;position:relative;top:auto}.project-stack-card .project-details{order:0;padding:23px}.project-stack-card .project-visual{order:1;padding:14px}.project-stack-card .project-heading h3{font-size:2rem}.project-stack-card .project-tagline{margin:15px 0;font-size:14px}}@media (width<=1050px){.hero{grid-template-columns:minmax(0,1.1fr) minmax(230px,.9fr)}.hero-intro-name{letter-spacing:.15em;font-size:12px}.hero-domains{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.hero-domain{border-bottom:0;grid-template-columns:42px minmax(0,1fr);gap:12px}.hero-domain:first-child{padding-top:22px}.hero-study{border-top:1px solid var(--border);grid-column:1/-1;margin-top:0;padding-top:12px}}@media (width<=700px){.header-inner,.hero.wrap{width:min(100% - 36px,560px)}.main-nav a.active:after{display:none}.hero{flex-direction:column;align-items:stretch;gap:22px;padding-block:40px 56px;display:flex}.hero-copy{order:0}.hero .eyebrow{letter-spacing:.12em;font-size:10px}.hero-intro-name{letter-spacing:.15em;font-size:12px}.hero h1{max-width:560px;font-size:clamp(2.6rem,11vw,4rem);line-height:1.04}.hero-description{max-width:540px;font-size:14px}.hero-actions{flex-flow:wrap;align-items:center;gap:10px}.hero-actions .button{min-height:44px;padding-inline:13px;font-size:11px}.hero-location{margin-top:22px}.hero-visual{aspect-ratio:1;order:1;align-self:center;width:min(100%,310px);min-width:0}.hero-logo-card{width:84%;padding:20px}.hero-domains{order:2;display:block}.hero-domain,.hero-domain:first-child{border-bottom:1px solid var(--border);padding:16px 0}.hero-domain p{font-size:13px}.hero-study{margin-top:15px}}@media (width<=380px){.hero-actions{flex-direction:column;align-items:stretch}.hero-actions .button{width:100%}}@media (prefers-reduced-motion:reduce){.hero-orbit{animation:none}}.contact-form{grid-template-columns:1fr 1fr;gap:14px 16px;display:grid}.contact-field{flex-direction:column;gap:6px;min-width:0;display:flex}.contact-field--message,.contact-submit,.contact-form-status{grid-column:1/-1}.contact-field label{font-size:11px;font-weight:650}.contact-field input,.contact-field textarea{width:100%;min-height:44px;color:var(--ink);background:var(--field-background);border:1px solid var(--border);border-radius:4px;padding:10px 12px}.contact-field input::placeholder,.contact-field textarea::placeholder{color:var(--field-placeholder);opacity:.82}.contact-field textarea{resize:none;min-height:120px}.contact-field input[aria-invalid=true],.contact-field textarea[aria-invalid=true]{border-color:var(--error-border)}.contact-field-error{color:var(--error-color);font-size:11px}.contact-honeypot{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.contact-submit{justify-self:start}.contact-submit:disabled{cursor:wait;opacity:var(--disabled-opacity)}.contact-form-status{min-height:1.5em;color:var(--text-secondary);margin:-4px 0 0;font-size:12px}.contact-form-status--success{color:var(--success-color)}.contact-form-status--error{color:var(--error-color)}@media (width<=700px){.contact-form{grid-template-columns:1fr}.contact-field--message,.contact-submit,.contact-form-status{grid-column:1}}.hero-signature{width:clamp(190px,26vw,330px);max-width:100%;height:auto;display:block}.skills-category-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.skills-category{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:23px;transition:transform .2s,box-shadow .2s}.skills-category:hover{box-shadow:var(--shadow-raised);transform:translateY(-3px)}.skills-category-heading{border-bottom:1px solid var(--border);align-items:baseline;gap:12px;margin-bottom:20px;padding-bottom:13px;display:flex}.skills-category-heading>span{color:var(--accent-strong);font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.skills-category-heading h3{margin:0;font-size:18px}.skills-items{flex-wrap:wrap;gap:17px 18px;margin:0;padding:0;list-style:none;display:flex}.skills-item{min-width:65px;max-width:100%;color:var(--text-secondary);text-align:center;overflow-wrap:anywhere;flex-direction:column;justify-content:start;align-items:center;gap:7px;font-size:11px;line-height:1.35;display:flex}.skills-item .devicon,.skills-custom-icon{width:38px;height:38px;color:var(--ink);justify-content:center;align-items:center;font-size:34px;line-height:1;display:inline-flex}.skills-custom-icon svg{fill:none;width:34px;height:34px;stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.skills-custom-icon svg circle,.skills-custom-icon svg rect{fill:var(--surface)}.skills-learning{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:30px;margin-top:44px;padding:28px;display:flex}.skills-learning-heading .eyebrow{margin-bottom:8px}.skills-learning-heading h3{margin:0;font-size:23px}.skills-learning-items{justify-content:end}@media (width<=920px){.skills-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-learning{flex-direction:column;align-items:start}.skills-learning-items{justify-content:start}}@media (width<=700px){.skills-category-grid{grid-template-columns:1fr}.skills-category{padding:20px}.skills-learning{margin-top:30px;padding:22px 17px}}@media (prefers-reduced-motion:reduce){.skills-category{transition:none}}.wave-greeting{--wave-ink:var(--ink);--wave-bubble:var(--surface-raised);--wave-bubble-border:var(--border);--wave-bubble-text:var(--ink);width:fit-content;color:var(--wave-ink);flex-direction:column;align-items:center;margin:12px auto 0;display:flex;position:relative}:root[data-theme=dark] .wave-greeting{--wave-ink:var(--ink)}.wave-bubble{z-index:1;border:1px solid var(--wave-bubble-border);color:var(--wave-bubble-text);background:var(--wave-bubble);white-space:nowrap;opacity:0;visibility:hidden;border-radius:15px;padding:8px 13px;font-size:13px;font-weight:600;transition:opacity .2s,transform .2s,visibility .2s;position:absolute;top:0;left:50%;transform:translate(-50%,-3px)}.wave-bubble:after{content:"";background:var(--wave-bubble);border-right:1px solid var(--wave-bubble-border);border-bottom:1px solid var(--wave-bubble-border);width:11px;height:11px;position:absolute;bottom:-7px;left:calc(50% - 6px);transform:rotate(45deg)}.wave-greeting.is-waving .wave-bubble{opacity:1;visibility:visible;transform:translate(-50%)}.wave-person{width:min(260px,70vw);height:auto;display:block;overflow:visible}.wave-eye,.wave-hand{fill:currentColor;stroke:none}.wave-person-figure.is-swaying{transform-box:view-box;transform-origin:50% 60%;animation:1.2s ease-in-out infinite alternate wave-sway}.wave-forearm.is-waving{transform-box:view-box;transform-origin:67.5% 30.77%;animation:.45s ease-in-out infinite alternate wave-arm}@keyframes wave-arm{0%{transform:rotate(-28deg)}to{transform:rotate(28deg)}}@keyframes wave-sway{0%{transform:rotate(-1.5deg)}to{transform:rotate(1.5deg)}}@media (prefers-reduced-motion:reduce){.wave-person-figure.is-swaying,.wave-forearm.is-waving{animation:none}.wave-bubble{transition:none}}.intro-loader{z-index:1000;color:var(--ink);background:var(--background);place-items:center;display:grid;position:fixed;inset:0}.intro-loader__content{flex-direction:column;align-items:center;gap:24px;width:min(38vw,168px);display:flex}.intro-loader__monogram{width:100%;height:auto;color:var(--ink);display:block;overflow:visible}.intro-loader__monogram path{stroke-dasharray:1;stroke-dashoffset:1px;animation:.78s cubic-bezier(.4,0,.2,1) forwards intro-signature-draw}.intro-loader__monogram path:nth-child(2){animation-duration:.5s;animation-delay:.48s}.intro-loader__monogram path:nth-child(3){animation-duration:.26s;animation-delay:.91s}.intro-loader__line{background:var(--accent);transform-origin:50%;width:34px;height:1px;animation:.28s cubic-bezier(.22,1,.36,1) .94s forwards intro-line-draw;transform:scaleX(0)}.intro-loader--exiting{animation:.8s cubic-bezier(.76,0,.24,1) .24s forwards intro-curtain-out}.intro-loader--exiting .intro-loader__content{animation:.24s ease-in forwards intro-mark-exit}@keyframes intro-signature-draw{to{stroke-dashoffset:0}}@keyframes intro-line-draw{to{transform:scaleX(1)}}@keyframes intro-mark-exit{to{opacity:0;transform:scale(.94)}}@keyframes intro-curtain-out{to{transform:translateY(-100%)}}@media (width<=700px){.intro-loader__content{width:min(48vw,144px)}}@media (prefers-reduced-motion:reduce){.intro-loader,.intro-loader *{animation:none!important}.intro-loader__monogram path{stroke-dasharray:none;stroke-dashoffset:0}.intro-loader__line{transform:none}}
