@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/dm-sans-latin-400-normal.2o7k1_w7_w7bj.woff2)format("woff2"),url(../media/dm-sans-latin-400-normal.12jnqtfk91av5.woff)format("woff")}
@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(../media/dm-sans-latin-500-normal.2f4st7_5x_v78.woff2)format("woff2"),url(../media/dm-sans-latin-500-normal.366wxi7rk3-vz.woff)format("woff")}
@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-400-normal.2zo21yor93qdc.woff2)format("woff2"),url(../media/instrument-serif-latin-400-normal.1tckdf9uwvrm7.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-normal.19gbeb610ur4n.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-normal.3nj-glub930lh.woff)format("woff")}
:root{--paper:#f5f2e9;--ink:#233b30;--muted:#5c675d;--line:#d4d8cc;--sage:#e1e8d8;--lavender:#e7e1ef;--peach:#f0dfd0;--white:#fffdf7;--rust:#9d4930;--on-photo:#fffdf7;--selection:#d9dfcd;--section-line:#233b3029;--shadow:#233b3014;--feature-border:0;--filter-text:var(--white);--portrait-overlay:linear-gradient(180deg, #e1e8d81f 0%, transparent 45%, #233b3033 68%, #15261df0 100%);--theme-sun:none;--theme-moon:block;--writing-ink:var(--ink);--writing-muted:var(--muted);--writing-accent:var(--rust);--writing-line:var(--section-line);--radius:18px;--header-height:105px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--paper:#18181b;--ink:#eeece8;--muted:#b9b7bc;--line:#414145;--sage:#303629;--lavender:#342e3b;--peach:#3b3026;--white:#212124;--rust:#efa789;--selection:#48464d;--section-line:#eeece82e;--shadow:#0003;--feature-border:1px solid var(--line);--filter-text:var(--paper);--portrait-overlay:linear-gradient(180deg, #e9e7e31f 0%, transparent 45%, #29292e33 68%, #18181bf0 100%);--theme-sun:block;--theme-moon:none;--writing-ink:#eee8f3;--writing-muted:#c4b9cd;--writing-accent:var(--rust);--writing-line:#eee8f329;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#18181b;--ink:#eeece8;--muted:#b9b7bc;--line:#414145;--sage:#303629;--lavender:#342e3b;--peach:#3b3026;--white:#212124;--rust:#efa789;--selection:#48464d;--section-line:#eeece82e;--shadow:#0003;--feature-border:1px solid var(--line);--filter-text:var(--paper);--portrait-overlay:linear-gradient(180deg, #e9e7e31f 0%, transparent 45%, #29292e33 68%, #18181bf0 100%);--theme-sun:block;--theme-moon:none;--writing-ink:#eee8f3;--writing-muted:#c4b9cd;--writing-accent:var(--rust);--writing-line:#eee8f329;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px)}body{background:var(--paper);color:var(--ink);margin:0;font:400 15px/1.65 DM Sans,sans-serif}button,input,textarea{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--rust);outline-offset:5px}button:disabled{cursor:default;opacity:.4}img{max-width:100%;height:auto}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.025em;margin-bottom:26px;font:400 clamp(48px,6.3vw,80px)/1 Instrument Serif,serif}h2{letter-spacing:-.01em;margin-bottom:0;font:400 38px/1.1 Instrument Serif,serif}h3{margin-bottom:12px;font:500 20px/1.3 DM Sans,sans-serif}p{margin-bottom:22px}::selection{background:var(--selection)}.site-shell{max-width:1240px;margin:auto}.site-header{z-index:20;background:var(--paper);border-bottom:1px solid var(--line);align-items:center;gap:28px;padding:30px 42px;display:flex;position:sticky;top:0}.wordmark{white-space:nowrap;align-items:center;gap:12px;font-weight:500;display:flex}.brand-mark{border:1px solid var(--ink);border-radius:50%;place-items:center;width:40px;height:40px;font:400 23px Instrument Serif,serif;display:grid;transform:rotate(-9deg)}nav{gap:25px;margin-left:auto;display:flex}nav a{color:var(--muted);padding:8px 0;font-size:13px;position:relative}nav a:after{content:"";background:var(--rust);transform-origin:0;height:1px;transition:transform .2s;position:absolute;bottom:2px;left:0;right:0;transform:scaleX(0)}nav a[aria-current],nav a:hover{color:var(--ink)}nav a[aria-current]:after,nav a:hover:after{transform:scaleX(1)}.contact-link{color:var(--rust);white-space:nowrap;font-size:13px}.header-actions{align-items:center;gap:18px;display:flex}.theme-control{border:1px solid var(--line);border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;padding:0;transition:background .2s;display:grid}.theme-control:hover{background:var(--white)}.theme-icon{width:20px;height:20px}.theme-icon-moon{display:var(--theme-moon)}.theme-icon-sun{display:var(--theme-sun)}main{min-height:65vh;padding:44px 42px 36px}.eyebrow{letter-spacing:.07em;text-transform:uppercase;color:var(--rust);margin:0 0 16px;font:400 11px/1.6 IBM Plex Mono,monospace}.lead{color:var(--muted);max-width:590px;margin-bottom:28px;font-size:18px;line-height:1.65}.hero{grid-template-columns:1.65fr 1fr;gap:42px;padding:18px 0 56px;display:grid}.hero h1{font-size:clamp(48px,6vw,76px)}.hero-links{flex-wrap:wrap;gap:26px;display:flex}.text-link{color:var(--rust);align-items:center;gap:7px;padding:8px 0;font-size:13px;font-weight:500;display:inline-flex}.arrow{transition:transform .2s;display:inline-block}.text-link:hover .arrow{transform:translate(3px,-3px)}.hero-portrait{aspect-ratio:4/5;background:var(--sage);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:420px;box-shadow:0 12px 28px var(--shadow);place-self:center end;display:block;position:relative;overflow:hidden;transform:rotate(1deg)}.hero-portrait img{object-fit:cover;object-position:50% 35%;filter:sepia(.12);width:100%;height:100%;transition:transform .6s cubic-bezier(.22,1,.36,1);display:block}.hero-portrait:after,.about-portrait:after{content:"";background:var(--portrait-overlay);pointer-events:none;position:absolute;inset:0}.hero-portrait:hover img,.hero-portrait:focus-visible img{transform:scale(1.035)}.portrait-caption{z-index:1;color:var(--on-photo);flex-direction:column;gap:7px;display:flex;position:absolute;bottom:26px;left:26px;right:26px}.portrait-label{text-transform:uppercase;letter-spacing:.1em;font:400 10px/1.6 IBM Plex Mono,monospace}.portrait-link{justify-content:space-between;align-items:center;gap:12px;font-size:15px;display:flex}.hero-portrait:hover .arrow,.hero-portrait:focus-visible .arrow{transform:translate(3px,-3px)}.color-section{border-radius:var(--radius);margin:20px 0 36px;padding:30px}.work-section{background:var(--sage)}.writing-section{--ink:var(--writing-ink);--muted:var(--writing-muted);--rust:var(--writing-accent);--section-line:var(--writing-line);background:var(--lavender);color:var(--ink)}.life-section{background:var(--peach)}.section-top{justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px;display:flex}.section-top .eyebrow{margin-bottom:9px}.journey{padding:12px 0 28px;scroll-margin-top:28px}.career-markers{flex-wrap:wrap;gap:16px 28px;margin:0 0 28px;padding:0;list-style:none;display:flex}.career-markers li{border-left:2px solid var(--line);flex-direction:column;gap:4px;padding-left:12px;display:flex}.career-markers strong{font-size:13px;font-weight:500}.career-markers span{color:var(--muted);font-size:11px}.journey-intro{max-width:700px;color:var(--muted);margin:16px 0 0;font-size:14px}.job-entry{border-bottom:1px solid var(--line)}.job-entry summary{cursor:pointer;grid-template-columns:145px minmax(0,1fr) minmax(0,1fr) 90px;align-items:center;gap:24px;padding:23px 0;list-style:none;display:grid}.job-entry summary::-webkit-details-marker{display:none}.job-period{color:var(--muted);font:400 11px/1.6 IBM Plex Mono,monospace}.job-heading{flex-direction:column;gap:4px;display:flex}.job-company{text-underline-offset:4px;width:fit-content;font-size:18px;font-weight:500}.job-company-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.job-yc{border:1px solid var(--line);color:var(--rust);background:var(--white);white-space:nowrap;border-radius:4px;align-items:center;gap:5px;padding:3px 6px;font:400 10px/1.4 IBM Plex Mono,monospace;display:inline-flex}.job-company:hover{color:var(--rust);text-decoration:underline}.company-arrow{color:var(--rust);font-size:13px}.job-role,.job-scope{color:var(--muted);font-size:13px}.job-toggle{color:var(--rust);white-space:nowrap;justify-content:end;align-items:center;gap:12px;font-size:12px;display:flex}.job-plus{font-size:22px;transition:transform .2s}.job-hide{display:none}.job-entry[open] .job-plus{transform:rotate(45deg)}.job-entry[open] .job-show{display:none}.job-entry[open] .job-hide{display:inline}.job-body{background:var(--white);border-radius:10px;grid-template-columns:1.5fr 1fr;gap:30px;margin:0 0 22px 169px;padding:24px;animation:.25s arrive;display:grid}.job-label{color:var(--rust);text-transform:uppercase;margin-bottom:14px;font:400 11px IBM Plex Mono,monospace}.job-body ul{color:var(--muted);margin:0;padding-left:18px;font-size:13px}.job-body li+li{margin-top:8px}.experience-more{min-height:44px;color:var(--rust);padding:14px 0;font-size:13px}.tags{flex-wrap:wrap;gap:7px;display:flex}.tag{background:var(--paper);color:var(--muted);border-radius:4px;padding:3px 8px;font-size:11px}.feature-stage{align-items:center;display:grid}.feature-stage.has-controls{grid-template-columns:44px minmax(0,1fr) 44px;gap:16px}.feature-viewport{touch-action:pan-y;border-radius:10px;min-width:0;overflow:hidden}.feature-track{align-items:stretch;transition:transform .45s cubic-bezier(.22,1,.36,1);display:flex}.feature-slide{flex:0 0 100%;min-width:0;display:flex}.feature-card{border:var(--feature-border);text-align:left;background:var(--white);border-radius:10px;grid-template-columns:1fr 1.15fr;gap:36px;width:100%;padding:30px;display:grid}.feature-cover{background:var(--paper);border-radius:7px;flex-direction:column;justify-content:space-between;min-width:0;min-height:240px;padding:24px;display:flex;position:relative;overflow:hidden}.feature-cover.has-image{padding:0}.feature-cover img{object-fit:cover;width:100%;height:100%;max-height:340px;transition:transform .35s}.feature-card:hover img{transform:scale(1.025)}.feature-cover.has-preview{min-height:280px;padding:0;position:relative}.website-preview{border:1px solid var(--line);border-radius:inherit;pointer-events:none;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.preview-screen{opacity:0;flex:1;min-height:0;transition:opacity .3s;position:relative;overflow:hidden}.is-loaded .preview-screen{opacity:1;background:#fff}.preview-screen img{object-fit:cover;object-position:top;pointer-events:none;width:100%;height:100%;max-height:none;position:absolute;top:0;left:0}.feature-card:hover .preview-screen img{transform:none}.preview-loading{background:var(--paper);color:var(--muted);border-radius:4px;padding:5px 8px;font-size:11px;position:absolute;bottom:12px;right:12px}.cover-index{color:var(--rust);font:400 11px IBM Plex Mono,monospace}.cover-word{color:var(--ink);overflow-wrap:anywhere;font:400 72px/1.1 Instrument Serif,serif}.feature-copy{flex-direction:column;min-width:0;display:flex}.category{color:var(--rust);letter-spacing:.04em;text-transform:uppercase;margin-bottom:18px;font:400 11px IBM Plex Mono,monospace;display:block}.feature-copy h3{margin-bottom:14px;font:400 40px/1.1 Instrument Serif,serif}.feature-copy p{color:var(--muted);flex:1;font-size:14px}.feature-copy .tags{margin-bottom:24px}.card-footer{border-top:1px solid var(--line);width:100%;color:var(--rust);flex-wrap:wrap;justify-content:space-between;gap:8px;padding-top:14px;font-size:12px;display:flex}.card-footer small{color:var(--muted);font-size:11px}.feature-controls{justify-content:center;align-items:center;gap:18px;margin-top:16px;display:flex}.rail-arrow{border:1px solid var(--muted);border-radius:50%;flex-shrink:0;width:44px;height:44px;font-size:20px;transition:background .2s}.rail-arrow:hover{background:var(--white)}.feature-pagination{flex-wrap:wrap;justify-content:center;max-width:100%;display:flex}.feature-dot{place-items:center;width:32px;height:44px;padding:0;display:grid}.feature-dot span{background:var(--muted);opacity:.4;border-radius:50%;width:7px;height:7px;transition:width .2s,opacity .2s}.feature-dot[aria-current] span{opacity:1;background:var(--ink);border-radius:10px;width:22px}.feature-position{text-align:center;color:var(--muted);margin:6px 0 0;font:400 11px/1.6 IBM Plex Mono,monospace}.writing-row{border-bottom:1px solid var(--section-line);text-align:left;justify-content:space-between;align-items:center;gap:20px;width:100%;padding:20px 0;display:flex}.writing-row:last-child{border-bottom:0}.writing-row h3{margin:7px 0 8px;font-size:18px}.writing-row p{color:var(--muted);max-width:660px;margin-bottom:0;font-size:13px}.writing-row .meta{color:var(--muted);text-transform:uppercase;font:400 11px IBM Plex Mono,monospace}.writing-row:hover .arrow{transform:translate(3px,-3px)}.writing-empty p{color:var(--muted);max-width:470px;margin-bottom:10px}.life-content{justify-content:space-between;align-items:center;gap:28px;display:flex}.life-content p{max-width:450px;color:var(--muted);margin-bottom:0;font-size:14px}.site-footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:24px;padding:25px 42px;font-size:11px;display:flex}.site-footer div{flex-wrap:wrap;gap:20px;display:flex}.archive-intro{margin:15px 0 36px}.archive-intro h1{font-size:clamp(48px,6vw,70px)}.archive-intro p:not(.eyebrow){color:var(--muted);max-width:560px}.archive-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:24px 0;display:flex}.search-field input{background:var(--white);border:1px solid var(--line);border-radius:8px;width:265px;max-width:100%;padding:11px 14px;font-size:14px}.filters{flex-wrap:wrap;gap:8px;display:flex}.filter{border:1px solid var(--line);border-radius:100px;min-height:38px;padding:8px 14px;font-size:12px}.filter[aria-pressed=true]{background:var(--ink);color:var(--filter-text);border-color:var(--ink)}.archive-count{color:var(--muted);margin-bottom:24px;font:400 11px IBM Plex Mono,monospace}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.project-card{background:var(--white);border-radius:12px;flex-direction:column;align-items:start;min-width:0;padding:26px;transition:transform .24s,box-shadow .24s;display:flex}.project-card:hover{box-shadow:0 10px 18px var(--shadow);transform:translateY(-4px)}.project-card h2{overflow-wrap:anywhere;margin-bottom:14px;font:500 23px/1.3 DM Sans,sans-serif}.project-card-main{flex-direction:column;flex:1;width:100%;min-width:0;display:flex}.project-card-preview,.project-card-preview.has-preview{aspect-ratio:16/10;width:100%;min-height:0;margin-bottom:22px}.project-card-preview .cover-word{font-size:clamp(28px,4vw,42px)}.project-card-preview>img,.project-detail-preview>img{object-fit:contain;max-height:none;position:absolute;inset:0}.project-detail-preview,.project-detail-preview.has-preview{aspect-ratio:1280/900;width:100%;max-width:900px;min-height:0;margin:28px auto 0}.project-detail-preview .cover-word{font-size:clamp(34px,6vw,72px)}.project-links{color:var(--rust);flex-wrap:wrap;gap:10px 20px;font-size:12px;display:flex}.project-links a:hover{text-underline-offset:4px;text-decoration:underline}.project-card .project-links{margin-bottom:18px}.project-card p{color:var(--muted);flex:1;font-size:14px}.project-card .tags{margin-bottom:24px}.load-more{border:1px solid var(--line);border-radius:100px;margin:28px auto 0;padding:12px 24px;font-size:13px;display:block}.empty-state{color:var(--muted);padding:24px 0}.inline-link{text-underline-offset:4px;text-decoration:underline}.detail-hero{padding:24px 0 38px}.detail-hero h1{overflow-wrap:anywhere;max-width:900px}.detail-meta{background:var(--sage);border-radius:10px;flex-wrap:wrap;align-items:center;gap:30px;margin:24px 0 0;padding:22px 24px;display:flex}.detail-meta div{min-width:100px;font-size:13px}.detail-meta small{text-transform:uppercase;color:var(--muted);margin-bottom:5px;font:400 11px IBM Plex Mono,monospace;display:block}.detail-links{color:var(--rust);gap:22px;display:flex}.detail-layout{align-items:start;gap:45px;display:flex}.detail-layout article{flex:1;min-width:0;max-width:780px}.toc{top:calc(var(--header-height) + 25px);flex:0 0 180px;font-size:12px;position:sticky}.toc p{text-transform:uppercase;color:var(--muted);font:400 11px IBM Plex Mono,monospace}.toc a{color:var(--muted);padding:8px 0;display:block}.toc a:hover{color:var(--rust)}.toc a.toc-nested{padding-left:12px}.readme{min-width:0;color:var(--muted);overflow-wrap:anywhere;line-height:1.85}.project-overview{max-width:780px}.project-overview li+li{margin-top:12px}.readme h1,.readme h2,.readme h3{color:var(--ink);scroll-margin-top:30px}.readme h1{font-size:42px}.readme h2{margin:32px 0 18px;font-size:34px}.readme h3{margin-top:28px}.readme p{margin-bottom:24px}.readme a{color:var(--rust);text-underline-offset:4px;text-decoration:underline}.readme pre{white-space:pre;background:var(--white);border-radius:8px;padding:20px;font:400 13px/1.7 IBM Plex Mono,monospace;overflow-x:auto}.readme code{font:400 .86em IBM Plex Mono,monospace}.readme :not(pre)>code{background:var(--white);border-radius:4px;padding:2px 5px}.readme blockquote{border-left:2px solid var(--rust);margin:28px 0;padding-left:22px}.readme table{border-collapse:collapse;max-width:100%;font-size:13px;display:block;overflow-x:auto}.readme th,.readme td{border-bottom:1px solid var(--line);text-align:left;padding:10px 15px}.readme img{border-radius:8px}.readme hr{border:0;border-top:1px solid var(--line);margin:32px 0}.reading-page{max-width:880px;margin:auto}.detail-source{color:var(--muted);border-top:1px solid var(--line);margin-top:36px;padding-top:22px;font-size:13px}.detail-source p{margin-bottom:8px}.about-layout{grid-template-columns:1.5fr 1fr;align-items:start;gap:32px;margin-bottom:36px;display:grid}.about-layout .color-section{margin-top:0}.portrait{aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius);width:100%;height:auto}.about-portrait{background:var(--sage);border:1px solid var(--line);box-shadow:0 12px 28px var(--shadow);margin:0;position:relative;overflow:hidden}.about-portrait img{object-fit:cover;object-position:50% 38%;filter:saturate(.72)contrast(.97);width:100%;height:100%;display:block}.about-portrait:before{content:"";background:var(--sage);opacity:.16;mix-blend-mode:color;pointer-events:none;position:absolute;inset:0}.about-layout p{color:var(--muted)}.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;background:var(--white);color:var(--ink);border:1px solid var(--ink);padding:12px 20px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:20px}.opening{z-index:50;background:var(--paper);pointer-events:none;place-items:center;animation:1.15s both curtain;display:grid;position:fixed;inset:0}.opening-stamp{text-align:center;animation:.7s both stamp}.opening-stamp span{border:1px solid var(--ink);border-radius:50%;place-items:center;width:110px;height:110px;margin:0 auto 22px;font:400 65px Instrument Serif,serif;display:grid}.opening-stamp small{letter-spacing:.18em;font:400 11px IBM Plex Mono,monospace}.page-enter{animation:.16s ease-out both page-arrive}@keyframes page-arrive{0%{opacity:.85;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}html[data-portrait-navigation] .page-enter{animation:none}html[data-portrait-navigation=fallback] .about-page{animation:.7s cubic-bezier(.22,1,.36,1) both portrait-page-in}html[data-portrait-navigation=fallback] .about-page .portrait{backface-visibility:hidden;animation:.7s cubic-bezier(.2,.5,.2,1) both portrait-fallback-in}@keyframes portrait-fallback-in{0%{filter:blur(8px);opacity:.2;transform:perspective(1400px)rotateY(-90deg)}to{filter:blur();opacity:1;transform:perspective(1200px)rotateY(0)}}::view-transition-group(.portrait-flip){z-index:2;animation-duration:1.1s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-image-pair(.portrait-flip){transform-style:preserve-3d;isolation:auto;animation:1.1s cubic-bezier(.4,0,.2,1) both portrait-card-turn}::view-transition-old(.portrait-flip){mix-blend-mode:normal;backface-visibility:hidden;border-radius:var(--radius);opacity:1;animation:1.1s cubic-bezier(.4,0,.2,1) both portrait-card-blur;overflow:hidden}::view-transition-new(.portrait-flip){mix-blend-mode:normal;backface-visibility:hidden;border-radius:var(--radius);opacity:1;animation:1.1s cubic-bezier(.4,0,.2,1) both portrait-card-blur;overflow:hidden}::view-transition-old(.portrait-flip){transform:rotateY(0)}::view-transition-new(.portrait-flip){transform:rotateY(180deg)}::view-transition-old(.portrait-page){mix-blend-mode:normal;animation:.5s cubic-bezier(.4,0,.2,1) both portrait-page-out}::view-transition-new(.portrait-page){mix-blend-mode:normal;animation:.8s cubic-bezier(.22,1,.36,1) .18s both portrait-page-in}@keyframes portrait-card-turn{0%{transform:perspective(1400px)rotateY(0)}to{transform:perspective(1400px)rotateY(180deg)}}@keyframes portrait-card-blur{0%,to{filter:blur()}45%,55%{filter:blur(7px)}}@keyframes portrait-page-out{0%{filter:blur();opacity:1;transform:translateY(0)scale(1)}to{filter:blur(8px);opacity:0;transform:translateY(-4px)scale(.995)}}@keyframes portrait-page-in{0%{filter:blur(8px);opacity:0;transform:translateY(4px)scale(.995)}to{filter:blur();opacity:1;transform:translateY(0)scale(1)}}[data-reveal].revealed{animation:.5s both arrive}@keyframes curtain{0%,62%{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes stamp{0%{opacity:0;transform:scale(.93)rotate(-5deg)}55%,to{opacity:1;transform:scale(1)rotate(0)}}@keyframes arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (max-width:800px){:root{--header-height:184px}.site-header{grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:22px;display:grid}nav{grid-area:2/1/auto/-1;justify-content:space-between;gap:14px;width:100%;margin:0}.header-actions{display:contents}.theme-control{grid-area:1/2}.site-header .contact-link{grid-column:1/-1;justify-self:end}main{min-height:65vh;padding:30px 22px}.hero{grid-template-columns:1fr;gap:22px;padding-bottom:34px}.hero-portrait{aspect-ratio:1;justify-self:center;max-width:360px;margin:6px 0 12px;transform:none}.hero h1{font-size:clamp(45px,10vw,62px)}h2{font-size:33px}.color-section{padding:22px}.section-top{flex-wrap:wrap;align-items:start;gap:12px}.job-entry summary{grid-template-columns:minmax(0,1fr) 82px;gap:10px;padding:21px 0}.job-period{grid-column:1/-1}.job-heading{grid-area:2/1}.job-toggle{grid-area:2/2}.job-scope{grid-column:1/-1}.job-body{grid-template-columns:1fr;gap:24px;margin-left:0;padding:22px}.feature-card{grid-template-columns:1fr;gap:24px;padding:20px}.feature-stage.has-controls{grid-template-columns:1fr 1fr;gap:14px}.feature-stage .feature-viewport{grid-area:1/1/auto/-1}.feature-stage .rail-arrow:last-child{justify-self:end}.feature-cover{min-height:130px;padding:18px}.feature-cover img{object-fit:contain;max-height:200px}.feature-cover.has-preview{aspect-ratio:16/10;min-height:0}.cover-word{font-size:48px}.feature-copy h3{font-size:33px}.feature-controls{gap:12px}.feature-dot{width:28px}.life-content{display:block}.life-content p{margin-bottom:14px}.site-footer{padding:22px}.project-grid{grid-template-columns:1fr}.search-field,.search-field input{width:100%}.detail-layout{display:block}.toc{flex-wrap:wrap;gap:8px 18px;margin-bottom:28px;display:flex;position:static}.toc p{width:100%;margin-bottom:0}.toc a.toc-nested{padding-left:0}.detail-meta{gap:20px}.about-layout{grid-template-columns:1fr}.portrait{grid-row:1;max-width:420px;margin:auto}.hero-links{gap:12px 24px}.reading-page h1{font-size:48px}}@media (pointer:coarse){nav a,.filter,.text-link{min-height:44px}input[type=search]{font-size:16px}.feature-pagination{max-width:calc(100% - 112px)}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-image-pair(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}::view-transition-old(.portrait-flip){opacity:0}::view-transition-new(.portrait-flip){transform:none}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.opening{display:none!important}html{scroll-behavior:auto}}
