:root{--font-sans:"Wotfard", "Avenir Next", "Segoe UI Variable", "Segoe UI", "Helvetica Neue", sans-serif;--font-display:var(--font-sans);--font-mono:"Dank Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", monospace;--fm-accent-rgb:0, 217, 255;--fm-bg:light-dark(#f6f1e8,#0a0a0a);--fm-text:light-dark(#16130f,#e5e5e5);--fm-muted:light-dark(#6e6558,#9d9d9d);--fm-muted-strong:light-dark(#423b32,#c9c9c9);--fm-muted-soft:light-dark(#796c5b,#5a5a5a);--fm-border:light-dark(#d8cfc3,#2f2f2f);--fm-border-soft:light-dark(#ebe1d5,#1b1b1b);--fm-border-strong:light-dark(#c8bdae,#3a3a3a);--fm-accent:light-dark(#006a80,#00d9ff);--fm-accent-soft:light-dark(#006a801a,#00d9ff1f);--fm-accent-soft-strong:light-dark(#006a8024,#00d9ff29);--fm-accent-line:light-dark(#006a8057,#00d9ff73);--fm-surface:light-dark(#fffbf4d6,#121212);--fm-surface-hover:light-dark(#f4ebdf,#171717);--fm-surface-raised:light-dark(#fffaf2,#161616);--fm-surface-strong:light-dark(#f1e8dc,#181818);--fm-surface-inset:light-dark(#efe5d8,#141414);--fm-shadow-elevated:0 12px 24px #00000047;--fm-theme-button-bg:light-dark(#ece4d8,#242424);--fm-theme-button-border:light-dark(#8a7760,#646464);--fm-theme-button-shadow:0 0 0 transparent;--fm-theme-button-icon:light-dark(#5f5648,#b5b5b5);--fm-theme-button-icon-muted:var(--fm-theme-button-icon);--fm-theme-button-highlight:light-dark(#ffffff73,#ffffff0f);--fm-theme-button-glow:light-dark(#5f564814,#ffffff14);--fm-theme-button-focus-ring:light-dark(#005f75,#8aefff);--fm-motion-fast:.16s;--fm-motion-base:.22s;--fm-motion-slow:.32s;--fm-motion-theme:.28s;--fm-ease-standard:cubic-bezier(.2, 0, 0, 1);--fm-ease-emphasized:cubic-bezier(.22, 1, .36, 1);color-scheme:dark}:root[data-theme=light]{--fm-accent-rgb:0, 106, 128;--fm-shadow-elevated:0 18px 36px #4d381b1a;color-scheme:light}*,:before,:after{box-sizing:border-box}p,h1,h2,h3,h4,small,strong,li,span{margin-block-start:0}@font-face{font-family:Wotfard;src:url(/fonts/wotfard/wotfard-semibold-webfont.woff2)format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:Wotfard;src:url(/fonts/wotfard/wotfard-bold-webfont.woff2)format("woff2");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:Dank Mono;src:url(/fonts/dank-mono/DankMono-Regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--fm-bg)}body.fm-body{background:var(--fm-bg);color:var(--fm-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--fm-motion-theme) var(--fm-ease-standard), color var(--fm-motion-theme) var(--fm-ease-standard);margin:0;line-height:1.55;position:relative}main{z-index:1;position:relative}img{block-size:auto;max-inline-size:100%;display:block}a{color:inherit;transition:color var(--fm-motion-theme) var(--fm-ease-standard), background-color var(--fm-motion-theme) var(--fm-ease-standard), border-color var(--fm-motion-theme) var(--fm-ease-standard)}p,h1,h2,h3,h4,small,strong,li,span{transition:color var(--fm-motion-theme) var(--fm-ease-standard), border-color var(--fm-motion-theme) var(--fm-ease-standard), background-color var(--fm-motion-theme) var(--fm-ease-standard)}:where(a,button,input,textarea,select,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--fm-accent);outline-offset:3px}::selection{background:var(--fm-accent-soft-strong);color:var(--fm-text)}.fm-skip-link{z-index:100;background:color-mix(in srgb, var(--fm-accent) 14%, var(--fm-surface-raised));color:var(--fm-text);transition:transform var(--fm-motion-fast) var(--fm-ease-standard);border-radius:.5rem;padding:.75rem 1rem;font-weight:600;text-decoration:none;position:absolute;top:.75rem;left:.75rem;transform:translateY(-140%)}.fm-skip-link:focus{transform:translateY(0)}.fm-theme-toggle{z-index:30;block-size:3.5rem;inline-size:3.5rem;color:var(--fm-theme-button-icon);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;outline:none;justify-content:center;align-items:center;padding:0;display:none;position:fixed;bottom:1rem;right:1rem}.fm-enhanced .fm-theme-toggle{display:inline-flex}.fm-theme-toggle-shell{border-radius:inherit;border:1px solid var(--fm-theme-button-border);background:var(--fm-theme-button-bg);block-size:100%;inline-size:100%;box-shadow:var(--fm-theme-button-shadow);transition:transform var(--fm-motion-base) var(--fm-ease-emphasized), border-color var(--fm-motion-base) var(--fm-ease-standard), background-color var(--fm-motion-base) var(--fm-ease-standard), box-shadow var(--fm-motion-base) var(--fm-ease-standard);place-items:center;display:grid;position:relative;overflow:hidden}.fm-theme-toggle-shell:before{content:"";border-radius:inherit;background:radial-gradient(circle at 32% 28%, var(--fm-theme-button-highlight), transparent 44%);opacity:0;transition:opacity var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);position:absolute;inset:0;transform:scale(.88)}.fm-theme-toggle:hover .fm-theme-toggle-shell,.fm-theme-toggle:focus-visible .fm-theme-toggle-shell{box-shadow:0 0 0 .45rem var(--fm-theme-button-glow);transform:translateY(-1px)scale(1.04)}.fm-theme-toggle:hover .fm-theme-toggle-shell:before,.fm-theme-toggle:focus-visible .fm-theme-toggle-shell:before{opacity:1;transform:scale(1)}.fm-theme-toggle:active .fm-theme-toggle-shell{box-shadow:0 0 0 .25rem var(--fm-theme-button-glow);transform:translateY(0)scale(.94)}.fm-theme-toggle:focus-visible{outline:3px solid var(--fm-theme-button-focus-ring);outline-offset:4px}.fm-theme-toggle-icon{block-size:1.55rem;inline-size:1.55rem;color:var(--fm-theme-button-icon-muted);transform-origin:50%;transition:opacity var(--fm-motion-slow) var(--fm-ease-emphasized), color var(--fm-motion-base) var(--fm-ease-standard), transform .52s var(--fm-ease-emphasized);z-index:1;visibility:visible;justify-content:center;align-items:center;display:inline-flex;position:absolute}.fm-theme-toggle:hover .fm-theme-toggle-icon,.fm-theme-toggle:focus-visible .fm-theme-toggle-icon{color:var(--fm-theme-button-icon)}.fm-theme-toggle-icon svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%}.fm-theme-toggle-icon-sun{opacity:1;transform:scale(1)rotate(0)}.fm-theme-toggle-icon-moon{opacity:0;visibility:hidden;transform:scale(.4)rotate(-160deg)}.fm-theme-toggle:hover .fm-theme-toggle-icon-sun,.fm-theme-toggle:focus-visible .fm-theme-toggle-icon-sun{transform:scale(1.08)rotate(10deg)}.fm-theme-toggle:hover .fm-theme-toggle-icon-moon,.fm-theme-toggle:focus-visible .fm-theme-toggle-icon-moon{transform:scale(.46)rotate(-148deg)}:root[data-theme=light] .fm-theme-toggle-icon-sun{opacity:0;visibility:hidden;transform:scale(.38)rotate(150deg)}:root[data-theme=light] .fm-theme-toggle-icon-moon{opacity:1;visibility:visible;transform:scale(1)rotate(0)}:root[data-theme=light] .fm-theme-toggle:hover .fm-theme-toggle-icon-sun,:root[data-theme=light] .fm-theme-toggle:focus-visible .fm-theme-toggle-icon-sun{transform:scale(.44)rotate(162deg)}:root[data-theme=light] .fm-theme-toggle:hover .fm-theme-toggle-icon-moon,:root[data-theme=light] .fm-theme-toggle:focus-visible .fm-theme-toggle-icon-moon{transform:scale(1.08)rotate(10deg)}.fm-season-toggle{bottom:5.25rem}.fm-theme-toggle.fm-season-toggle[hidden],.fm-season-toggle-icon[hidden]{display:none}.fm-season-toggle-icon{opacity:.42;transform:scale(.92)}.fm-season-toggle[aria-checked=true] .fm-season-toggle-icon{opacity:1;color:var(--fm-accent);transform:scale(1)}.fm-season-toggle[data-busy] .fm-season-toggle-icon{animation:2.4s ease-in-out infinite fm-season-busy}@keyframes fm-season-busy{50%{opacity:.42}}:target{scroll-margin-block-start:1.5rem}.fm-container,.fm-contact-wrap,.fm-narrow{width:min(1040px,100% - 2rem);margin-inline:auto}.fm-section{content-visibility:auto;contain-intrinsic-block-size:auto 960px;padding:clamp(3.75rem,8vw,6.5rem) 0}.fm-section-head h2{font-family:var(--font-display);letter-spacing:.01em;text-wrap:balance;margin:0;font-size:clamp(2rem,9vw,2.5rem);font-weight:500;line-height:1.12}.fm-section-head p{color:var(--fm-muted);margin:.75rem 0 0;font-size:1rem;font-weight:300;line-height:1.45}.fm-hero{place-items:center;min-height:100svh;padding:2rem 1rem 4rem;display:grid;position:relative}.fm-hero-content{z-index:1;text-align:center;max-width:48rem;position:relative}.fm-scene-slot{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.fm-hero-content{transition:translate 1.8s var(--fm-ease-emphasized)}[data-scene-ambient] .fm-hero-content{translate:0 var(--fm-scene-hero-lift,0)}.fm-role{color:var(--fm-accent);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:500}.fm-name{font-family:var(--font-display);text-wrap:balance;margin:.8rem 0 0;font-size:clamp(2.35rem,13vw,4.2rem);font-weight:500;line-height:1.05}.fm-tagline{max-width:36rem;color:var(--fm-muted);text-wrap:pretty;margin:1.2rem auto 0;font-size:clamp(1.02rem,4.7vw,1.35rem);font-weight:300;line-height:1.5}.fm-hero-links{color:var(--fm-muted-strong);align-items:center;gap:.8rem;margin-top:1.85rem;font-size:.95rem;display:inline-flex}.fm-hero-links a{transition:color var(--fm-motion-fast) var(--fm-ease-standard), background-color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);border-radius:999px;padding:.5rem .7rem;text-decoration:none}.fm-hero-links a:hover,.fm-hero-links a:focus-visible{color:var(--fm-accent);background:var(--fm-accent-soft);transform:translateY(-1px)}.fm-hero-links a:active{transform:translateY(0)scale(.98)}.fm-hero-links span{color:var(--fm-muted-soft)}.fm-scroll-down{opacity:.78;color:var(--fm-muted);min-width:2.75rem;min-height:2.75rem;transition:color var(--fm-motion-fast) var(--fm-ease-standard), opacity var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);place-items:center;text-decoration:none;display:grid;position:absolute;bottom:1.15rem;left:50%;transform:translate(-50%)}.fm-scroll-down svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;transform-origin:50%;width:1.2rem;height:1.2rem}.fm-scroll-down.is-hero-active{opacity:1}.fm-scroll-down.is-hero-active svg{animation:1.7s cubic-bezier(.22,1,.36,1) infinite fm-chevron-bob}@keyframes fm-chevron-bob{0%,to{opacity:.66;transform:translateY(0)scale(1)}52%{opacity:1;transform:translateY(6px)scale(1.04)}}.fm-scroll-down:hover{color:var(--fm-accent);transform:translate(-50%)translateY(1px)}.fm-timeline-shell{position:relative}.fm-timeline{gap:2.2rem;margin-top:2.2rem;margin-bottom:0;padding:.2rem 0 1.2rem 1.85rem;list-style:none;display:grid;position:relative}.fm-visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fm-timeline-line,.fm-timeline-progress{width:1px;position:absolute;top:0;left:.45rem}.fm-timeline-line{background:var(--fm-border-soft);height:100%;transition:background-color var(--fm-motion-theme) var(--fm-ease-standard)}.fm-timeline-progress{background:linear-gradient(180deg, color-mix(in srgb, var(--fm-accent) 98%, transparent) 0%, color-mix(in srgb, var(--fm-accent) 82%, transparent) 68%, color-mix(in srgb, var(--fm-accent) 30%, transparent) 100%);height:0;box-shadow:0 0 14px color-mix(in srgb, var(--fm-accent) 22%, transparent)}.fm-timeline-progress:after{content:"";background:var(--fm-accent);width:.56rem;height:.56rem;box-shadow:0 0 18px color-mix(in srgb, var(--fm-accent) 66%, transparent);opacity:0;border-radius:999px;transition:opacity .2s,transform .2s;position:absolute;bottom:0;left:50%;transform:translate(-50%,42%)scale(.84)}.fm-timeline-progress.is-active:after{opacity:1;animation:1.9s ease-in-out infinite fm-timeline-tip-pulse;transform:translate(-50%,42%)scale(1)}@keyframes fm-timeline-tip-pulse{0%,to{box-shadow:0 0 10px color-mix(in srgb, var(--fm-accent) 40%, transparent), 0 0 18px color-mix(in srgb, var(--fm-accent) 18%, transparent)}50%{box-shadow:0 0 16px color-mix(in srgb, var(--fm-accent) 68%, transparent), 0 0 28px color-mix(in srgb, var(--fm-accent) 26%, transparent)}}.fm-timeline-item,.fm-timeline-item-left,.fm-timeline-item-right{text-align:left;width:100%;position:relative}.fm-timeline-copy{max-width:100%}.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-copy{opacity:0;transition:opacity .52s,transform .62s cubic-bezier(.22,1,.36,1);transform:translate(18px)}.fm-enhanced .fm-timeline-item.fm-reveal.is-visible .fm-timeline-copy{opacity:1;transition-delay:60ms;transform:translate(0)}.fm-year{color:var(--fm-accent);font-size:.9rem;font-family:var(--font-display);margin:0}.fm-timeline-copy h3{font-size:1.4rem;font-family:var(--font-display);margin:.38rem 0 0;font-weight:500;line-height:1.25}.fm-timeline-copy p{color:var(--fm-muted);margin:.65rem 0 0;font-size:.97rem;font-weight:300;line-height:1.5}.fm-timeline-dot,.fm-timeline-item-left .fm-timeline-dot,.fm-timeline-item-right .fm-timeline-dot{background:var(--fm-accent);opacity:1;width:.85rem;height:.85rem;box-shadow:0 0 20px color-mix(in srgb, var(--fm-accent) 68%, transparent);transition:background-color var(--fm-motion-theme) var(--fm-ease-standard);border-radius:999px;position:absolute;top:.45rem;left:-1.825rem;transform:none}.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-dot{opacity:0;box-shadow:0 0 0 color-mix(in srgb, var(--fm-accent) 0%, transparent);transition:opacity .42s,transform .66s cubic-bezier(.22,1,.36,1),box-shadow .48s;transform:translate(14px)scale(.82)}.fm-enhanced .fm-timeline-item.fm-reveal.is-visible .fm-timeline-dot{opacity:1;box-shadow:0 0 20px color-mix(in srgb, var(--fm-accent) 68%, transparent);transition-delay:.14s;transform:translate(0)scale(1)}.fm-grid{gap:.9rem;display:grid}.fm-section-head+.fm-grid{margin-top:1.4rem}.fm-grid-two{grid-template-columns:1fr}.fm-card{border:1px solid var(--fm-border);background:var(--fm-surface);transition:border-color var(--fm-motion-fast) var(--fm-ease-standard), background-color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized), box-shadow var(--fm-motion-base) var(--fm-ease-standard);border-radius:.75rem;flex-direction:column;padding:1rem;display:flex}@media (hover:hover){.fm-card:hover{border-color:color-mix(in srgb, var(--fm-accent) 45%, transparent);background:var(--fm-surface-hover);box-shadow:var(--fm-shadow-elevated);transform:translateY(-2px)}}.fm-project-card{gap:.8rem}.fm-project-card-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.fm-project-link{border:1px solid var(--fm-border-strong);min-height:2.5rem;color:var(--fm-muted);background:var(--fm-surface-inset);transition:color var(--fm-motion-fast) var(--fm-ease-standard), border-color var(--fm-motion-fast) var(--fm-ease-standard), background-color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);border-radius:999px;flex-shrink:0;align-items:center;gap:.45rem;padding:.45rem .8rem;display:inline-flex}.fm-project-link:hover,.fm-project-link:focus-visible{color:var(--fm-accent);border-color:color-mix(in srgb, var(--fm-accent) 55%, transparent);background:var(--fm-accent-soft-strong);transform:translateY(-1px)scale(1.02)}.fm-project-link:active{transform:translateY(0)scale(.98)}.fm-project-link svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1rem;height:1rem}.fm-project-link-text{font-size:.84rem;font-weight:500;line-height:1}.fm-project-link-icon{justify-content:center;align-items:center;display:inline-flex}.fm-project-card h3,.fm-card h3{font-family:var(--font-display);text-wrap:balance;margin:0;font-size:1.28rem;font-weight:500;line-height:1.35}.fm-project-card p,.fm-card p{color:var(--fm-muted);text-wrap:pretty;margin:0;font-size:.96rem;font-weight:300;line-height:1.48}.fm-tags{flex-wrap:wrap;gap:.4rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.fm-tags li{font-family:var(--font-mono);background:var(--fm-surface-strong);border:1px solid var(--fm-border-soft);color:var(--fm-accent);transition:background-color var(--fm-motion-theme) var(--fm-ease-standard), border-color var(--fm-motion-theme) var(--fm-ease-standard), color var(--fm-motion-theme) var(--fm-ease-standard);border-radius:.3rem;padding:.34rem .56rem;font-size:.84rem;line-height:1.2}.fm-writing-list{margin:1.6rem 0 0;padding:0;list-style:none}.fm-writing-list li{border-bottom:1px solid var(--fm-border-soft)}.fm-writing-list a{justify-content:space-between;align-items:flex-start;gap:.9rem;padding:1.2rem 0;text-decoration:none;display:flex}.fm-writing-list strong{font-family:var(--font-display);text-wrap:balance;font-size:1.25rem;font-weight:500;line-height:1.35;display:block}.fm-writing-list small{color:var(--fm-muted);flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.45rem;font-size:.9rem;font-style:normal;line-height:1.4;display:inline-flex}.fm-dot-sep{color:var(--fm-muted-soft)}.fm-writing-list small svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:.88rem;height:.88rem}.fm-arrow{color:var(--fm-muted-soft);transition:color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);flex-shrink:0;justify-content:center;align-items:center;margin-top:.15rem;display:inline-flex}.fm-arrow svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1.1rem;height:1.1rem}.fm-writing-list a:hover strong,.fm-writing-list a:focus-visible strong,.fm-writing-list a:hover .fm-arrow,.fm-writing-list a:focus-visible .fm-arrow{color:var(--fm-accent)}.fm-writing-list a:hover .fm-arrow,.fm-writing-list a:focus-visible .fm-arrow{transform:translate(3px)}.fm-contact-section{padding-bottom:0}.fm-contact-intro{max-width:52rem;color:var(--fm-muted);margin:2rem 0 0;font-size:1.03rem;font-weight:300;line-height:1.55}.fm-contact-list{gap:1rem;max-width:30rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.fm-contact-list a{transition:background-color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);border-radius:.65rem;align-items:center;gap:.8rem;margin-inline:-.45rem;padding:.35rem .45rem;text-decoration:none;display:flex}.fm-contact-list a:hover,.fm-contact-list a:focus-visible{background:var(--fm-accent-soft);transform:translateY(-1px)}.fm-contact-list a:active{transform:translateY(0)scale(.99)}.fm-contact-icon{border:1px solid var(--fm-border);background:var(--fm-surface-raised);width:2.2rem;height:2.2rem;color:var(--fm-muted);transition:color var(--fm-motion-fast) var(--fm-ease-standard), border-color var(--fm-motion-fast) var(--fm-ease-standard), transform var(--fm-motion-base) var(--fm-ease-emphasized);border-radius:999px;flex-shrink:0;place-items:center;display:grid}.fm-contact-list a:hover .fm-contact-icon,.fm-contact-list a:focus-visible .fm-contact-icon{color:var(--fm-accent);border-color:var(--fm-accent-line);transform:scale(1.04)}.fm-contact-icon svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:.9rem;height:.9rem}.fm-contact-list small{color:var(--fm-muted);font-size:.92rem;display:block}.fm-contact-list strong{margin-top:.03rem;font-size:1.05rem;font-weight:400;line-height:1.3;display:block}.fm-footer{border-top:1px solid var(--fm-border-soft);margin-top:3rem;padding:1.2rem 0}.fm-footer-inner{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.fm-footer p{color:var(--fm-muted);margin:0;font-size:.9rem}.fm-enhanced .fm-reveal{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(16px)}.fm-enhanced .fm-reveal.is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}body.fm-body,a,p,h1,h2,h3,h4,small,strong,li,span,.fm-enhanced .fm-reveal,.fm-hero-links a,.fm-scroll-down,.fm-card,.fm-project-link,.fm-theme-toggle-shell,.fm-theme-toggle-icon,.fm-hero-content,.fm-arrow,.fm-contact-list a,.fm-contact-icon,.fm-tags li,.fm-timeline-line,.fm-timeline-dot,.fm-timeline-progress:after,.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-copy,.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-dot{transition:none}.fm-enhanced .fm-reveal,.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-copy,.fm-enhanced .fm-timeline-item.fm-reveal .fm-timeline-dot{opacity:1;transform:none}.fm-enhanced .fm-timeline-item.fm-reveal.is-visible .fm-timeline-copy,.fm-enhanced .fm-timeline-item.fm-reveal.is-visible .fm-timeline-dot{transition-delay:0s}.fm-timeline-progress.is-active:after,.fm-scroll-down.is-hero-active svg,.fm-season-toggle[data-busy] .fm-season-toggle-icon{animation:none}}@media (forced-colors:active){.fm-theme-toggle{forced-color-adjust:none;color:buttontext}.fm-theme-toggle-shell{box-shadow:none;background:canvas;border-color:buttontext}.fm-theme-toggle-icon{color:buttontext}.fm-theme-toggle:focus-visible{outline-color:highlight}.fm-enhanced .fm-theme-toggle.fm-season-toggle,.fm-scene-slot{display:none}}@media (width>=640px){.fm-theme-toggle{bottom:1.5rem;right:1.5rem}.fm-season-toggle{bottom:5.75rem}.fm-container,.fm-contact-wrap,.fm-narrow{width:min(1040px,100% - 3rem)}.fm-project-card h3,.fm-card h3{font-size:1.45rem}.fm-project-card p,.fm-card p{font-size:1.02rem}.fm-contact-intro{font-size:1.12rem}.fm-contact-list strong{font-size:1.15rem}}@media (width>=821px){.fm-section-head h2{font-size:clamp(2.2rem,6vw,3.4rem)}.fm-hero-links{gap:1.1rem;font-size:1rem}.fm-grid-two{grid-template-columns:repeat(2,minmax(0,1fr))}.fm-section-head+.fm-grid{margin-top:1.9rem}.fm-timeline{gap:3rem;margin-top:2.8rem;padding:.8rem 0 1.6rem}.fm-timeline-line,.fm-timeline-progress{left:50%;transform:translate(-50%)}.fm-timeline-item{width:calc(50% - 2.4rem)}.fm-timeline-item-left{text-align:right;justify-self:start}.fm-timeline-item-right{text-align:left;justify-self:end}.fm-timeline-copy{max-width:23rem}.fm-timeline-item-left .fm-timeline-copy{margin-left:auto}.fm-enhanced .fm-timeline-item-left.fm-reveal .fm-timeline-copy{transform:translate(-22px)}.fm-enhanced .fm-timeline-item-right.fm-reveal .fm-timeline-copy{transform:translate(22px)}.fm-timeline-dot{top:.55rem}.fm-timeline-item-left .fm-timeline-dot{left:auto;right:-3.35rem}.fm-enhanced .fm-timeline-item-left.fm-reveal .fm-timeline-dot{transform:translate(-14px)scale(.82)}.fm-timeline-item-right .fm-timeline-dot{left:-3.35rem;right:auto}.fm-enhanced .fm-timeline-item-right.fm-reveal .fm-timeline-dot{transform:translate(14px)scale(.82)}.fm-enhanced .fm-timeline-item-left.fm-reveal.is-visible .fm-timeline-copy,.fm-enhanced .fm-timeline-item-right.fm-reveal.is-visible .fm-timeline-copy{transform:translate(0)}.fm-enhanced .fm-timeline-item-left.fm-reveal.is-visible .fm-timeline-dot,.fm-enhanced .fm-timeline-item-right.fm-reveal.is-visible .fm-timeline-dot{transform:translate(0)scale(1)}.fm-writing-list a{padding:1.5rem 0}.fm-writing-list strong{font-size:1.55rem}.fm-footer-inner{flex-direction:row;justify-content:space-between;align-items:center}.fm-footer p{font-size:.95rem}}@media (width>=1024px){.fm-section-head h2{font-size:clamp(2.6rem,5vw,3.6rem)}.fm-name{font-size:clamp(3.2rem,8vw,6.1rem)}.fm-tagline{font-size:clamp(1.3rem,2vw,1.72rem)}.fm-timeline{gap:4.4rem;margin-top:3.1rem;padding:1.6rem 0 2.7rem}.fm-timeline-item{width:calc(50% - 2.9rem)}.fm-timeline-copy{max-width:24.5rem}.fm-timeline-copy h3,.fm-writing-list strong,.fm-project-card h3,.fm-card h3{font-size:1.74rem}.fm-project-card p,.fm-card p,.fm-timeline-copy p,.fm-writing-list small,.fm-contact-list small,.fm-footer p,.fm-tags li{font-size:1rem}.fm-timeline-copy p{font-size:1.12rem}.fm-contact-intro{margin-top:3rem;font-size:clamp(1.2rem,2vw,1.35rem)}.fm-contact-list{gap:1.4rem;margin-top:3rem}.fm-contact-list strong{font-size:1.3rem}.fm-footer{margin-top:4.3rem;padding:1.8rem 0}}[data-scene=autumn]{--fm-scene-hero-lift:-6svh;--autumn-leaf-0:light-dark(#a6401c,#f2a12e);--autumn-leaf-1:light-dark(#7d2233,#e8671d);--autumn-leaf-2:light-dark(#a87818,#b8431d);--autumn-leaf-3:light-dark(#8a3b1c,#d9541f)}[data-scene=autumn] [data-scene-accent]{position:relative}[data-scene=autumn] [data-autumn-leaves]{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity 1.4s;position:absolute;inset:0}[data-scene=autumn] [data-autumn-leaves][data-settled]{opacity:1}[data-scene=autumn] [data-autumn-leaves]>svg{color:var(--autumn-leaf-0);position:absolute;overflow:visible}[data-scene=autumn] [data-autumn-leaves]>[data-tone="1"]{color:var(--autumn-leaf-1)}[data-scene=autumn] [data-autumn-leaves]>[data-tone="2"]{color:var(--autumn-leaf-2)}[data-scene=autumn] [data-autumn-leaves]>[data-tone="3"]{color:var(--autumn-leaf-3)}[data-scene=autumn] [data-autumn-leaves] [data-part=leaf]{fill:currentColor;stroke:none}[data-scene=autumn] [data-autumn-leaves] [data-part=veins]{fill:none;stroke:color-mix(in srgb, currentcolor 62%, #000);stroke-width:.8px;stroke-linecap:round;vector-effect:non-scaling-stroke}[data-scene=autumn][data-theme=light] [data-autumn-leaves] [data-part=leaf]{stroke:color-mix(in srgb, currentcolor 55%, #000);stroke-width:1px;stroke-linejoin:round;vector-effect:non-scaling-stroke}@media (prefers-reduced-motion:reduce){[data-scene=autumn] [data-autumn-leaves]{transition:none}}@media (forced-colors:active){[data-scene=autumn] [data-autumn-leaves]{display:none}}[data-scene=summer]{--summer-blade:light-dark(#4f8f2c,#7cc46a);--summer-blade-deep:light-dark(#2f6f2a,#4a9a5c);--summer-petal:light-dark(#fff,#f4f7ee);--summer-petal-contour:light-dark(#7d8496,#9fb3a4);--summer-heart:light-dark(#e2a400,#f2c230)}[data-scene=summer] [data-scene-accent]{position:relative}[data-scene=summer] [data-summer-tufts]{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity 1.4s;position:absolute;inset:0}[data-scene=summer] [data-summer-tufts][data-settled]{opacity:1}[data-scene=summer] [data-summer-tufts]>svg{display:block;position:absolute;overflow:visible}[data-scene=summer] [data-summer-tufts] [data-part=blade]{fill:var(--summer-blade)}[data-scene=summer] [data-summer-tufts] [data-part=blade-deep]{fill:var(--summer-blade-deep)}[data-scene=summer] [data-summer-tufts] [data-part=stem]{fill:none;stroke:var(--summer-blade-deep);stroke-width:1.2px;stroke-linecap:round}[data-scene=summer] [data-summer-tufts] [data-part=petal]{fill:var(--summer-petal);stroke:var(--summer-petal-contour);stroke-width:.6px}[data-scene=summer] [data-summer-tufts] [data-part=heart]{fill:var(--summer-heart)}@media (prefers-reduced-motion:reduce){[data-scene=summer] [data-summer-tufts]{transition:none}}@media (forced-colors:active){[data-scene=summer] [data-summer-tufts]{display:none}}[data-scene=winter]{--fm-scene-hero-lift:-6svh;--winter-snow-underside:light-dark(#dfe9f5,#dcf0fb);--winter-snow-contour:light-dark(#6a80a6,#6fa5c4);--winter-snow-contour-low:light-dark(#4f6590,#6fa5c4)}[data-scene=winter] [data-scene-accent]{position:relative}[data-scene=winter] [data-winter-snow]{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity 1.4s;position:absolute;inset:0}[data-scene=winter] [data-winter-snow][data-settled]{opacity:1}[data-scene=winter] [data-winter-snow]>span{background:linear-gradient(to bottom, #fff 35%, var(--winter-snow-underside));box-shadow:0 .012em 0 .012em var(--winter-snow-contour), inset 0 -.02em .03em color-mix(in srgb, var(--winter-snow-contour) 45%, transparent);rotate:var(--winter-snow-tilt,0deg);border-radius:50% 50% 34% 34%/100% 100% 16% 16%;position:absolute}[data-scene=winter][data-theme=light] [data-winter-snow]>span{box-shadow:0 0 0 .014em var(--winter-snow-contour), 0 .02em 0 .014em var(--winter-snow-contour-low), inset 0 -.03em .03em color-mix(in srgb, var(--winter-snow-contour) 55%, transparent)}@media (prefers-reduced-motion:reduce){[data-scene=winter] [data-winter-snow]{transition:none}}@media (forced-colors:active){[data-scene=winter] [data-winter-snow]{display:none}}