:root{--bg: #f7f4ee;--text: #111111;--muted: #666258;--line: rgba(17, 17, 17, .92);--soft-line: rgba(17, 17, 17, .14);--panel: #fbf9f4;--side-gap: clamp(1.25rem, 2.6vw, 2.8rem);--strip-height: clamp(4.25rem, 6vw, 5rem);--ui-size: clamp(.9rem, .82rem + .12vw, 1rem);--serif: "Baskerville", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", "Times New Roman", serif}@font-face{font-family:JackDaiCJKSerif;src:url(/fonts/noto-serif-sc-jack-dai-cjk.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+6234,U+76F8,U+627F}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;width:100%;background:var(--bg);color:var(--text);font-family:var(--serif);line-height:1.62;text-rendering:optimizeLegibility;overflow-x:clip}body{min-height:100vh;overscroll-behavior-x:none}a{color:inherit;text-decoration:none;transition:opacity .22s ease}a:hover,a:focus-visible{opacity:.72}.site-shell{min-height:100vh;width:100%;overflow-x:clip;padding:clamp(1.1rem,2vw,1.8rem) clamp(1.1rem,2.5vw,3rem) calc(var(--strip-height) + 1.9rem) clamp(1.1rem,2.5vw,2.2rem)}.site-frame-overlay{position:fixed;top:clamp(1.1rem,2vw,1.8rem);left:clamp(1.1rem,2.5vw,2.2rem);z-index:36;display:flex;flex-direction:column;align-items:flex-start;gap:1.08rem;pointer-events:none}.site-frame-overlay>*{pointer-events:auto}.site-title,.nav-list a,.strip-current-label,.strip-directory-link{font-family:var(--serif);font-size:var(--ui-size);font-weight:400;letter-spacing:.01em}.site-title{align-self:flex-start;display:inline-flex;align-items:baseline;gap:.34rem;font-size:calc(var(--ui-size) * 1.16);letter-spacing:.012em;line-height:1.12}.site-title-latin{font-family:var(--serif)}.site-title-cjk{font-family:JackDaiCJKSerif,"Noto Serif SC","Source Han Serif SC",Songti SC,STSong,"Noto Serif CJK SC",serif;font-size:.94em;letter-spacing:0}.site-nav{align-self:flex-start;margin-top:.08rem}.nav-list{display:flex;flex-direction:column;gap:.08rem;list-style:none;margin:0;padding:0}.nav-list a{color:var(--muted);font-size:calc(var(--ui-size) * .94)}.nav-list a[aria-current=page]{color:var(--text)}.site-main{width:min(74rem,100%);margin:0 auto;padding-bottom:1rem}.page-home .site-main{width:100%}.home-stage{min-height:calc(100vh - var(--strip-height) - 2.6rem);display:grid;place-items:center}.home-hero{width:min(100%,calc(100vw - clamp(2.2rem,5vw,4.8rem)));margin:0;animation:page-enter .42s ease both;display:grid;place-items:center}.home-hero-image{display:block;width:auto;max-width:100%;max-height:calc(100vh - var(--strip-height) - 5rem);height:auto;background:var(--panel)}.page-header{margin-bottom:2.2rem}.kicker{margin:0 0 .55rem;color:var(--muted);font-size:calc(var(--ui-size) * .95)}h1,h2,h3{margin:0;font-weight:400;line-height:1.16}h1{font-size:clamp(2.1rem,4.8vw,3.4rem);margin-bottom:.9rem}p{margin:0 0 1rem}.project-page,.info-page,.cv-page{animation:page-enter .32s ease both}.project-page{width:min(60rem,100%);margin:0 auto;padding-top:clamp(.5rem,2vw,1.4rem);overflow-x:clip}.project-header{margin-bottom:clamp(2rem,4vw,3.2rem)}.project-header-compact{margin-bottom:clamp(1rem,2.4vw,1.6rem)}.project-intro{max-width:38rem;color:var(--muted);white-space:pre-line}.project-active-row{display:flex;align-items:baseline;gap:.85rem;flex-wrap:wrap;min-height:1.35rem}.project-active-row-notes{min-height:auto}.project-active-meta{margin:0;color:var(--muted);font-size:calc(var(--ui-size) * .95);min-height:1.3rem}.project-notes-link{appearance:none;border:0;background:transparent;padding:0;color:var(--muted);font-family:var(--serif);font-size:calc(var(--ui-size) * .95);line-height:1.1;cursor:pointer;outline:none;box-shadow:none;-webkit-tap-highlight-color:transparent;text-decoration:none;text-underline-offset:.14em;text-decoration-thickness:.05em;transition:color .18s ease,opacity .18s ease,letter-spacing .18s ease,text-decoration-color .18s ease}.project-notes-link-overlay{display:none;align-self:flex-start}.project-notes-link:hover,.project-notes-link:focus-visible{color:var(--text);opacity:1;letter-spacing:.012em;text-decoration:underline;text-decoration-color:currentColor}.project-notes-link:focus,.project-notes-link:focus-visible{outline:none;box-shadow:none}.project-sequence-cue{display:none;margin:0 0 1rem;color:var(--muted);font-size:calc(var(--ui-size) * .86);letter-spacing:.01em}.project-gallery{display:flex;flex-direction:column;gap:1.2rem}.project-text,.project-notes,.info-page,.cv-page{max-width:40rem}.project-notes{margin-top:2.3rem}.info-page{width:min(34rem,100%);margin:clamp(3rem,10vh,6rem) auto 0}.cv-page{width:min(74rem,100%);max-width:none;margin:clamp(3rem,10vh,6rem) auto 0}.cv-actions{margin-bottom:1rem;color:var(--muted);font-size:calc(var(--ui-size) * .95)}.cv-embed{display:block;width:100%;height:min(78vh,62rem);border:1px solid var(--soft-line);background:#ffffffb3}.project-stage{outline:none}.project-stage-viewport{position:relative;min-height:calc(100vh - var(--strip-height) - 15rem);display:flex;flex-direction:column;justify-content:center;overflow:hidden}.project-stage-media{position:relative;min-height:calc(100vh - var(--strip-height) - 8.5rem);overflow:hidden}.project-stage-slide{position:absolute;inset:0;margin:0;display:grid;place-items:center;opacity:0;pointer-events:none;transform:translate(2.5rem) scale(.992);transition:opacity .38s ease,transform .52s cubic-bezier(.22,1,.36,1);backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d}.project-stage-slide.is-active{opacity:1;pointer-events:auto;transform:translate(0) scale(1)}.project-stage-image{display:block;width:auto;max-width:min(100%,calc(100vw - clamp(2.2rem,5vw,5rem)));max-height:calc(100vh - var(--strip-height) - 8.5rem);height:auto;background:var(--panel)}.project-stage-hit{position:absolute;inset:0 auto 0 0;width:50%;border:0;background:transparent;padding:0;cursor:w-resize;appearance:none;outline:none;box-shadow:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.project-stage-hit-next{left:auto;right:0;cursor:e-resize}.project-stage-hit:focus,.project-stage-hit:focus-visible,.project-stage-hit:active{outline:none;box-shadow:none;background:transparent}.project-stage-notes-dialog{border:0;padding:0;background:transparent;width:min(52rem,82vw);max-width:none}.project-stage-notes-dialog::backdrop{background:#f7f6f247;backdrop-filter:blur(18px) saturate(112%)}.project-stage-notes-sheet{position:relative;margin:0 auto;border:1px solid var(--soft-line);background:#ffffff9e;box-shadow:0 22px 60px #1111111a}.project-stage-notes-close{position:absolute;top:1rem;right:1rem;border:0;background:transparent;padding:0;color:var(--muted);font-family:var(--serif);font-size:calc(var(--ui-size) * .88)}.project-stage-notes-scroll{max-height:78vh;overflow:auto;padding:clamp(1.5rem,4vw,2.4rem)}.project-stage-notes-content{max-width:36rem}.strip-shell{position:fixed;left:0;right:0;bottom:.4rem;height:var(--strip-height);z-index:40;--strip-rule-glow: .18;--strip-flash-pos: 50%;--strip-flash-opacity: .12;--strip-haze-opacity: .18}.strip-center-anchor{position:absolute;left:50%;top:.97rem;width:4.8rem;height:clamp(2.6rem,4vw,3rem);transform:translate(-50%);z-index:5;transition:width .46s cubic-bezier(.22,1,.36,1),height .46s cubic-bezier(.22,1,.36,1)}.strip-anchor-canvas{position:absolute;inset:-.08rem -.18rem -.04rem;width:100%;height:100%;opacity:calc(.52 + var(--strip-haze-opacity) * .92);filter:saturate(118%);pointer-events:none}.strip-active-rule{position:absolute;left:50%;top:.56rem;transform:translate(-50%);display:block;width:0;height:2px;background:var(--line);opacity:0;overflow:hidden;box-shadow:0 0 calc(12px * var(--strip-rule-glow)) #11111121;transition:width .46s cubic-bezier(.22,1,.36,1),opacity .18s ease,box-shadow .22s ease}.strip-active-tip{position:absolute;left:50%;top:.02rem;width:0;height:0;transform:translate(-50%);border-left:.24rem solid transparent;border-right:.24rem solid transparent;border-bottom:.28rem solid var(--line);opacity:.76;transition:opacity .22s ease,transform .22s ease,filter .22s ease}.strip-active-rule:after{content:"";position:absolute;inset:-1px -2px;background:linear-gradient(90deg,transparent calc(var(--strip-flash-pos) - 18%),rgba(255,255,255,var(--strip-flash-opacity)) var(--strip-flash-pos),transparent calc(var(--strip-flash-pos) + 18%));mix-blend-mode:screen}.strip-directory-trigger{position:absolute;left:50%;top:-.16rem;width:calc(var(--strip-anchor-width, 4.8rem) + .75rem);height:calc(100% + .24rem);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;border:0;background:transparent;padding:0;color:var(--text);transform:translate(-50%);cursor:pointer;pointer-events:auto;outline:none;appearance:none;box-shadow:none;-webkit-tap-highlight-color:transparent}.strip-directory-trigger:before{content:"";position:absolute;left:50%;top:.14rem;width:var(--strip-anchor-width, 4.8rem);height:calc(100% - .18rem);transform:translate(-50%);border:0;border-radius:1rem;background:linear-gradient(180deg,#ffffff29,#ffffff08);box-shadow:none;opacity:calc(.08 + var(--strip-haze-opacity) * .4);transform:translate(-50%) scale(calc(.95 + var(--strip-haze-opacity) * .06));transition:opacity .28s ease,transform .28s ease}.strip-current-label{color:var(--text);font-family:var(--serif);font-size:var(--ui-size);font-weight:400;letter-spacing:.01em;line-height:1.12;white-space:nowrap}.strip-current-copy{margin-top:1.42rem;display:flex;flex-direction:column;align-items:center;gap:.14rem}.strip-current-year{color:var(--muted);font-family:var(--serif);font-size:calc(var(--ui-size) * .82);font-weight:400;letter-spacing:.015em;line-height:1.04;white-space:nowrap}.strip-directory-trigger:hover:before,.strip-directory-trigger:focus-visible:before{opacity:calc(.18 + var(--strip-haze-opacity) * .48);transform:translate(-50%) scale(calc(.98 + var(--strip-haze-opacity) * .08))}.strip-directory-trigger:hover .strip-active-tip,.strip-directory-trigger:focus-visible .strip-active-tip{opacity:1;transform:translate(-50%) translateY(-.04rem);filter:drop-shadow(0 0 .18rem rgba(17,17,17,.1))}.strip-directory-trigger:focus,.strip-directory-trigger:focus-visible{outline:none}.strip-directory-trigger:focus-visible:after{content:"";position:absolute;left:50%;top:.02rem;width:calc(var(--strip-anchor-width, 4.8rem) + .3rem);height:calc(100% - .04rem);transform:translate(-50%);border-radius:1rem;box-shadow:inset 0 0 0 1px #11111124}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.strip-directory{border:0;padding:0;background:transparent;width:min(42rem,70vw);max-width:none;opacity:0;transform:translateY(.9rem) scale(.985);transform-origin:50% calc(100% + 12rem)}.strip-directory::backdrop{background:#fff0;backdrop-filter:blur(0px) saturate(108%);transition:background .24s cubic-bezier(.22,1,.36,1),backdrop-filter .24s cubic-bezier(.22,1,.36,1)}.strip-directory[data-state=opening],.strip-directory[data-state=open]{opacity:1;transform:translateY(0) scale(1)}.strip-directory[data-state=opening]::backdrop,.strip-directory[data-state=open]::backdrop{background:#ffffff42;backdrop-filter:blur(16px) saturate(112%)}.strip-directory[data-state=closing]{opacity:0;transform:translateY(.72rem) scale(.988);transition-duration:.12s}.strip-directory[data-state=closing]::backdrop{background:#fff0;backdrop-filter:blur(0px) saturate(108%);transition-duration:.12s}.strip-directory-surface{position:relative;padding:clamp(1.6rem,4vw,2.8rem);border:1px solid var(--soft-line);background:#fffffff5;box-shadow:0 18px 55px #1111111f;opacity:0;transform:translateY(.9rem) scale(.985);transition:opacity .24s cubic-bezier(.22,1,.36,1),transform .24s cubic-bezier(.22,1,.36,1),background-color .24s ease,box-shadow .24s ease;overflow:hidden}.strip-directory-surface:before{content:"";position:absolute;inset:-16% -30%;background:linear-gradient(108deg,#fff0 18%,#fff3 38%,#ffffff14 50%,#fff0 68%);opacity:0;transform:translateY(1rem) scale(1.02);transition:opacity .26s ease,transform .28s cubic-bezier(.22,1,.36,1);pointer-events:none}.strip-directory[data-state=opening] .strip-directory-surface,.strip-directory[data-state=open] .strip-directory-surface{opacity:1;transform:translateY(0) scale(1)}.strip-directory[data-state=opening] .strip-directory-surface:before,.strip-directory[data-state=open] .strip-directory-surface:before{opacity:.72;transform:translateY(0) scale(1)}.strip-directory[data-state=closing] .strip-directory-surface{opacity:0;transform:translateY(.72rem) scale(.988);transition-duration:.12s}.strip-directory[data-state=closing] .strip-directory-surface:before{opacity:0;transform:translateY(.8rem) scale(1.01);transition-duration:.12s}.strip-directory-close{position:absolute;top:1rem;right:1rem;border:0;background:transparent;padding:0;color:var(--muted);font-family:var(--serif);font-size:calc(var(--ui-size) * .88);appearance:none;outline:none;box-shadow:none;text-decoration:none;-webkit-tap-highlight-color:transparent}.strip-directory-close:hover,.strip-directory-close:focus-visible{color:var(--text);opacity:1}.strip-directory-close:focus,.strip-directory-close:focus-visible,.strip-directory-close:active{outline:none;box-shadow:none;border:0}.strip-directory-list{display:flex;flex-direction:column;align-items:center;gap:.55rem}.strip-directory-link{color:var(--muted);font-size:clamp(1.2rem,1.05rem + 1vw,1.85rem);line-height:1.18;text-align:center;outline:none;box-shadow:none;text-decoration:none;-webkit-tap-highlight-color:transparent}.strip-directory-link:visited,.strip-directory-link:active{color:var(--muted)}.strip-directory-link:hover,.strip-directory-link:focus-visible{color:var(--text);opacity:1}.strip-directory-link:focus,.strip-directory-link:focus-visible,.strip-directory-link:active{outline:none;box-shadow:none;border:0}.strip-directory-link.is-active{color:var(--text);opacity:1}@keyframes page-enter{0%{opacity:0;transform:translateY(.65rem)}to{opacity:1;transform:translateY(0)}}@keyframes strip-tip-bob{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-.16rem)}}.strip-shell[data-hovering=true] .strip-active-tip{animation:strip-tip-bob .76s ease-in-out infinite}@media(max-width:56rem){html,body{overflow-x:hidden}.site-shell{padding:4.85rem 1rem calc(var(--strip-height) + 1.35rem) 1rem}.site-frame-overlay{top:1rem;left:1rem;gap:.9rem}.site-title{gap:.26rem}.site-title-cjk{font-family:JackDaiCJKSerif,"Noto Serif SC","Source Han Serif SC",Songti SC,STSong,"Noto Serif CJK SC",serif}.page-project .project-notes-link-overlay{display:inline-flex}.page-project .project-header-compact{display:none}.site-main,.page-home .site-main{width:100%}.home-stage{min-height:calc(100vh - var(--strip-height) - 8rem)}.home-hero{width:min(100%,calc(100vw - 2rem))}.home-hero-image{max-width:min(100%,calc(100vw - 2rem));max-height:calc(100vh - var(--strip-height) - 6.5rem)}.project-page,.info-page,.cv-page{width:100%;margin-top:0}.project-gallery{gap:2rem}.project-stage-viewport{min-height:calc(100vh - var(--strip-height) - 12rem)}.project-stage-media{min-height:calc(100vh - var(--strip-height) - 7.8rem);touch-action:pan-y pinch-zoom}.project-stage-image{max-width:calc(100vw - 2rem);max-height:calc(100vh - var(--strip-height) - 8rem)}.strip-shell{bottom:.25rem}.strip-center-anchor{top:1rem;height:2.7rem}.strip-anchor-canvas{inset:-.08rem -.12rem -.12rem}.project-stage-notes-dialog{width:min(94vw,34rem)}.cv-embed{height:70vh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.strip-directory::backdrop{backdrop-filter:none}.strip-directory,.strip-directory-surface,.strip-directory-surface:before{transform:none!important}.strip-directory::backdrop,.strip-directory,.strip-directory-surface,.strip-directory-surface:before{transition:opacity .12s ease !important,background .12s ease!important}}
