:root{--paper: #f8f3ea;--paper-deep: #efe5d5;--white: #fffaf2;--ink: #1e1b18;--prose: #40382f;--muted: #6d6257;--soft: #9b8f80;--line: #ded1bf;--line-strong: #c9b9a5;--line-faint: rgba(222, 209, 191, .62);--coast: #5f7880;--coast-deep: #4e646d;--warm-deep: #78593a;--font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-serif: "Iowan Old Style", "Songti SC", "Noto Serif SC", Georgia, serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--shell: 1160px;--shell-pad: 20px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:4.5rem;text-rendering:optimizeLegibility}body{min-width:320px;overflow-x:hidden;background:linear-gradient(180deg,#fffaf2d1,#f8f3ea00),var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased}::selection{background:var(--coast);color:var(--white)}a{color:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--coast);outline-offset:3px}ul,ol{list-style:none}.site-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:max(14px,env(safe-area-inset-top)) max(var(--shell-pad),env(safe-area-inset-right),calc((100% - var(--shell)) / 2)) 14px max(var(--shell-pad),env(safe-area-inset-left),calc((100% - var(--shell)) / 2));border-bottom:1px solid rgba(222,209,191,.48);background:#faf6eeb8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.wordmark{font-family:var(--font-serif);font-size:1.05rem;font-weight:600;letter-spacing:.01em;text-decoration:none}.header-actions{display:flex;align-items:center;gap:10px}.github-link,.language-link{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border:1px solid var(--line);background:#fffaf28a;color:var(--ink);transition:border-color .16s ease,background .16s ease,transform .16s ease}.github-link{width:42px;border-radius:999px}.language-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;padding:0 16px;font-family:inherit;font-size:.94rem;font-weight:650;cursor:pointer}.github-link:hover,.github-link:focus-visible,.language-link:hover,.language-link:focus-visible{border-color:var(--line-strong);background:var(--white);transform:translateY(-1px)}.page{width:min(var(--shell),calc(100% - 2 * var(--shell-pad)));margin:0 auto}.home-page{padding-bottom:4rem}.hero{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:center;gap:clamp(2.5rem,5vw,5rem);min-height:clamp(26rem,calc(82svh - 4.5rem),44rem);padding:clamp(3.5rem,10vh,6.5rem) 0 clamp(3rem,8vh,4.5rem)}.hero-main{position:relative;z-index:1;max-width:44rem}.hero-name{font-size:clamp(2.9rem,6.5vw,4.75rem);font-weight:740;line-height:1.04;letter-spacing:0;text-wrap:balance}.hero-tagline{margin-top:1.25rem;color:var(--prose);font-family:var(--font-serif);font-size:clamp(1.15rem,1.5vw,1.35rem);line-height:1.65}.hero-kinetic-stage{display:grid;place-items:center;width:100%;min-width:0;aspect-ratio:1.42 / 1;overflow:hidden}.hero-kinetic-composition{position:relative;width:80%;max-width:760px;aspect-ratio:1.3 / 1;transform:translate3d(var(--kinetic-x, 0px),var(--kinetic-y, 0px),0);transition:transform .16s ease-out}.hero-kinetic-piece{position:absolute;top:0;left:0;will-change:transform;transition:transform 1.25s cubic-bezier(.22,1,.36,1)}.hero-kinetic-shape{width:100%;height:100%;border:1.6px solid #11100e;will-change:transform}.hero-kinetic-shape.solid{background:#11100e}.hero-kinetic-shape.soft{border-color:#11100e38;background:#11100e17}.hero-kinetic-shape.outline{background:transparent}.hero-kinetic-shape.circle{aspect-ratio:1 / 1;border-radius:50%}.hero-kinetic-shape.rounded{border-radius:26px}.hero-kinetic-shape.capsule{border-radius:999px}.hero-kinetic-shape.drift-1{animation:hero-kinetic-drift-1 11s ease-in-out infinite alternate}.hero-kinetic-shape.drift-2{animation:hero-kinetic-drift-2 12s ease-in-out -3s infinite alternate}.hero-kinetic-shape.drift-3{animation:hero-kinetic-drift-3 10s ease-in-out -5s infinite alternate}@keyframes hero-kinetic-drift-1{0%{transform:translate3d(0,-1.5px,0)}to{transform:translate3d(0,1.5px,0)}}@keyframes hero-kinetic-drift-2{0%{transform:translate3d(-1.5px,1px,0)}to{transform:translate3d(1.5px,-1px,0)}}@keyframes hero-kinetic-drift-3{0%{transform:translate3d(1px,1.5px,0)}to{transform:translate3d(-1.5px,-1.5px,0)}}.section{display:grid;grid-template-columns:.58fr 1fr;gap:clamp(1.75rem,5vw,4.5rem);padding:clamp(3rem,7vh,4rem) 0;border-top:1px solid var(--line-faint)}.section-header{grid-column:1}.section>:not(.section-header){grid-column:2}.section-number{display:block;margin-bottom:14px;color:var(--warm-deep);font-size:.76rem;font-weight:800;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}.section-title{font-size:clamp(1.7rem,2.7vw,2.4rem);font-weight:720;line-height:1.08;letter-spacing:0}.about-description{align-self:start;margin-top:calc(clamp(1.55rem,2.5vw,2.1rem)*1.1 + .7rem);padding-left:5.5rem;color:var(--prose);font-family:var(--font-serif);font-size:1.1rem;line-height:1.75}@media(min-width:56.0001rem){.section#about>.about-description{margin-top:calc(.76rem * 1.2 + 14px + (clamp(1.7rem,2.7vw,2.4rem) * 1.08 - 1.1rem * 1.75) / 2)}}.work-list{display:grid}.work-card{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:1rem}.work-card+.work-card{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--line-faint)}.work-index,.photo-count{color:var(--coast-deep);font-family:var(--font-mono);font-size:.76rem;letter-spacing:.05em}.work-name{font-size:clamp(1.55rem,2.5vw,2.1rem);font-weight:720;line-height:1.1}.work-desc{max-width:38rem;margin-top:.7rem;color:var(--prose);font-family:var(--font-serif);font-size:1.1rem;line-height:1.75}.action-link{display:inline-flex;align-items:center;gap:.5rem;min-height:42px;margin-top:1.4rem;border:1px solid var(--line-strong);border-radius:999px;background:#fffaf28a;padding:0 18px;color:var(--ink);font-size:.92rem;font-weight:650;text-decoration:none;transition:border-color .16s ease,background .16s ease,transform .16s ease}.action-link:hover,.action-link:focus-visible{border-color:var(--line-strong);background:var(--white);transform:translateY(-1px)}.blog-page{padding-bottom:4rem}.blog-layout{display:grid;grid-template-columns:minmax(0,48rem) minmax(8rem,13rem);align-items:start;gap:clamp(3rem,7vw,6.5rem);max-width:1100px;margin:0 auto;padding:clamp(4.5rem,10vh,7rem) 0 5rem}.blog-article{min-width:0}.blog-article-header{padding-bottom:1.7rem;border-bottom:1px solid var(--line-faint);text-align:left}.blog-title{overflow:hidden;margin-left:-.2em;color:var(--ink);font-family:var(--font-ui);font-size:clamp(1.2rem,2.1vw,1.8rem);font-weight:720;line-height:1.2;letter-spacing:-.03em;text-overflow:clip;white-space:nowrap}.blog-date{margin-top:.7rem;color:var(--muted);font-family:var(--font-ui);font-size:.82rem;line-height:1.4}.article-body{max-width:42rem;padding-top:clamp(2.6rem,6vw,4.5rem);color:var(--prose);font-family:Songti SC,"Noto Serif SC",STSong,serif;font-size:clamp(1.15rem,1.5vw,1.3rem);line-height:2.08;text-align:left}.article-body p+p{margin-top:1.35em}.other-articles{padding-top:.55rem;border-top:1px solid var(--line-faint);text-align:left}.other-articles-title{color:var(--muted);font-family:var(--font-ui);font-size:.78rem;font-weight:600}.other-articles nav{display:grid;gap:.9rem;margin-top:1rem}.other-articles a{color:var(--muted);font-size:.9rem;line-height:1.45;text-decoration:none;transition:color .16s ease}.other-articles a:hover,.other-articles a:focus-visible{color:var(--ink)}.article-pagination{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2rem;margin-top:clamp(4rem,8vw,6.5rem);border-top:1px solid var(--line)}.article-pagination>a,.pagination-placeholder{display:flex;min-width:0;min-height:5rem;flex-direction:column;justify-content:center;padding:1rem 0;color:var(--muted);font-size:.86rem;line-height:1.4;text-decoration:none;transition:color .16s ease}.article-pagination>a:hover,.article-pagination>a:focus-visible{color:var(--ink)}.article-pagination strong{overflow:hidden;margin-top:.2rem;color:var(--ink);font-size:.9rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.pagination-next{align-items:flex-end;text-align:right}.pagination-arrow{font-size:1rem}.article-index-button,.article-pagination.is-single{display:none}.blog-not-found{padding:7rem 0}.blog-not-found h1{font-size:clamp(1.7rem,3vw,2.5rem)}.blog-not-found a{display:inline-block;margin-top:1.5rem;color:var(--muted);text-decoration:underline;text-underline-offset:.2em}.article-directory{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;animation:article-directory-fade-in .24s ease both}.article-directory-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border:0;background:#1e1b182e;cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.article-directory-sheet{position:relative;z-index:1;display:flex;width:min(100%,40rem);max-height:min(82svh,42rem);flex-direction:column;overflow:hidden;border:1px solid rgba(201,185,165,.82);border-bottom:0;border-radius:18px 18px 0 0;background:#f8f3eaeb;box-shadow:0 -18px 48px #42301e1f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:article-directory-slide-up .24s cubic-bezier(.22,1,.36,1) both}.article-directory-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.15rem max(1.25rem,env(safe-area-inset-right)) 1rem max(1.25rem,env(safe-area-inset-left));border-bottom:1px solid var(--line-faint)}.article-directory-header h2{font-size:1.05rem;font-weight:680}.article-directory-header button{width:2rem;height:2rem;border:1px solid var(--line);border-radius:50%;background:#fffaf27a;color:var(--muted);font-family:inherit;font-size:1.25rem;line-height:1;cursor:pointer}.article-directory-list{overflow-y:auto;padding:0 max(1.25rem,env(safe-area-inset-right)) max(1.5rem,env(safe-area-inset-bottom)) 0 max(1.25rem,env(safe-area-inset-left));overscroll-behavior:contain}.article-directory-list a{display:block;padding:1rem 0;border-bottom:1px solid var(--line-faint);color:var(--muted);font-size:.95rem;line-height:1.5;text-decoration:none;transition:color .16s ease}.article-directory-list a:last-child{border-bottom:0}.article-directory-list a:hover,.article-directory-list a:focus-visible,.article-directory-list a[aria-current=page]{color:var(--ink)}.article-directory-list a[aria-current=page]{font-weight:650}@keyframes article-directory-fade-in{0%{opacity:0}to{opacity:1}}@keyframes article-directory-slide-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.photos-mode{overflow:hidden}.photos-mode #root{height:100svh;height:100dvh}.photos-mode .site-header{position:fixed;left:0;right:0}.photos-page{position:relative;width:100%;height:100svh;height:100dvh;min-height:100svh;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:none}.photo-stack{position:absolute;top:0;right:0;bottom:0;left:0}.photo-slide{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(8rem,12rem);align-items:center;gap:clamp(2rem,5vw,4.5rem);padding:max(5rem,calc(env(safe-area-inset-top) + 4.25rem)) max(var(--shell-pad),env(safe-area-inset-right),calc((100% - var(--shell)) / 2)) max(2.5rem,calc(env(safe-area-inset-bottom) + 2rem)) max(var(--shell-pad),env(safe-area-inset-left),calc((100% - var(--shell)) / 2));opacity:0;transform:translateY(20px);visibility:hidden;pointer-events:none;transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1),visibility 0s linear .6s;will-change:opacity,transform;z-index:0}.photo-slide.is-active{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto;transition-delay:0s;z-index:2}.photo-slide.is-entering,.photo-slide.is-leaving{visibility:visible}.photo-slide.is-entering{z-index:2}.photo-slide.is-leaving{z-index:1}.photo-slide.is-entering.from-next{opacity:0;transform:translateY(20px)}.photo-slide.is-entering.from-previous,.photo-slide.is-leaving.toward-next{opacity:0;transform:translateY(-20px)}.photo-slide.is-leaving.toward-previous{opacity:0;transform:translateY(20px)}.photo-visual{display:grid;place-items:center;width:100%;min-width:0;min-height:0}.photo-image{display:block;min-width:0;min-height:0;width:auto;height:auto;max-width:100%;max-height:min(66svh,42rem,calc(100dvh - 8.5rem));object-fit:contain}.photo-caption{display:flex;align-self:end;flex-direction:column;gap:.45rem;padding-bottom:.35rem}.photo-name{font-size:clamp(1.05rem,1.45vw,1.35rem);font-weight:650;line-height:1.25}.site-footer{border-top:1px solid var(--line-faint);color:var(--muted)}.footer-inner{display:flex;flex-wrap:wrap;align-items:baseline;width:min(var(--shell),calc(100% - 2 * var(--shell-pad)));margin:0 auto;gap:.9rem 2.2rem;padding:2.4rem 0 max(2.2rem,env(safe-area-inset-bottom))}.footer-mark{color:var(--ink);font-family:var(--font-serif);font-size:1rem;font-weight:600}.footer-links{display:flex;gap:1.4rem}.footer-links a{color:var(--muted);font-size:.93rem;text-decoration:none;transition:color .16s ease}.footer-links a:hover,.footer-links a:focus-visible{color:var(--ink)}.footer-copyright{margin-left:auto;font-size:.9rem}.footer-filings{display:flex;flex-basis:100%;flex-wrap:wrap;align-items:center;gap:.55rem 1.2rem;font-size:.86rem}.footer-filings a{text-decoration:none;transition:color .16s ease}.footer-filings a:hover,.footer-filings a:focus-visible{color:var(--ink);text-decoration:underline;text-underline-offset:.2em}.footer-police-filing{display:inline-flex;align-items:center;gap:.35rem}.footer-police-filing img{width:.9rem;height:1rem;object-fit:contain;flex:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.photo-slide,.hero-kinetic-composition,.hero-kinetic-piece,.action-link,.action-link:hover,.action-link:focus-visible{transition-duration:.1s;transition:none;transform:none}.hero-kinetic-shape{animation:none!important}.article-directory,.article-directory-sheet{animation:none}}@media(max-width:56rem){.hero{grid-template-columns:1fr;align-items:start;gap:clamp(2rem,6vh,3.5rem)}.hero-kinetic-stage{width:100%;max-width:30rem;aspect-ratio:1 / .9;justify-self:center}.hero-kinetic-composition{width:92%}.section{grid-template-columns:1fr;gap:0}.section-header{margin-bottom:1.6rem}.section-header,.section>:not(.section-header){grid-column:auto}.section#about>.about-description{margin-top:-.8rem;padding-left:5.5rem}.photo-slide{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:1rem;padding:max(7rem,calc(env(safe-area-inset-top) + 6rem)) max(var(--shell-pad),env(safe-area-inset-right),calc((100% - var(--shell)) / 2)) max(2rem,calc(env(safe-area-inset-bottom) + 1.5rem)) max(var(--shell-pad),env(safe-area-inset-left),calc((100% - var(--shell)) / 2))}.photo-visual{height:auto}.photo-image{max-height:min(68svh,34rem,calc(100dvh - 10rem))}.photo-caption{flex-direction:row;align-items:baseline;justify-content:space-between;padding-bottom:0}.blog-layout{display:block;padding-top:clamp(2.5rem,9vh,4rem)}.blog-title{font-size:clamp(.95rem,3.8vw,1.2rem)}.blog-article-header{padding-bottom:1.35rem}.article-body{padding-top:2.5rem;font-size:1.13rem;line-height:2.05}.other-articles{display:none}.article-pagination{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:3.5rem}.article-pagination>a,.pagination-placeholder,.article-index-button{min-height:4rem;padding:.85rem 0}.article-pagination>a{flex-direction:row;align-items:center;gap:.3rem;font-size:.86rem}.article-pagination strong{display:none}.pagination-next{justify-content:flex-end}.article-index-button{display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--muted);font-family:inherit;font-size:.86rem;cursor:pointer}.article-pagination.is-single{display:grid;grid-template-columns:1fr}.article-pagination.is-single .pagination-placeholder{display:none}.article-pagination.is-single .article-index-button{display:flex}}@media(max-width:35rem){.site-header{gap:1rem}.header-actions{gap:8px}.github-link,.language-link{min-height:38px}.github-link{width:38px}.language-link{padding-inline:12px}.section#about>.about-description{padding-left:4.25rem}.work-card{grid-template-columns:3.5rem minmax(0,1fr);gap:.75rem}.footer-copyright{margin-left:0}}
