@font-face{font-family:Open Sans;src:url(./open-sans-bold-BgrFBrua.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Open Sans;src:url(./open-sans-BCdjR_up.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#10120e;--ink:#f0f2e9;--muted:#b0b8a5;--accent:#a9d65e;--lime:#a9d65e;--rule:#343b2b;--panel:#191e15;--accent-hover:#c4e893;--ease-out:cubic-bezier(.16, 1, .3, 1);--display:"Open Sans", sans-serif;--body:"Open Sans", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.7}::selection{background:var(--accent);color:var(--paper)}*{scrollbar-width:thin;scrollbar-color:var(--muted) var(--paper)}a{color:inherit;text-underline-offset:.25em;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,video:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button,input,textarea,select{font:inherit}button,summary{cursor:pointer}input,textarea{caret-color:var(--accent)}img{max-width:100%;height:auto;display:block}figure{margin:0}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.025em;text-wrap:balance;color:var(--ink);font-weight:700;line-height:1.2}h1{margin:0;font-size:clamp(2.8rem,5vw,4.5rem)}h2{margin:0 0 1.25rem;font-size:clamp(1.8rem,2.6vw,2.5rem)}h3{margin:0 0 .8rem;font-size:1.8rem}h4{margin:1.4rem 0 1rem;font-size:1.75rem}p{max-width:70ch;margin:0 0 1.25rem}em{color:var(--accent);font-style:normal}.wrap{width:min(1320px,100% - 96px);margin-inline:auto}.accent{color:var(--accent)}.skip-link{z-index:10;color:var(--paper);background:var(--ink);padding:.75rem 1rem;position:fixed;top:-100px;left:1rem}.skip-link:focus{top:1rem}.masthead{justify-content:space-between;align-items:center;gap:2rem;min-height:84px;display:flex}.masthead-band{background:var(--paper);color:var(--ink);border-bottom:1px solid var(--rule)}.masthead-band .wordmark{color:#fff;align-items:center;gap:.8rem;display:inline-flex}.monogram{width:36px;height:40px;transition:transform .32s var(--ease-out);flex:0 0 36px;position:relative}.monogram img{object-fit:contain;width:100%;height:100%;transition:opacity .24s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.monogram-hover,.wordmark:is(:hover,:focus-visible) .monogram-base{opacity:0}.wordmark:is(:hover,:focus-visible) .monogram-hover{opacity:1}.wordmark:is(:hover,:focus-visible) .monogram{transform:rotate(-8deg)}.wordmark{transition:color .18s}.masthead-band .wordmark:is(:hover,:focus-visible){color:var(--accent)}.masthead-band a:hover,.masthead-band .site-nav a[aria-current]{color:var(--lime)}.masthead-band a:focus-visible{outline-color:var(--lime)}.wordmark{font:700 1.3rem/1.2 var(--display);letter-spacing:-.025em;white-space:nowrap;color:var(--accent);text-decoration:none}.site-nav{align-items:center;gap:2rem;display:flex}.site-nav a{padding:.6rem 0;font-size:.94rem;text-decoration:none;transition:color .16s;position:relative}.site-nav a:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .24s var(--ease-out);position:absolute;inset:auto 0 0;transform:scaleX(0)}.site-nav a[aria-current]{color:var(--accent)}.site-nav a:is(:hover,:focus-visible,[aria-current]):after{transform:scaleX(1)}.admin-nav{border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:1.5rem;padding-block:.8rem;font-size:.9rem;display:flex}.admin-nav form{margin:0 0 0 auto}.text-button{color:var(--ink);text-underline-offset:.25em;background:0 0;border:0;padding:0;text-decoration:underline}.home-hero{background:var(--paper);min-height:690px;color:var(--ink);position:relative;overflow:hidden}.hero-landscape{object-fit:cover;object-position:center 65%;width:100%;height:100%;position:absolute;inset:0}.hero-film{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .65s var(--ease-out);position:absolute;inset:0}.film-visible .hero-film{opacity:1}.home-hero:after{content:"";pointer-events:none;background:#080e05b0;position:absolute;inset:0}.hero-content{z-index:1;text-align:left;padding-block:90px 135px;position:relative}.hero-content h1{color:#fff;letter-spacing:-.03em;font-size:clamp(2.75rem,5.1vw,4.8rem)}.hero-role{color:var(--lime);margin:1.3rem 0;font-size:1.25rem;font-weight:700}.hero-description{color:#fff;margin:1.5rem 0 1rem;font-size:clamp(1.25rem,2.3vw,1.9rem);line-height:1.5}.hero-background{color:#dce6d1;margin-bottom:2rem;font-size:.94rem}.hero-actions{gap:1rem;display:flex}.hero-actions .button{background:var(--lime);border-color:var(--lime);color:var(--paper)}.hero-actions .button:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.hero-actions .button-outline{color:#fff;background:0 0;border-color:#fff}.hero-actions .button-outline:hover{color:var(--paper);background:#fff}.hero-social{gap:1.5rem;margin-top:1.5rem;font-size:.9rem;display:flex}.hero-social a{color:#fff}.home-hero a:focus-visible,.home-hero button:focus-visible{outline-color:var(--lime)}.hero-film-controls{z-index:1;justify-content:flex-end;align-items:end;gap:1rem;font-size:.8rem;display:flex;position:absolute;bottom:1.8rem;left:0;right:0}.hero-film-controls>div{min-width:44px;min-height:44px}.film-toggle{color:#e1e8d8;width:44px;height:44px;animation:film-control-arrive .3s var(--ease-out) both;background:#10120e59;border:1px solid #76816a;border-radius:50%;place-items:center;padding:0;transition:background .16s,border-color .16s,color .16s;display:inline-grid}.film-toggle[hidden]{display:none}.film-toggle:hover{background:var(--paper);border-color:var(--accent);color:var(--accent)}.film-toggle:disabled{cursor:wait}.film-icon{pointer-events:none;opacity:0;transition:opacity .18s ease, transform .24s var(--ease-out);grid-area:1/1;transform:scale(.85)}.film-toggle[data-playback=paused] .film-icon-play,.film-toggle[data-playback=playing] .film-icon-pause,.film-toggle[data-playback=loading] .film-icon-loading{opacity:1;transform:scale(1)}.film-toggle[data-playback=loading] .film-icon-loading{animation:1s linear infinite film-loading-turn}@keyframes film-control-arrive{0%{opacity:0}to{opacity:1}}@keyframes film-loading-turn{to{transform:rotate(360deg)}}.film-status{color:#fff;max-width:40ch;margin:.5rem 0 0}figcaption{color:var(--muted);justify-content:space-between;gap:1rem;padding-top:.9rem;font-size:.8rem;display:flex}figcaption a{align-items:center;gap:.5rem;display:inline-flex}.arrow{vertical-align:middle;transition:transform .24s var(--ease-out);flex:none}a:is(:hover,:focus-visible) .arrow,button:is(:hover,:focus-visible) .arrow{transform:translate(3px)}.button{border:1px solid var(--accent);background:var(--accent);min-height:52px;color:var(--paper);transition:background .18s ease, border-color .18s ease, transform .12s var(--ease-out);border-radius:3px;justify-content:center;align-items:center;gap:1rem;padding:.8rem 1.35rem;font-size:.95rem;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--paper)}.button-outline{color:var(--accent);background:0 0}.button:disabled{background:var(--muted);border-color:var(--muted);color:var(--paper);cursor:wait}.button:active:not(:disabled),.film-toggle:active:not(:disabled),.btn:active:not(:disabled){transform:translateY(1px)scale(.985)}.text-link{color:var(--accent);align-items:center;gap:.8rem;font-size:.95rem;display:inline-flex}.text-link,.project-title :is(h2,h3) a,.hero-social a,.site-footer nav a,.contact-links a{width:fit-content;text-decoration:none;position:relative}.project-title :is(h2,h3) a{display:inline-block}.text-link:after,.project-title :is(h2,h3) a:after,.hero-social a:after,.site-footer nav a:after,.contact-links a:after{content:"";opacity:.55;transform-origin:0;height:1px;transition:transform .26s var(--ease-out), opacity .16s ease;pointer-events:none;background:currentColor;position:absolute;inset:auto 0 -.15em;transform:scaleX(.35)}.text-link:is(:hover,:focus-visible):after,.project-title :is(h2,h3) a:is(:hover,:focus-visible):after,.hero-social a:is(:hover,:focus-visible):after,.site-footer nav a:is(:hover,:focus-visible):after,.contact-links a:is(:hover,:focus-visible):after{opacity:1;transform:scaleX(1)}@keyframes link-settle{0%{transform:scaleX(.35)scaleY(1)}65%{transform:scaleX(1.015)scaleY(1.35)}to{transform:scaleX(1)scaleY(1)}}@media (hover:hover) and (pointer:fine){.text-link:hover:after,.project-title :is(h2,h3) a:hover:after,.hero-social a:hover:after,.site-footer nav a:hover:after,.contact-links a:hover:after{animation:link-settle .32s var(--ease-out) both}}.section-heading{justify-content:space-between;align-items:start;gap:2rem;margin-bottom:3rem;display:flex}.section-heading h2{color:var(--accent)}.work-band{background:var(--panel);padding-block:4rem}.work-band .project-spread{margin-bottom:4rem}.section-heading p{max-width:34ch;color:var(--muted);margin-top:.25rem}.project-spread{grid-template-columns:1.5fr 1fr;align-items:center;gap:4rem;margin-bottom:5.5rem;display:grid}.project-reverse{grid-template-columns:1fr 1.5fr}.project-reverse .project-gallery{order:2}.project-media{background:var(--panel);min-width:0;text-decoration:none;display:block;position:relative;overflow:hidden}.project-media:after{content:"";border:1px solid var(--accent);opacity:0;pointer-events:none;transition:opacity .2s;position:absolute;inset:0}.project-media:is(:hover,:focus-visible):after{opacity:.8}.project-media>img{aspect-ratio:1.6;object-fit:contain;width:100%;transition:transform .45s var(--ease-out)}.project-deoxy .project-media{background:#edf0ef}.project-novella .project-media{background:#f3efe3}.project-novella .project-media>img{aspect-ratio:1.44;object-fit:cover;object-position:top}.project-media:is(:hover,:focus-visible)>img{transform:scale(1.012)}.project-stack-preview{background:var(--paper);padding:1rem 1.25rem}.project-stack-preview .technology-list{color:var(--ink);gap:.75rem 1rem;margin:0}.project-stack-preview .technology-list img{aspect-ratio:auto}.project-detail .page-heading>.technology-list{margin-bottom:1.5rem}@media (hover:hover) and (pointer:fine){.project-stack-preview{opacity:0;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);position:absolute;inset:auto 0 0;transform:translateY(.5rem)}.project-spread:hover .project-stack-preview,.project-spread:focus-within .project-stack-preview{opacity:1;transform:none}}.project-title{padding-bottom:.25rem}.project-title :is(h2,h3){margin-bottom:.35rem;font-size:2rem}.project-title :is(h2,h3) a{color:var(--accent);text-decoration:none}.project-title span{color:var(--muted);font-size:.82rem}.project-copy p{color:var(--muted)}.project-copy .project-summary{max-width:28ch;margin:1.4rem 0 1rem;font-size:1.3rem}.video-link{width:fit-content;margin-top:.8rem;display:block}.project-substrate .project-media{background:#141610}.project-substrate .project-media>img{aspect-ratio:1.928}.project-gallery{min-width:0;padding-top:18px}.gallery-deck{isolation:isolate;position:relative}.gallery-ready .gallery-deck:before,.gallery-ready .gallery-deck:after{content:"";z-index:-1;background:var(--panel);border:1px solid var(--accent);backface-visibility:hidden;transform-origin:50% 90%;transition:transform .42s var(--ease-out), border-color .24s var(--ease-out);border-radius:8px 18px 6px 12px;position:absolute;inset:0}.gallery-ready .gallery-deck:before,.gallery-ready .gallery-deck:after,.gallery-frame:after{filter:blur(.35px)}.gallery-ready .gallery-deck:before{transform:translate(-4px,-9px)rotate(-1.2deg)}.gallery-ready .gallery-deck:after{border-color:var(--muted);transform:translate(4px,-18px)rotate(1.2deg)}.project-gallery:is(:hover,:focus-within) .gallery-deck:before{transform:translate(-6px,-13px)rotate(-1.8deg)}.project-gallery:is(:hover,:focus-within) .gallery-deck:after{border-color:var(--accent);transform:translate(6px,-24px)rotate(1.8deg)}.gallery-frame{aspect-ratio:1.6;border-radius:3px}.project-novella .gallery-frame,.project-sail .gallery-frame{aspect-ratio:1.44}.project-substrate .gallery-frame{aspect-ratio:1.928}.gallery-frame>.gallery-shot{aspect-ratio:auto;object-fit:contain;object-position:center;opacity:0;width:100%;height:100%;transition:opacity .24s var(--ease-out), transform .42s var(--ease-out);position:absolute;inset:0;transform:scale(.994)}.gallery-frame>.gallery-shot.is-current{opacity:1;transform:none}.gallery-frame:is(:hover,:focus-visible)>.gallery-shot.is-current{transform:scale(1.008)}.gallery-toolbar{justify-content:space-between;align-items:center;gap:.75rem;min-height:44px;margin-top:.75rem;display:flex}.gallery-toolbar[hidden]{display:none}.gallery-caption{color:var(--muted);font-size:.8rem}.gallery-controls{flex-shrink:0;gap:.25rem;display:flex}.gallery-step{width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:grid}.gallery-step span{width:26px;height:3px;transition:transform .18s var(--ease-out), color .18s var(--ease-out);background:currentColor;border-radius:2px 4px;display:block}.gallery-step[aria-pressed=true],.gallery-step:hover{color:var(--accent)}.gallery-step[aria-pressed=true] span{transform:scaleY(1.7)}.gallery-error{color:var(--muted);margin-top:.5rem;font-size:.875rem}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (hover:none),(pointer:coarse){.project-gallery .gallery-frame{aspect-ratio:auto}.gallery-frame:before{content:"";aspect-ratio:1.6;display:block}.gallery-frame>.gallery-shot{aspect-ratio:1.6;height:auto}.gallery-frame .project-stack-preview{position:relative}}.substrate-diagram{background:var(--panel);color:var(--ink);flex-direction:column;justify-content:space-between;min-height:350px;padding:2rem;display:flex}.diagram-title{justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:2rem;display:flex}.diagram-title span:first-child{font:700 1.8rem var(--display)}.diagram-title span:last-child{color:#bac9bc;font-size:.75rem}.diagram-flow{align-items:center;display:flex}.diagram-node{border:1px solid #78867a;flex:1;min-width:0;padding:.95rem .8rem}.diagram-node span,.diagram-node small{color:#bac9bc;font-size:.66rem;display:block}.diagram-node strong{padding-block:.5rem;font-size:.95rem;font-weight:600;line-height:1.3;display:block}.diagram-connector{background:#bac9bc;flex:0 0 16px;height:1px}.diagram-observe{color:#bac9bc;justify-content:center;gap:1.5rem;padding:1.2rem 0;font-size:.7rem;display:flex}.substrate-diagram p{border-top:1px solid #78867a;margin:0;padding-top:1.6rem;font-size:.85rem}.bio-section{grid-template-columns:1fr 1.5fr;gap:5rem;padding-block:4rem 5rem;display:grid}.bio-section h2{color:var(--accent)}.about-introduction{padding-right:2rem}.about-introduction p{color:var(--muted)}.bio-copy{max-width:65ch}.large-copy{font-size:1.25rem;line-height:1.7}.bio-copy>p:not(.large-copy){color:var(--muted)}.bio-copy .personal-heading{margin-top:3rem;font-size:1.7rem}.blog-category{color:var(--muted);font-size:.8rem}.site-footer nav{flex-wrap:wrap}.contact-invitation{justify-content:space-between;align-items:center;gap:2rem;padding-block:4rem;display:flex}.contact-invitation h2{margin-bottom:.75rem}.contact-invitation p{color:var(--muted);margin-bottom:0}.site-footer{color:var(--ink);border-top:1px solid var(--rule);background:#080a06;padding-block:2.5rem;font-size:.8rem}.footer-inner{grid-template-columns:1.5fr 1fr 1fr;gap:2rem;display:grid}.site-footer .wordmark,.site-footer nav a{color:var(--lime)}.site-footer a:hover{color:#fff}.site-footer p{color:var(--muted);margin-top:.6rem;margin-bottom:0}.site-footer a:focus-visible{outline-color:var(--lime)}.site-footer nav{align-items:start;gap:1.5rem;padding-top:.3rem;display:flex}.site-footer nav a{min-height:24px}.site-footer .copyright{text-align:right;margin-top:0}.page-heading{isolation:isolate;background:url(./mountain-header-vnE-C2ax.jpg) 50% 45%/cover;margin-block:1rem 3rem;padding:3rem 2.5rem;position:relative}.page-heading:before{content:"";z-index:-1;background:#0a0f07e6;position:absolute;inset:0}.page-heading h1{max-width:20ch;color:var(--accent);font-size:clamp(2.5rem,4vw,3.7rem)}.page-deck{color:var(--ink);max-width:55ch;margin-top:1.5rem;margin-bottom:0;font-size:1.1rem}.page-heading .button{margin-top:1.5rem}.back-link{color:var(--muted);margin-bottom:2rem;font-size:.9rem;display:inline-block}.detail-media img{width:100%}.detail-media{margin-bottom:3rem}.detail-media .substrate-diagram{min-height:480px;padding:3rem 5rem}.detail-media .diagram-node{padding:2rem}.detail-media .diagram-node strong{font-size:1.5rem}.detail-media .diagram-node small,.detail-media .diagram-node span{font-size:.9rem}.project-story{grid-template-columns:1fr 1.5fr;gap:4rem;padding-block:2rem 4rem;display:grid}.project-story h2{max-width:15ch}.focus-list{border-top:1px solid var(--rule);color:var(--muted);margin:0;padding:1rem 0 0;font-size:.9rem;list-style:none}.focus-list li{margin-bottom:.6rem;margin-right:1.5rem;display:inline-block}.project-design{border-top:1px solid var(--rule);grid-template-columns:1fr 1.5fr;gap:4rem;padding-block:2.5rem 3.5rem;display:grid}.project-design h2{max-width:23ch;color:var(--accent);font-size:1.7rem}.project-design p{color:var(--muted)}.walkthrough-section{padding-bottom:4rem}.walkthrough-section .section-heading p{max-width:55ch}.project-video{aspect-ratio:50/24.375;background:var(--panel);width:100%;display:block}.media-description{color:var(--muted);margin-block:1rem .5rem;font-size:.85rem}.media-status{color:var(--accent);margin-top:1rem}.project-next{border-top:1px solid var(--rule);align-items:baseline;gap:3rem;padding-block:3rem;display:flex}.project-next h2{margin-right:auto}.project-next a{align-items:center;gap:1rem;display:inline-flex}.archive-section{padding-bottom:4rem}.organic-accordion{overflow-anchor:none}.accordion-moving{overflow:clip}.accordion-moving>summary:focus-visible{outline-offset:-4px}.archive-content{padding-top:.5rem;display:flow-root}summary{font-family:var(--display);border-top:1px solid var(--rule);padding-block:1.5rem;font-size:1.6rem;list-style-position:outside}.archive-toggle{grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem 2rem;list-style:none;display:grid}.archive-toggle::-webkit-details-marker{display:none}.archive-caption{color:var(--muted);font-family:var(--body);justify-self:end;font-size:.9rem}.archive-label{transition:color .16s}.archive-toggle:is(:hover,:focus-visible) .archive-label{color:var(--accent)}.archive-organism{isolation:isolate;pointer-events:none;place-items:center;width:56px;height:48px;display:grid;position:relative}.archive-icon{color:var(--paper);position:relative}.archive-blob{z-index:-1;background:var(--accent);transition:transform .46s var(--ease-out), border-radius .46s var(--ease-out), background .18s ease;position:absolute}.archive-blob-main{border-radius:46% 54% 62% 38%/40% 45% 55% 60%;inset:4px 8px 4px 4px;transform:rotate(-12deg)}.archive-blob-satellite{background:#6e9139;border-radius:60% 40% 46% 54%/42% 65% 35% 58%;width:10px;height:12px;top:1px;right:0;transform:rotate(18deg)}.archive-toggle:is(:hover,:focus-visible) .archive-blob-main{background:var(--accent-hover);border-radius:60% 40% 42% 58%/56% 64% 36% 44%;transform:rotate(6deg)scale(1.06,.96)}.archive-toggle:is(:hover,:focus-visible) .archive-blob-satellite{transform:translate(-2px,3px)rotate(-18deg)}.archive-vertical{transform-origin:12px 12px;transition:transform .22s var(--ease-out)}.organic-accordion[open]:not([data-expanded]) .archive-vertical,.organic-accordion[data-expanded=true] .archive-vertical{transform:scaleY(0)}.organic-accordion[open]:not([data-expanded]) .archive-blob-main,.organic-accordion[data-expanded=true] .archive-blob-main{border-radius:36% 64% 46% 54%/52% 38% 62% 48%;transform:rotate(12deg)scale(1.08,.95)}.organic-accordion[open]:not([data-expanded]) .archive-blob-satellite,.organic-accordion[data-expanded=true] .archive-blob-satellite{transform:translate(-4px,10px)rotate(30deg)scale(.85,1.1)}.archive-grid{grid-template-columns:repeat(4,1fr);gap:2rem;margin-top:2rem;display:grid}.archive-grid img{aspect-ratio:16/10;object-fit:cover;width:100%}.archive-grid h3{margin-top:1rem;font-size:1.3rem}.archive-grid p{color:var(--muted);font-size:.9rem}.experience-row{border-top:1px solid var(--rule);grid-template-columns:1fr 2fr;gap:3rem;padding-block:2rem;display:grid}.experience-row h3{font-size:1.8rem}.experience-period{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9rem}.job-role{font-weight:600}.experience-description{color:var(--muted);max-width:62ch}.technology-list{color:var(--muted);flex-wrap:wrap;gap:.75rem 1.5rem;margin:1.5rem 0 0;padding:0;font-size:.875rem;list-style:none;display:flex}.technology-list li{white-space:nowrap;align-items:center;gap:.5rem;display:flex}.technology-list img{object-fit:contain;width:24px;height:24px}.technology-list img[src$="/express.svg"],.technology-list img[src$="/wordpress.svg"]{filter:invert()}.technology-list img[src$="/nextjs.svg"]{background:var(--ink);border-radius:50%}.technology-list img[src$="/aws.svg"],.technology-list img[src$="/awscdk.svg"],.technology-list img[src$="/amazonalb.svg"]{background:var(--ink);border-radius:2px;padding:2px}.technology-list img:is([src$="/aurelia.svg"],[src$="/nx.svg"],[src$="/reactrouter.svg"],[src$="/radixui.svg"],[src$="/shadcnui.svg"],[src$="/framer.svg"],[src$="/lucide.svg"],[src$="/posthog.svg"],[src$="/sentry.svg"],[src$="/githubactions.svg"]){filter:invert()}.experience-context .technology-list{margin:0 0 2rem}.experience-context{border-top:1px solid var(--rule);grid-template-columns:1fr 1fr;gap:5rem;padding-block:3rem;display:grid}.experience-context p{color:var(--muted)}.experience-context h3{font-size:1.3rem}.practice-section{border-top:1px solid var(--rule);grid-template-columns:1fr 1.5fr;gap:4rem;padding-block:3rem 5rem;display:grid}.frontend-section{border-top:1px solid var(--rule);grid-template-columns:1fr 1.5fr;gap:5rem;padding-block:3rem 4rem;display:grid}.frontend-introduction h2{color:var(--accent);max-width:20ch}.frontend-introduction p{color:var(--muted)}.practice-list{margin:0}.practice-list>div{border-bottom:1px solid var(--rule);padding-block:1.4rem}.practice-list>div:first-child{padding-top:0}.practice-list dt{margin-bottom:.5rem;font-size:1.15rem;font-weight:700}.practice-list dd{color:var(--muted);max-width:65ch;margin:0}.contact-layout{grid-template-columns:1fr 1.3fr;gap:5rem;padding-bottom:5rem;display:grid}.contact-layout h2{font-size:1.9rem}.contact-email{overflow-wrap:anywhere;font-size:1.1rem}.contact-layout aside p{color:var(--muted);margin-top:1rem}.contact-links{gap:1.5rem;display:flex}.form-group{margin-bottom:1.5rem}label{margin-bottom:.5rem;font-size:.9rem;font-weight:600;transition:color .16s;display:block}.form-group:focus-within label{color:var(--accent)}input:not([type=hidden]),textarea,select,.form-control{background:var(--paper);width:100%;color:var(--ink);min-height:48px;box-shadow:none;border:1px solid #78856b;border-radius:3px;padding:.85rem 1rem;transition:border-color .16s,background .16s}input:focus,textarea:focus,select:focus,.form-control:focus{border-color:var(--accent);box-shadow:none}textarea,textarea.form-control{resize:vertical;height:auto}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}.optional,.field-hint,.form-note{color:var(--muted);font-size:.82rem;font-weight:400}.field-hint{margin-top:.6rem}.form-note{margin-top:1rem}.alert{border:1px solid;border-radius:0;margin-bottom:1.5rem;padding:1rem 1.25rem;font-size:.95rem}.alert ul{margin:0;padding-left:1.25rem}.alert-danger{color:#ffc5b5;background:#321e19;border-color:#946351}.alert-success{color:#c5e5a5;background:#203018;border-color:#788f59}.login-layout{max-width:460px;padding-block:4rem 6rem}.login-layout h1{margin-bottom:1rem;font-size:3.5rem}.login-layout>p{color:var(--muted);margin-bottom:2rem}.writing-row{border-bottom:1px solid var(--rule);grid-template-columns:1fr 2.5fr auto;align-items:baseline;gap:2rem;padding-block:1.5rem;display:grid}.writing-row time{color:var(--muted);font-size:.9rem}.writing-row h2,.writing-row h3{margin-bottom:.6rem;font-size:1.4rem}.writing-row h2 a,.writing-row h3 a{text-decoration:none}.writing-row p{color:var(--muted);margin-bottom:0;font-size:.95rem}.writing-section{margin-bottom:1rem;padding-top:4rem}.post-list{padding-bottom:5rem}.empty-state{border-top:1px solid var(--rule);padding:3rem 0 5rem}.empty-state p{color:var(--muted)}.article-header{max-width:900px}.article-meta{color:var(--muted);flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;font-size:.9rem;display:flex}.article-image{margin-bottom:3rem}.article-image img{object-fit:cover;width:100%;max-height:560px}.article-body{overflow-wrap:anywhere;max-width:70ch;margin-inline:auto;padding-bottom:3rem;font-size:1.15rem}.comments-section{border-top:1px solid var(--rule);max-width:760px;padding-block:3rem 5rem}.comment-item{border-bottom:1px solid var(--rule);padding-block:1.5rem}.comment-item header{justify-content:space-between;gap:1rem;display:flex}.comment-item time{color:var(--muted);font-size:.85rem}.comment-item p{white-space:pre-line;overflow-wrap:anywhere;margin-top:.8rem}#reply{margin-top:3rem}.pagination{flex-wrap:wrap;gap:.5rem;margin-top:2rem;padding:0;list-style:none;display:flex}.pagination a,.pagination span{border:1px solid var(--rule);padding:.35rem .8rem;display:block}.pagination .active span{background:var(--accent);color:var(--paper)}.pagination>li>a,.pagination>li>span{background:var(--paper);color:var(--ink);border-color:var(--rule)}.pagination>li>a:hover{background:var(--panel);color:var(--accent)}.pagination>.disabled>span{background:var(--paper);color:var(--muted);border-color:var(--rule)}.block-section{padding-block:3rem}.block-title{margin-bottom:2rem}.block-title h1{font-size:clamp(2rem,4vw,4rem)}.container{width:calc(100% - 96px);max-width:1320px}.modal-content{background:var(--paper);border-radius:0}.btn{border:1px solid var(--ink);color:var(--ink);transition:background .16s ease, color .16s ease, transform .12s var(--ease-out);background:0 0;border-radius:0}.btn:hover{background:var(--ink);color:var(--paper)}.close{color:var(--ink);opacity:1;text-shadow:none}.modal-header,.modal-footer{border-color:var(--rule)}.gel-material,.wordmark:is(:hover,:focus-visible) .monogram.gel-material{transform:translate3d(var(--gel-x,0px), var(--gel-y,0px), 0) rotate(var(--gel-angle,0deg)) scale(var(--gel-sx,1), var(--gel-sy,1));transition:background .18s,color .18s,border-color .18s}.gel-surface{z-index:-1;pointer-events:none;background:var(--gel-fill,var(--accent));border:1px solid var(--gel-border,var(--accent));border-radius:calc(3px + var(--gel-round,0px)) calc(3px + var(--gel-round,0px) * .5) / calc(3px + var(--gel-round,0px) * .5) calc(3px + var(--gel-round,0px));position:absolute;inset:-1px}.button.gel-control,.button.gel-control:hover,.hero-actions .button.gel-control,.hero-actions .button.gel-control:hover,.film-toggle.gel-control,.film-toggle.gel-control:hover{isolation:isolate;background:0 0;border-color:#0000;position:relative}.button.gel-control:active,.film-toggle.gel-control:active{transform:none}.button.gel-control:hover{--gel-fill:var(--accent-hover);--gel-border:var(--accent-hover)}.button-outline.gel-control{--gel-fill:transparent;--gel-border:var(--accent)}.hero-actions .button-outline.gel-control{--gel-fill:transparent;--gel-border:#fff}.hero-actions .button-outline.gel-control:hover{--gel-fill:#fff;--gel-border:#fff}.button.gel-control:disabled{--gel-fill:var(--muted);--gel-border:var(--muted)}.film-toggle.gel-control{--gel-fill:#10120e59;--gel-border:#76816a}.film-toggle.gel-control:hover{--gel-fill:var(--paper);--gel-border:var(--accent)}.film-toggle .gel-surface{border-radius:45% 55% 48% 52%/52% 45% 55% 48%}@media (width<=1050px){.wrap,.container{width:calc(100% - 64px)}.project-spread,.project-story,.bio-section,.practice-section,.frontend-section,.project-design{gap:2.5rem}.site-nav{gap:1.2rem}.substrate-diagram{padding:1.2rem}.diagram-node{padding:.7rem .5rem}.diagram-node strong{font-size:.8rem}.diagram-observe{gap:.8rem}}@media (width<=760px){.wrap,.container{width:calc(100% - 40px)}.masthead{flex-direction:column;align-items:start;gap:1rem;min-height:0;padding-block:1.5rem 1rem}.site-nav{flex-wrap:wrap;justify-content:space-between;gap:.75rem;width:100%}.site-nav a{font-size:.84rem}.home-hero{min-height:610px}.hero-content{padding-block:3.5rem 10rem}.hero-content h1{font-size:clamp(2.5rem,9vw,3.4rem)}.hero-role{max-width:26ch;font-size:1.2rem}.hero-description{max-width:36ch;font-size:1.25rem}.hero-description br{display:none}.hero-actions{gap:.6rem}.hero-actions .button{padding-inline:.9rem;font-size:.8rem}.hero-landscape{object-position:54% center}figcaption{font-size:.7rem}.section-heading{flex-direction:column;gap:.5rem;margin-bottom:2rem}.section-heading h2{margin-bottom:.5rem}.section-heading p{max-width:45ch}.project-spread,.project-reverse{grid-template-columns:1fr;gap:1.5rem;margin-bottom:3.5rem}.project-reverse .project-gallery{order:0}.project-copy .project-summary{max-width:27ch}.project-title :is(h2,h3){font-size:2rem}.project-media>img{aspect-ratio:1.55}.bio-section,.project-story,.practice-section,.frontend-section,.project-design{grid-template-columns:1fr;gap:1.25rem;padding-block:2.5rem 3rem}.bio-section h2 br{display:none}.large-copy{font-size:1.25rem}.contact-invitation{flex-direction:column;align-items:start;gap:1.5rem;padding-block:2.5rem}.site-footer{padding-block:2rem}.footer-inner{grid-template-columns:1fr 1fr;gap:1.5rem}.site-footer nav{flex-direction:column;align-items:end;gap:.5rem}.site-footer .copyright{text-align:left;grid-column:1/-1}.site-footer .wordmark{font-size:1.25rem}.page-heading{margin-bottom:2rem;padding:2.5rem 1rem}.page-heading h1{font-size:clamp(2.25rem,8vw,3rem)}.page-deck{margin-top:1.3rem;font-size:1rem}.work-band{padding-block:2.5rem}.experience-row{grid-template-columns:1fr;gap:.5rem;padding-block:1.5rem}.experience-period{margin-bottom:.5rem}.experience-row h3{font-size:1.6rem}.experience-context,.contact-layout{grid-template-columns:1fr;gap:2rem}.contact-layout{padding-bottom:3rem}.archive-toggle{grid-template-columns:1fr auto;gap:.5rem 1rem}.archive-caption{grid-area:2/1;justify-self:start}.archive-organism{grid-area:1/2/3}.archive-grid{grid-template-columns:1fr 1fr;gap:1.5rem}.detail-media .substrate-diagram{min-height:350px;padding:1.25rem}.detail-media .diagram-node{padding:.8rem .5rem}.detail-media .diagram-node strong{font-size:.85rem}.detail-media .diagram-node small,.detail-media .diagram-node span{font-size:.65rem}.project-next{flex-wrap:wrap;gap:1.5rem}.project-next h2{width:100%}.writing-row{grid-template-columns:1fr auto;gap:.7rem}.writing-row time{grid-column:1/-1}.writing-row h2,.writing-row h3{font-size:1.3rem}.writing-row p{font-size:.9rem}.article-meta{gap:.75rem}.hero-background{max-width:29ch}.hero-film-controls{align-items:start;bottom:1.2rem}.film-toggle{font-size:.8rem}.film-status{max-width:27ch}}@media (prefers-reduced-motion:reduce){.gallery-ready .gallery-deck:before,.gallery-ready .gallery-deck:after,.project-gallery:is(:hover,:focus-within) .gallery-deck:before,.project-gallery:is(:hover,:focus-within) .gallery-deck:after,.gallery-frame>.gallery-shot,.gallery-frame:is(:hover,:focus-visible)>.gallery-shot.is-current,.project-stack-preview{transform:none}html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.wordmark:is(:hover,:focus-visible) .monogram,a:is(:hover,:focus-visible) .arrow,button:is(:hover,:focus-visible) .arrow,.project-media:is(:hover,:focus-visible) img,.button:active,.film-toggle:active,.btn:active{transform:none}.gel-material{border-radius:3px;transform:none!important}.archive-blob,.archive-toggle:is(:hover,:focus-visible) .archive-blob,.organic-accordion[data-expanded] .archive-blob,.film-icon{transform:none}}
