:root{--c-bg:#EFEEEA;--c-bg-dark:#0A0A0A;--c-bg-card:#E8E7E3;--c-text:#1A1A1A;--c-text-light:#FFFFFF;--c-text-muted:#777777;--c-text-subtle:#8B8B8B;--c-border:#D5D5D0;--c-border-dark:#333333;--c-overlay:rgba(10, 10, 10, 0.95);--c-hover:rgba(0, 0, 0, 0.04);--f-sans:'Inter',-apple-system,'Helvetica Neue',sans-serif;--f-serif:'Noto Serif TC','Noto Serif JP','Georgia',serif;--f-zh:'Noto Sans TC','PingFang TC',sans-serif;--f-mono:'Geist Mono','SF Mono','Consolas',monospace;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:1.375rem;--fs-xl:2rem;--fs-2xl:3rem;--fs-hero:4.5rem;--fs-mega:6rem;--fw-light:300;--fw-regular:400;--fw-medium:500;--fw-bold:700;--sp-1:0.25rem;--sp-2:0.5rem;--sp-3:1rem;--sp-4:1.5rem;--sp-5:2rem;--sp-6:3rem;--sp-7:4rem;--sp-8:6rem;--sp-9:8rem;--sp-10:12.5rem;--page-mx:clamp(1.5rem, 5vw, 4rem);--content-max:1400px;--grid-gap:0.5rem;--border:1px solid var(--c-border);--border-dark:1px solid var(--c-border-dark);--ease:cubic-bezier(0.25, 0, 0.25, 1);--ease-out:cubic-bezier(0, 0, 0.25, 1);--ease-in-out:cubic-bezier(0.42, 0, 0.58, 1);--ease-snap:cubic-bezier(0.16, 1, 0.3, 1);--dur-fast:0.3s;--dur-normal:0.6s;--dur-slow:1s;--dur-xslow:1.4s;--z-base:1;--z-sticky:100;--z-menu:900;--z-overlay:1000;--ls-tight:-0.02em;--ls-normal:0;--ls-wide:0.05em;--ls-wider:0.1em;--ls-widest:0.15em;--lh-tight:1.1;--lh-snug:1.3;--lh-normal:1.6;--lh-relaxed:1.8}[data-theme=dark]{--c-bg:#1F1F24;--c-text:#FFFFFF;--c-border:#333333;--c-hover:rgba(255, 255, 255, 0.08)}*,::after,::before{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth;overflow-x:hidden}body{font-family:var(--f-sans);font-size:var(--fs-base);font-weight:var(--fw-regular);line-height:var(--lh-normal);color:var(--c-text);background-color:var(--c-bg);overflow-x:hidden;width:100%;min-height:100vh;position:relative}img,svg,video{display:block;max-width:100%;height:auto;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}a{color:inherit;text-decoration:none;transition:opacity var(--dur-fast) var(--ease)}a:hover{opacity:.7}button{font:inherit;color:inherit;background:0 0;border:none;cursor:pointer;outline:0}ol,ul{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:var(--fw-regular);line-height:var(--lh-tight)}p{line-height:var(--lh-normal)}input,select,textarea{font:inherit;color:inherit;background:0 0;border:var(--border);outline:0}::selection{background:var(--c-text);color:var(--c-bg)}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--c-border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--c-text-muted)}body[lang=zh-TW],body[lang=zh]{font-family:var(--f-zh),var(--f-sans)}.heading-hero{font-family:var(--f-sans);font-size:var(--fs-hero);font-weight:var(--fw-light);line-height:var(--lh-tight);letter-spacing:var(--ls-tight)}.heading-display{font-family:var(--f-sans);font-size:var(--fs-2xl);font-weight:var(--fw-light);line-height:var(--lh-tight);letter-spacing:var(--ls-tight)}.name-adj{font-family:'Playfair Display',var(--f-serif);font-style:italic;font-weight:500;text-transform:lowercase;letter-spacing:-.04em;padding-right:.05em}.heading-xl{font-size:var(--fs-xl);font-weight:var(--fw-regular);line-height:var(--lh-snug)}.heading-lg{font-size:var(--fs-lg);font-weight:var(--fw-regular);line-height:var(--lh-snug)}.label{font-family:var(--f-sans);font-size:var(--fs-xs);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted)}.label-mono{font-family:var(--f-mono);font-size:var(--fs-xs);font-weight:var(--fw-regular);letter-spacing:var(--ls-wide);color:var(--c-text-muted)}.text-body{font-size:var(--fs-base);line-height:var(--lh-relaxed)}.text-lead{font-size:var(--fs-md);line-height:var(--lh-relaxed);font-weight:var(--fw-light)}.text-small{font-size:var(--fs-sm);line-height:var(--lh-normal);color:var(--c-text-muted)}.serif{font-family:var(--f-serif);font-style:italic}.divider{width:100%;height:1px;background:var(--c-border);border:none}.container{width:100%;max-width:var(--content-max);margin:0 auto;padding:0 var(--page-mx)}.container-full{width:100%;padding:0 var(--page-mx)}.section{padding-top:var(--sp-9);padding-bottom:var(--sp-9)}.section-lg{padding-top:var(--sp-10);padding-bottom:var(--sp-10)}.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}.img-wrap{position:relative;overflow:hidden;background:var(--c-bg-card)}.img-wrap img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-normal) var(--ease)}.img-wrap:hover img{transform:scale(1.03)}.img-placeholder{position:relative;width:100%;height:100%;background:var(--c-bg-card);display:flex;align-items:center;justify-content:center}.img-placeholder::after{content:'';display:block;width:60%;height:60%;border:1px solid var(--c-border);position:relative}.img-placeholder::before{content:'';position:absolute;top:20%;left:20%;right:20%;bottom:20%;background:linear-gradient(135deg,transparent 48%,var(--c-border) 48%,var(--c-border) 52%,transparent 52%)}.header{position:fixed;top:0;left:0;right:0;z-index:var(--z-sticky);padding:var(--sp-4) var(--page-mx);display:flex;align-items:center;justify-content:space-between;transition:background var(--dur-fast) var(--ease),backdrop-filter var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}.header.scrolled{background:rgba(239,238,234,.7);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.project-hero-header .header:not(.scrolled){opacity:0;pointer-events:none}.page-contact .header.scrolled{background:rgba(0,0,0,.7)}.header-logo{font-family:var(--f-zh),var(--f-sans);font-size:var(--fs-base);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);transition:opacity var(--dur-fast) var(--ease)}.header-logo:hover{opacity:1}.header-logo .site-logo{width:42.55px;height:42.55px;color:var(--c-text);vertical-align:middle;transition:transform var(--dur-fast) var(--ease)}.header-logo:hover .site-logo{transform:scale(1.05)}.logo-sprite-anchor{position:relative;display:inline-block;line-height:0;transition:transform var(--dur-fast) var(--ease)}.header-logo.has-logo-sprite:hover .site-logo{transform:none}.header-logo.has-logo-sprite:hover .logo-sprite-anchor{transform:scale(1.05)}.logo-sprite-wrap{position:absolute;left:20%;top:50%;width:80%;height:80%;transform:translate(-50%,-50%);pointer-events:none;z-index:2}.header-center{position:absolute;left:50%;transform:translateX(-50%);font-size:var(--fs-xs);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text-muted)}.header-right{display:flex;align-items:center;gap:var(--sp-4)}.header-lang{font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);cursor:pointer;opacity:.5;transition:opacity var(--dur-fast) var(--ease)}.header-lang.active,.header-lang:hover{opacity:1}.header-lang-divider{font-size:var(--fs-xs);color:var(--c-text-muted);user-select:none}.header-menu-btn{font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-widest);cursor:pointer;position:relative;padding:var(--sp-2) 0}.header-menu-btn::after{content:'';position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--c-text);transition:width var(--dur-fast) var(--ease)}.header-menu-btn:hover::after{width:100%}.menu-overlay{position:fixed;top:0;left:0;right:0;height:100vh;height:var(--menu-vh,100vh);z-index:var(--z-overlay);background:var(--c-bg-dark);display:flex;opacity:0;visibility:hidden;transition:opacity var(--dur-normal) var(--ease),visibility var(--dur-normal) var(--ease)}.menu-overlay.open{opacity:1;visibility:visible}.menu-overlay-inner{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr 1fr;padding:var(--sp-4) var(--page-mx)}.menu-brand{display:flex;flex-direction:column;justify-content:center;color:var(--c-text-light)}.menu-brand-name{font-size:var(--fs-lg);font-weight:var(--fw-regular)}.menu-logo-mark{display:flex;align-items:center;justify-content:center}.menu-logo-mark svg{width:220px;height:220px}.menu-nav{display:flex;flex-direction:column;justify-content:center;gap:var(--sp-3)}.menu-nav-link{font-size:var(--fs-mega);font-weight:var(--fw-light);color:var(--c-text-light);line-height:var(--lh-tight);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);transform:translateX(0)}.menu-nav-link:hover{opacity:1;transform:translateX(12px)}.menu-close{position:absolute;top:var(--sp-4);right:var(--page-mx);font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text-light);cursor:pointer}.menu-footer{position:absolute;bottom:var(--sp-4);left:0;right:0;padding:0 var(--page-mx);display:flex;justify-content:space-between;align-items:flex-end}.menu-social{display:flex;flex-direction:column;gap:var(--sp-1)}.menu-social a{font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-light)}.menu-copyright{font-size:var(--fs-xs);color:#aaa}.project-tags{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.tag{display:inline-flex;align-items:center;padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);border:1px solid var(--c-border);transition:all var(--dur-fast) var(--ease);cursor:pointer}.tag.active{background:var(--c-text);color:var(--c-bg);border-color:var(--c-text)}@media (hover:hover){.tag:hover{background:var(--c-text);color:var(--c-bg);border-color:var(--c-text)}}.filter-bar{display:flex;flex-direction:column;gap:var(--sp-3)}.filter-categories{display:flex;gap:var(--sp-3)}.filter-cat{font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);cursor:pointer;transition:color var(--dur-fast) var(--ease);position:relative;padding-bottom:2px}.filter-cat.active{color:var(--c-text)}@media (hover:hover){.filter-cat:hover{color:var(--c-text)}}.filter-cat.active::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:1px;background:var(--c-text)}.filter-tags{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.filter-tags .tag{font-size:var(--fs-sm)}.footer{padding:var(--sp-7) var(--page-mx);display:flex;justify-content:space-between;align-items:center;border-top:var(--border)}.footer-links{display:flex;gap:var(--sp-5)}.footer-links a{font-size:var(--fs-sm);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:var(--ls-wider)}.footer-copy{font-size:var(--fs-xs);color:#666}.footer-social{display:flex;gap:var(--sp-4)}.footer-social a{font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider)}.link-arrow{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);transition:gap var(--dur-fast) var(--ease)}.link-arrow:hover{opacity:1;gap:var(--sp-3)}.link-arrow .arrow{transition:transform var(--dur-fast) var(--ease)}.link-arrow:hover .arrow{transform:translateX(4px)}.page-title{font-size:var(--fs-hero);font-weight:var(--fw-light);letter-spacing:var(--ls-tight);line-height:var(--lh-tight)}@media (max-width:768px){.header-center{display:none}.menu-overlay{flex-direction:column}.menu-overlay-inner{grid-template-columns:1fr;padding-top:72px;padding-bottom:var(--sp-6);height:auto;flex:1;min-height:0;overflow-y:auto}.menu-footer{position:static;left:auto;right:auto;bottom:auto;padding:var(--sp-4) var(--page-mx);flex-shrink:0}.menu-brand{display:none}.menu-logo-mark{display:none}.menu-nav-link{font-size:var(--fs-2xl)}.footer-links{flex-wrap:wrap;justify-content:center;gap:var(--sp-2) var(--sp-3)}.footer-links a{letter-spacing:var(--ls-wide)}.page-title{font-size:var(--fs-2xl)}.heading-hero{font-size:var(--fs-2xl)}.heading-display{font-size:var(--fs-xl)}.footer{flex-direction:column;gap:var(--sp-4);text-align:center}.footer-social{order:2}.footer-copy{order:3}}.reveal{opacity:0;transform:translateY(30px)}.reveal.active{opacity:1;transform:translateY(0);transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.reveal-css{opacity:0;animation:reveal-css-in .8s cubic-bezier(.215,.61,.355,1) .15s forwards}@keyframes reveal-css-in{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.reveal-css{animation:none;opacity:1}}.stagger-children>*{opacity:0;transform:translateY(20px)}.stagger-children.active>*{opacity:1;transform:translateY(0);transition:opacity var(--dur-normal) var(--ease),transform var(--dur-normal) var(--ease)}.stagger-children.active>:first-child{transition-delay:0s}.stagger-children.active>:nth-child(2){transition-delay:0.1s}.stagger-children.active>:nth-child(3){transition-delay:0.2s}.stagger-children.active>:nth-child(4){transition-delay:0.3s}.stagger-children.active>:nth-child(5){transition-delay:0.4s}.stagger-children.active>:nth-child(6){transition-delay:0.5s}.img-reveal{position:relative;overflow:hidden}.img-reveal::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:var(--c-bg);transform:scaleX(1);transform-origin:right;transition:transform var(--dur-slow) var(--ease-out)}.img-reveal.revealed::after{transform:scaleX(0)}@media (prefers-reduced-motion:no-preference){.home-work-card-image img,.lab-card-image img,.works-card-image img{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.about-exp-intro,.about-experience .label,.about-intro .label,.about-intro-text,.about-pillar-desc,.about-pillar-label,.about-pillar-title,.about-skills .label,.about-timeline-company,.about-timeline-desc,.about-timeline-role,.about-timeline-year,.home-statement-cta,.home-statement-text,.home-work-card-client,.home-work-card-code,.home-work-card-tags,.home-work-card-title,.home-work-card-year,.works-card-client,.works-card-code,.works-card-tags,.works-card-title,.works-card-year{visibility:hidden}}.paper-bg{position:fixed;inset:0;pointer-events:none}.pt-enter body::after{content:'';position:fixed;inset:0;z-index:9999;background:var(--c-bg);animation:pt-failsafe .4s ease 1.8s forwards}@keyframes pt-failsafe{to{opacity:0;visibility:hidden}}.pt-overlay{position:fixed;inset:0;z-index:9999;background:var(--c-bg);pointer-events:none}.pt-layer{position:fixed;inset:0;pointer-events:none}.pt-layer-1{z-index:9996;background:#d7d5cf}.pt-layer-2{z-index:9997;background:#e0dfda}.pt-layer-3{z-index:9998;background:#e8e7e3}[data-theme=dark] .pt-layer-1{background:#333339}[data-theme=dark] .pt-layer-2{background:#2c2c32}[data-theme=dark] .pt-layer-3{background:#25252a}.pt-particle{position:fixed;top:0;left:0;z-index:10000;pointer-events:none;will-change:transform,opacity}.line-draw{width:0;height:1px;background:var(--c-border);transition:width var(--dur-slow) var(--ease)}.line-draw.active{width:100%}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes gentlePulse{0%,100%{opacity:.5}50%{opacity:1}}.scroll-hint{position:absolute;bottom:var(--sp-5);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.scroll-hint span{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text-muted)}.scroll-hint-line{width:1px;height:40px;background:var(--c-border);position:relative;overflow:hidden}.scroll-hint-line::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:var(--c-text);animation:scrollDown 2s var(--ease) infinite}@keyframes scrollDown{0%{transform:translateY(-100%)}50%{transform:translateY(0)}100%{transform:translateY(100%)}}.menu-overlay .menu-nav-link{opacity:0;transform:translate3d(0,40px,0);will-change:opacity,transform;transition:opacity var(--dur-normal) var(--ease),transform var(--dur-normal) var(--ease)}.menu-overlay.open .menu-nav-link{opacity:1;transform:translate3d(0,0,0)}.menu-overlay.open .menu-nav-link:first-child{transition-delay:0.15s}.menu-overlay.open .menu-nav-link:nth-child(2){transition-delay:0.2s}.menu-overlay.open .menu-nav-link:nth-child(3){transition-delay:0.25s}.menu-overlay.open .menu-nav-link:nth-child(4){transition-delay:0.3s}.menu-overlay.open .menu-nav-link:nth-child(5){transition-delay:0.35s}.menu-overlay.open .menu-nav-link:nth-child(6){transition-delay:0.4s}.home-hero{position:relative;width:100%;height:100vh;height:100dvh;display:flex;align-items:flex-end;padding:var(--sp-7) var(--page-mx);overflow:hidden;cursor:crosshair}[data-theme=dark] .home-hero::before{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(120,110,150,.15) 0,rgba(0,0,0,0) 60%);z-index:0;pointer-events:none}#hero-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.home-hero-content{position:relative;z-index:2;max-width:600px;pointer-events:none}.hero-time{position:absolute;right:var(--page-mx);bottom:var(--sp-7);z-index:2;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.hero-time-labels{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.hero-time-now{font-family:var(--f-mono);font-size:12px;font-weight:var(--fw-medium);letter-spacing:.12em;color:var(--c-text);opacity:.6}.hero-time-date{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;color:var(--c-text-muted);opacity:.35;text-transform:uppercase}.hero-time-track{position:relative;width:100%;height:1px;background:var(--c-border)}.hero-time-dot{position:absolute;top:50%;left:0;width:5px;height:5px;border-radius:50%;border:1px solid var(--c-text);background:0 0;transform:translate(-50%,-50%) translateX(var(--dot-x,0));transition:transform .9s cubic-bezier(.4, 0, .2, 1)}@media (max-width:768px){.hero-time{display:none}}.home-hero-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text-muted);margin-bottom:var(--sp-3)}.home-statement{padding:var(--sp-9) var(--page-mx) var(--sp-7)}.home-statement-label{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-8);opacity:.4}.label-mono{font-family:var(--f-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text);white-space:nowrap}.home-statement-line{flex:1;height:1px;background:var(--c-border)}.home-statement-body{display:grid;grid-template-columns:1fr;gap:var(--sp-8);align-items:start}@media (min-width:900px){.home-statement-body{grid-template-columns:1.4fr 1fr;gap:var(--sp-10)}}.home-statement-text{font-size:clamp(1rem, 1.2vw, 1.125rem);font-weight:var(--fw-regular);line-height:2.2;letter-spacing:.04em;color:#858585;max-width:600px;white-space:pre-line}.home-statement-text::first-line{font-family:var(--f-serif);font-weight:var(--fw-medium);font-size:clamp(1.125rem, 1.6vw, 1.375rem);letter-spacing:.06em;color:var(--c-text)}.home-statement-aside{display:flex;flex-direction:column;gap:0}.home-statement-cta{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-6) 0;border-bottom:var(--border);opacity:.6;transition:opacity var(--dur-fast) var(--ease),padding-left var(--dur-normal) var(--ease)}.home-statement-cta:first-child{border-top:var(--border)}.home-statement-cta:hover{opacity:1;padding-left:var(--sp-4)}.home-statement-cta-num{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text);min-width:32px}.home-statement-cta-title{font-family:var(--f-sans);font-size:var(--fs-lg);font-weight:var(--fw-regular);letter-spacing:.05em;flex:1;text-transform:uppercase;color:var(--c-text)}.home-statement-cta-arrow{font-family:var(--f-mono);font-size:var(--fs-md);color:var(--c-text-muted);transition:transform var(--dur-fast) var(--ease)}.home-statement-cta:hover .home-statement-cta-arrow{transform:translateX(4px);color:var(--c-text)}.home-work-card{display:block;margin-top:var(--sp-7);margin-bottom:var(--sp-8);position:relative;overflow:hidden;max-width:var(--content-max);margin-left:auto;margin-right:auto}.home-work-card-image{width:100%;aspect-ratio:16/9;max-height:70vh;overflow:hidden;background:var(--c-bg);border-radius:4px}.home-work-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.16, 1, .3, 1)}.home-work-card:hover .home-work-card-image img{transform:scale(1.03)}.home-work-card:hover{opacity:1}.home-work-card-info{display:flex;align-items:baseline;gap:var(--sp-4);padding:var(--sp-4) 0;border-bottom:var(--border)}.home-work-card-code{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide)}.home-work-card-title{font-size:var(--fs-xl);font-weight:var(--fw-light);line-height:var(--lh-snug)}.home-work-card-client{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-muted)}.home-work-card-summary{font-size:var(--fs-sm);color:var(--c-text-muted);line-height:var(--lh-relaxed);max-width:360px;display:none}.home-work-card-year{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide);margin-left:auto}.home-work-card-tags{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide)}.home-work-card-sep-mobile{display:none}.works-card{display:block;margin-bottom:var(--sp-8);max-width:var(--content-max);margin-left:auto;margin-right:auto}.works-card:last-child{margin-bottom:0}.works-card:first-child{border-top:var(--border);padding-top:var(--sp-6)}.works-card-image{width:100%;aspect-ratio:16/9;max-height:70vh;overflow:hidden;background:var(--c-bg);border-radius:4px}.works-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.16, 1, .3, 1)}.works-card:hover .works-card-image img{transform:scale(1.03)}.works-card:hover{opacity:1}.works-card-info{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) 0 var(--sp-5);border-bottom:var(--border)}.works-card:last-child .works-card-info{border-bottom:none}.works-card-code{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide);min-width:70px}.works-card-title{font-size:var(--fs-lg);font-weight:var(--fw-light);line-height:var(--lh-snug)}.works-card-client{font-size:var(--fs-sm);color:var(--c-text-muted);margin-top:2px}.works-card-year{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide);margin-left:auto;white-space:nowrap}.works-card-tags{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide);white-space:nowrap}.works-card-sep-mobile{display:none}.home-works{padding:var(--sp-7) var(--page-mx) var(--sp-3)}#home-thinking{padding-top:0}#home-thinking-list{max-width:var(--content-max);margin:0 auto}#home-thinking-list .thinking-card:first-child{border-top:none}.home-works-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-7)}.home-works-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-widest)}.about-hero{padding:calc(var(--sp-8) + 80px) var(--page-mx) var(--sp-6)}.about-intro{display:grid;grid-template-columns:1fr 1.2fr;gap:var(--sp-6);padding:var(--sp-6) var(--page-mx)}.about-intro-text{font-size:clamp(1rem, 1.2vw, 1.125rem);font-weight:var(--fw-regular);line-height:2.2;letter-spacing:.04em;color:#858585;max-width:600px;white-space:pre-line}.about-intro-headline{display:block;font-family:var(--f-serif);font-size:clamp(1.125rem, 1.6vw, 1.375rem);font-weight:var(--fw-medium);letter-spacing:.06em;color:var(--c-text);margin-bottom:2em}.about-experience .label,.about-intro .label,.about-skills .label{font-size:var(--fs-base);color:var(--c-text)}.about-pillars{padding:var(--sp-6) var(--page-mx);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-6)}.about-pillar{padding:var(--sp-6) 0;border-top:var(--border);cursor:default}.pillar-tilt{width:100%;height:100%}.about-pillar-title{font-size:var(--fs-2xl);font-weight:var(--fw-light);margin-bottom:var(--sp-2)}.about-pillar-label{font-size:var(--fs-base);font-weight:var(--fw-medium);margin-bottom:var(--sp-4)}.about-pillar-desc{font-size:var(--fs-base);line-height:var(--lh-relaxed);color:var(--c-text-muted)}.about-experience{padding:var(--sp-6) var(--page-mx);display:grid;grid-template-columns:1fr 1.5fr;gap:var(--sp-6)}.about-timeline{display:flex;flex-direction:column;gap:0}.about-timeline-item{padding:var(--sp-5) 0;border-bottom:var(--border);display:grid;grid-template-columns:140px 1fr;gap:var(--sp-5)}.about-timeline-item:last-child{border-bottom:none}.about-timeline-year{font-family:var(--f-mono);font-size:var(--fs-base);color:var(--c-text-muted)}.about-timeline-role{font-size:var(--fs-md);font-weight:var(--fw-medium)}.about-timeline-company{font-size:var(--fs-base);color:var(--c-text-muted);margin-top:var(--sp-1)}.about-timeline-desc{font-size:var(--fs-base);color:var(--c-text-muted);margin-top:var(--sp-2);line-height:var(--lh-relaxed)}.about-education{padding:var(--sp-6) var(--page-mx)}.about-skills{padding:var(--sp-6) var(--page-mx)}.about-skills-grid{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-4)}.about-skills-grid .tag{font-size:var(--fs-sm)}.works-header{padding:calc(var(--sp-9) + 80px) var(--page-mx) var(--sp-5);max-width:calc(var(--content-max) + var(--page-mx) * 2);margin:0 auto}.works-count{position:fixed;bottom:var(--sp-4);left:var(--page-mx);font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);z-index:var(--z-sticky);background:var(--c-bg);padding:4px 10px;border-radius:99px;border:var(--border)}.works-list{padding:0 var(--page-mx)}body.project-hero-header .container{max-width:none;margin:0}.project-detail-hero{width:100%;height:70vh;position:relative;overflow:hidden}.project-detail-hero .img-wrap{width:100%;height:100%}.project-detail-content{display:grid;grid-template-columns:1fr 1.5fr;gap:var(--sp-8);padding:var(--sp-5) var(--page-mx) var(--sp-6)}.project-detail-meta{position:sticky;top:100px;align-self:start}.project-detail-meta-item{padding:var(--sp-3) 0;border-bottom:var(--border)}.project-has-video .project-detail-meta-item:last-child{border-bottom:none}.project-detail-meta-label{font-size:var(--fs-xs);font-weight:var(--fw-regular);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);margin-bottom:var(--sp-1)}.project-detail-meta-value{font-size:var(--fs-base)}.project-detail-desc{font-size:var(--fs-md);line-height:var(--lh-relaxed);white-space:pre-line}.project-detail-gallery{padding:0 var(--page-mx) var(--sp-8);display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-gap)}.project-detail-gallery .img-wrap{aspect-ratio:4/3}.project-detail-gallery .img-wrap.full{grid-column:1/-1;aspect-ratio:16/9}.gallery-zoom-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.75);opacity:0;transition:opacity 420ms var(--ease-out);z-index:calc(var(--z-overlay) + 1)}.gallery-zoom-backdrop.is-visible{opacity:1}.gallery-zoom-ghost{position:fixed;overflow:hidden;background:var(--c-bg-card);contain:layout paint;transition:top 480ms var(--ease-snap),left 480ms var(--ease-snap),width 480ms var(--ease-snap),height 480ms var(--ease-snap);z-index:calc(var(--z-overlay) + 2);will-change:top,left,width,height}.gallery-zoom-ghost img{width:calc(100% + 6px);height:calc(100% + 6px);object-fit:cover;display:block}.project-detail-video{padding:0 var(--page-mx) var(--sp-4)}.project-detail-video-inner{border-top:var(--border);border-bottom:var(--border);padding:var(--sp-4) 0}.project-detail-video-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);margin-bottom:var(--sp-3)}.video-player{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:4px;overflow:hidden;cursor:pointer}.video-thumb{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ease),opacity .4s var(--ease)}.video-player:hover .video-thumb{transform:scale(1.03);opacity:.6}.video-overlay{position:absolute;inset:0;background:rgba(0,0,0,.25);transition:background .4s var(--ease)}.video-player:hover .video-overlay{background:rgba(0,0,0,.45)}.video-play-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);background:0 0;border:none;cursor:pointer;pointer-events:none;transition:transform .4s var(--ease)}.video-player:hover .video-play-btn{transform:translate(-50%,-50%) scale(1.06)}.video-play-circle{width:72px;height:72px;border:1px solid rgba(255,255,255,.7);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .4s var(--ease),border-color .4s var(--ease)}.video-player:hover .video-play-circle{background:rgba(255,255,255,.12);border-color:#fff}.video-play-circle svg{width:18px;height:18px;fill:white;transform:translateX(2px)}.video-caption{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-6) var(--sp-4) var(--sp-3);background:linear-gradient(to top,rgba(0,0,0,.6),transparent);color:#fff;font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);pointer-events:none}.video-caption-icon{width:10px;height:10px;fill:#fff;flex-shrink:0}.video-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.project-detail-nav{display:flex;justify-content:space-between;padding:var(--sp-7) var(--page-mx);border-top:var(--border)}#project-nav-prev:hover .arrow{transform:translateX(-4px)}.contact-page{position:relative;min-height:100vh;min-height:100svh;background:var(--c-bg-dark);color:var(--c-text-light);display:flex;flex-direction:column;justify-content:center;padding:var(--sp-9) var(--page-mx)}.contact-footer-bar{position:absolute;bottom:var(--sp-5);left:var(--page-mx);right:var(--page-mx);display:flex;justify-content:space-between;align-items:flex-end}.contact-footer-bar .footer-links a{color:var(--c-text-subtle)}.contact-page .header{mix-blend-mode:difference}.contact-headline{font-size:var(--fs-hero);font-weight:var(--fw-light);line-height:var(--lh-tight);margin-bottom:var(--sp-5)}.contact-desc{font-size:var(--fs-md);color:var(--c-text-subtle);max-width:500px;margin-bottom:var(--sp-8);line-height:var(--lh-relaxed)}.contact-methods{display:flex;flex-direction:column;gap:0;max-width:600px}.contact-method{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4) 0;border-bottom:var(--border-dark);transition:padding-left var(--dur-fast) var(--ease)}.contact-method:hover{padding-left:var(--sp-3)}.contact-method-copy{cursor:pointer}.contact-method-label{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-subtle);min-width:100px}.contact-method-value{font-size:var(--fs-base)}.contact-social-links{display:flex;gap:var(--sp-5);margin-top:var(--sp-7)}.contact-social-links a{font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-light)}.lab-list{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6);padding:var(--sp-6) var(--page-mx) var(--sp-9);max-width:calc(var(--content-max) + var(--page-mx) * 2);margin:0 auto;position:relative}.lab-list::before{content:'';position:absolute;top:0;left:var(--page-mx);right:var(--page-mx);border-top:var(--border)}.lab-card{display:flex;flex-direction:column;gap:var(--sp-3);text-decoration:none;color:inherit}.lab-card-image{width:100%;aspect-ratio:16/9;background:var(--c-bg);overflow:hidden;border-radius:4px}.lab-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.16, 1, .3, 1)}.lab-card:hover .lab-card-image img{transform:scale(1.03)}.lab-card:hover{opacity:1}.lab-card-info{display:flex;flex-direction:column;gap:var(--sp-1)}.lab-card-title{font-size:var(--fs-lg);font-weight:var(--fw-medium)}.lab-card-desc{font-size:var(--fs-sm);color:var(--c-text-muted)}.lab-card-meta{font-size:var(--fs-xs);font-family:var(--f-mono);color:var(--c-text-muted);letter-spacing:var(--ls-wide);margin-top:var(--sp-1)}.thinking-header{padding:calc(var(--sp-9) + 80px) var(--page-mx) var(--sp-5);max-width:var(--content-max);margin:0 auto}.thinking-filter-bar{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.thinking-list{padding:0 var(--page-mx);max-width:var(--content-max);margin:0 auto}.thinking-card{display:flex;flex-direction:row;align-items:flex-start;gap:var(--sp-7);padding:var(--sp-6) 0 var(--sp-6) 40px;border-bottom:var(--border);text-decoration:none;color:inherit;transition:opacity var(--dur-fast) var(--ease)}.thinking-card:first-child{border-top:var(--border)}.thinking-card:last-child{border-bottom:none}.thinking-card:hover{opacity:.65}.thinking-card-image{width:175px;flex-shrink:0;aspect-ratio:5/7;overflow:visible}.thinking-book{position:relative;width:100%;height:100%;transform:rotate(5deg)}.thinking-book__back-cover{position:absolute;width:96%;height:96%;top:2%;left:2%;background:var(--c-text);border-radius:0 4px 4px 0;box-shadow:2px 2px 5px rgba(0,0,0,.3);z-index:1}.thinking-book__inside{position:absolute;width:90%;height:94%;top:3%;left:5%;z-index:2}.thinking-book__page{position:absolute;top:0;right:0;width:98%;height:100%;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:0 4px 4px 0;box-shadow:0 1px 3px rgba(0,0,0,.12);transform-origin:right center}.thinking-book__cover{position:relative;line-height:0;background:var(--c-border);border-radius:2px 4px 4px 2px;box-shadow:0 8px 16px rgba(0,0,0,.15),0 20px 30px rgba(0,0,0,.1);transition:box-shadow .7s cubic-bezier(.45, 0, .55, 1);transform:perspective(1600px) rotateY(0) translateX(0) scaleX(1);transform-style:preserve-3d;transform-origin:left center;will-change:transform;z-index:3}.thinking-book.is-open .thinking-book__cover{box-shadow:8px 8px 16px rgba(0,0,0,.22),16px 16px 30px rgba(0,0,0,.16)}.thinking-book__cover img{width:100%;height:100%;aspect-ratio:5/7;object-fit:cover;border-radius:2px 4px 4px 2px;display:block;background:var(--c-border);opacity:0;transition:opacity .4s ease}.thinking-book__cover img.is-loaded{opacity:1}.thinking-book__cover-blank{width:100%;height:100%;aspect-ratio:5/7;background:var(--c-border);border-radius:2px 4px 4px 2px;display:block}.thinking-book__effect{position:absolute;width:16px;height:100%;margin-left:12px;top:0;border-left:1px solid rgba(0,0,0,.06);background-image:linear-gradient(90deg,rgba(255,255,255,.2) 0,rgba(255,255,255,0) 100%);transform-origin:left center;pointer-events:none}.thinking-book__light{position:absolute;inset:0;border-radius:2px 4px 4px 2px;background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.5) 100%);opacity:.1;transform-origin:left center;pointer-events:none;mix-blend-mode:overlay}.thinking-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2);padding-top:4px}.thinking-card-meta{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:2px}.thinking-card-category{font-family:var(--f-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-widest);color:var(--c-text);background:var(--c-border);padding:3px 8px;border-radius:2px}.thinking-card-date{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:var(--ls-wide)}.thinking-card-title{font-size:var(--fs-xl);font-weight:var(--fw-light);line-height:var(--lh-snug);letter-spacing:-.02em;margin-top:var(--sp-1)}.thinking-card-excerpt{font-size:var(--fs-base);color:var(--c-text-muted);line-height:var(--lh-relaxed);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:var(--sp-1)}.thinking-empty{padding:var(--sp-8) 0;text-align:center;color:var(--c-text-muted);font-size:var(--fs-base)}.post-progress{position:fixed;top:0;left:0;width:100%;height:2px;background:var(--c-text);transform:scaleX(0);transform-origin:0 0;z-index:calc(var(--z-menu) - 1);pointer-events:none}.post-article{max-width:1200px;margin:0 auto;padding:calc(var(--sp-8) + 60px) var(--page-mx) var(--sp-2)}.post-layout{display:grid;grid-template-columns:minmax(200px,250px) minmax(0,1fr);gap:clamp(2.5rem,5vw,5rem);align-items:start}.post-side{position:sticky;top:90px;border-top:var(--border);min-width:0;overflow-wrap:break-word}.post-side-sec{padding:var(--sp-4) 0;border-bottom:var(--border)}.post-side-label{display:block;font-family:var(--f-mono);font-size:var(--fs-base);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);margin-bottom:var(--sp-3)}.post-toc-list{display:flex;flex-direction:column;gap:2px}.post-toc-link{display:block;font-size:var(--fs-base);color:var(--c-text-muted);text-decoration:none;line-height:1.55;padding:4px 0 4px 12px;border-left:1px solid var(--c-border);transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.post-toc-link.sub{padding-left:26px;font-size:var(--fs-sm)}.post-toc-link:hover{color:var(--c-text)}.post-toc-link.active{color:var(--c-text);border-left:2px solid var(--c-text);padding-left:11px}.post-toc-link.sub.active{padding-left:25px}.post-toc-mobile{display:none;border:var(--border);border-radius:8px;padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-5)}.post-toc-mobile summary{font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);cursor:pointer;padding:var(--sp-1) 0}.post-toc-mobile .post-toc-list{padding:var(--sp-2) 0 var(--sp-1)}.post-tags{display:flex;flex-wrap:wrap;gap:6px}.post-tag{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted);border:var(--border);border-radius:999px;padding:3px 10px;white-space:nowrap}.post-rel-group+.post-rel-group{margin-top:var(--sp-5)}.post-rel-list{display:flex;flex-direction:column;gap:var(--sp-3)}.post-rel-card{display:block;padding:10px;border:var(--border);background:var(--c-hover);border-radius:8px;text-decoration:none;color:inherit;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.post-rel-card:hover{border-color:var(--c-text-muted)}.post-rel-thumb{display:block;aspect-ratio:16/10;border-radius:4px;overflow:hidden;background:var(--c-border);margin-bottom:var(--sp-2)}.post-rel-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.16, 1, .3, 1)}.post-rel-card:hover .post-rel-thumb img{transform:scale(1.05)}.post-rel-info{display:block;min-width:0}.post-rel-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-sm);line-height:1.5}.post-rel-excerpt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-xs);color:var(--c-text-muted);line-height:1.6;margin-top:4px}.post-side-back{display:inline-block;margin-top:var(--sp-4);font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.post-side-back:hover{color:var(--c-text);transform:translateX(-4px)}.post-main{max-width:720px;min-width:0;overflow-wrap:break-word;word-break:break-word}.post-header{margin-bottom:var(--sp-5)}.post-kicker{display:flex;align-items:baseline;gap:var(--sp-2);border-top:var(--border);padding-top:var(--sp-3);margin-bottom:var(--sp-4);font-family:var(--f-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted)}.post-kicker-date{font-weight:var(--fw-regular)}.post-kicker-link{color:var(--c-text-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease)}.post-kicker-link:hover{color:var(--c-text)}.post-kicker-cat{color:var(--c-text)}.post-kicker-date{margin-left:auto}.post-title{font-size:clamp(1.75rem, 3.2vw, 2.5rem);font-weight:var(--fw-regular);line-height:1.3;letter-spacing:0;margin-bottom:var(--sp-3)}.post-excerpt{font-size:var(--fs-md);color:var(--c-text-subtle);line-height:var(--lh-relaxed);font-weight:var(--fw-regular)}.post-share{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-4)}.post-share-label{font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);margin-right:var(--sp-1)}.post-share-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:var(--border);border-radius:50%;color:var(--c-text-muted);background:0 0;cursor:pointer;padding:0;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.post-share-btn:hover{color:var(--c-text);border-color:var(--c-text)}.post-share-btn.copied{color:var(--c-text);border-color:var(--c-text);background:var(--c-hover)}.post-cover{width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:4px;margin-bottom:var(--sp-5)}.post-cover img{width:100%;height:100%;object-fit:cover}.post-body{font-size:1.2rem;line-height:1.9;color:var(--c-text);font-family:var(--f-zh),var(--f-sans);font-weight:var(--fw-light);letter-spacing:.01em;overflow-wrap:break-word;word-break:break-word}.post-body pre,.post-body table{word-break:normal}.post-body>:first-child{margin-top:0}.post-body p{margin:0 0 1.5em}.post-body p:has(> img:only-child){margin:0}.post-body h1,.post-body h2{display:flex;align-items:center;gap:.75em;font-family:'Playfair Display',var(--f-serif);font-size:1.975rem;font-weight:800;line-height:1.4;letter-spacing:.01em;color:var(--c-text);margin:2.4rem 0 .8rem}.post-body h1::after,.post-body h2::after{content:"";flex:1 1 auto;min-width:24px;height:1px;background:var(--c-border)}.post-body h3{display:flex;align-items:center;gap:.7em;font-family:'Playfair Display',var(--f-serif);font-size:1.475rem;font-weight:700;line-height:1.5;color:var(--c-text);margin:2.4rem 0 .8rem}.post-body h3::after{content:"";flex:1 1 auto;min-width:24px;height:1px;background:var(--c-border)}.post-body h1+*,.post-body h2+*,.post-body h3+*{margin-top:0}.post-body h1,.post-body h2,.post-body h3{scroll-margin-top:90px}.post-body img{display:block;width:100%;height:auto;border-radius:4px;margin:1.5em 0}.post-body .post-video{margin:1.5em 0}.post-body iframe,.post-body iframe.ql-video{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:8px;background:#000;margin:1.5em 0}.post-body .ql-align-center{text-align:center}.post-body .ql-align-right{text-align:right}.post-body .ql-align-justify{text-align:justify}.post-body blockquote{margin:1.5em 0;padding:.3em 0 .3em var(--sp-4);border-left:2px solid var(--c-text);font-family:var(--f-serif);font-size:var(--fs-md);font-weight:var(--fw-regular);line-height:1.85;color:var(--c-text)}.post-body a{color:var(--c-text);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--c-text-muted);transition:text-decoration-color var(--dur-fast) var(--ease)}.post-body a:hover{text-decoration-color:var(--c-text)}.post-body ol,.post-body ul{margin:0 0 1.5em;padding-left:1.6em}.post-body ul{list-style:disc}.post-body ol{list-style:decimal}.post-body ul ul{list-style:circle}.post-body ul ul ul{list-style:square}.post-body ol ol{list-style:lower-alpha}.post-body li{margin-bottom:.25em;line-height:1.7;padding-left:.25em}.post-body li:last-child{margin-bottom:0}.post-body li::marker{color:var(--c-text-muted)}.post-body li>ol,.post-body li>ul{margin:.25em 0 0}.post-body strong{font-weight:var(--fw-medium)}.post-body .ql-boxed{display:inline-block;padding:.3em;line-height:1.1;border:1.5px solid currentColor;border-radius:4px;font-weight:var(--fw-regular)}.post-body .ql-cite{color:var(--c-text-subtle);font-size:.85em}.post-body code{font-family:var(--f-mono);font-size:.875em;background:var(--c-hover);border:var(--border);padding:2px 6px;border-radius:4px}.post-body pre{background:var(--c-bg-dark);color:var(--c-text-light);padding:var(--sp-4);border-radius:6px;overflow-x:auto;margin:var(--sp-5) 0;font-family:var(--f-mono);font-size:var(--fs-sm);line-height:1.7}.post-body pre code{background:0 0;border:none;padding:0}.post-nav{max-width:1200px;margin:0 auto;padding:var(--sp-3) var(--page-mx) 0}.post-nav-row{display:flex;align-items:baseline;gap:var(--sp-5);padding:var(--sp-4) 0;border-top:var(--border);text-decoration:none;color:inherit;transition:opacity var(--dur-fast) var(--ease)}.post-nav-row:hover{opacity:.55}.post-nav-row:hover .post-nav-arrow{transform:translateX(6px)}.post-nav-label{flex-shrink:0;width:120px;font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted)}.post-nav-title{flex:1;min-width:0;font-size:var(--fs-lg);font-weight:var(--fw-light);line-height:var(--lh-snug);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-nav-arrow{flex-shrink:0;font-size:var(--fs-base);transition:transform var(--dur-fast) var(--ease)}.post-not-found{text-align:center;padding:calc(var(--sp-9) + 60px) var(--page-mx) var(--sp-8);color:var(--c-text-muted)}.search-header{padding:calc(var(--sp-8) + 60px) var(--page-mx) var(--sp-5);max-width:var(--content-max);margin:0 auto}.search-back{display:inline-block;margin-bottom:var(--sp-4);font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.search-back:hover{color:var(--c-text);transform:translateX(-4px)}.search-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);font-weight:var(--fw-light);line-height:1.2}.search-heading-label{font-family:var(--f-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted)}.search-heading-kw{font-size:clamp(1.75rem, 4vw, 2.75rem);letter-spacing:var(--ls-tight)}.search-list{padding:0 var(--page-mx) var(--sp-6);max-width:var(--content-max);margin:0 auto}.search-count{font-family:var(--f-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);padding-bottom:var(--sp-6);border-bottom:var(--border)}.search-tags{padding:var(--sp-7) var(--page-mx) var(--sp-9);max-width:var(--content-max);border-top:var(--border);margin:0 auto}.search-section-title{font-family:var(--f-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--ls-wider);color:var(--c-text-muted);margin-bottom:var(--sp-5)}.search-tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.search-tag{display:inline-flex;align-items:center;gap:var(--sp-2);padding:8px 14px;border:var(--border);border-radius:999px;font-size:var(--fs-sm);color:var(--c-text);text-decoration:none;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.search-tag:hover{border-color:var(--c-text-muted);background:var(--c-hover)}.search-tag.active{background:var(--c-text);color:var(--c-bg);border-color:var(--c-text)}.search-tag-count{font-family:var(--f-mono);font-size:var(--fs-xs);color:var(--c-text-muted)}.search-tag.active .search-tag-count{color:var(--c-bg);opacity:.65}.journal-page{max-width:1280px;margin:0 auto;padding:calc(37px + var(--sp-4) * 2) var(--page-mx) var(--sp-9)}.journal-head{max-width:900px;margin:0 auto var(--sp-5);text-align:center}.journal-video-name{text-align:center;font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--c-text);margin-bottom:var(--sp-3)}.journal-title{font-size:clamp(1.25rem, 2vw, 1.625rem);font-weight:var(--fw-light);line-height:var(--lh-tight);letter-spacing:var(--ls-tight)}.journal-title-en{font-family:var(--f-serif);font-style:italic;font-size:var(--fs-md);font-weight:var(--fw-regular);color:var(--c-text-muted);line-height:var(--lh-snug);margin-top:var(--sp-2)}.journal-rule{width:40px;height:1px;background:var(--c-text);opacity:.35;margin:var(--sp-4) auto var(--sp-3)}.journal-byline{display:flex;flex-direction:column;gap:var(--sp-1);align-items:center}.journal-author{font-size:var(--fs-base);font-weight:var(--fw-regular)}.journal-affiliation{font-size:var(--fs-sm);color:var(--c-text-muted)}.journal-source{text-align:center;font-size:var(--fs-sm);color:var(--c-text-muted);margin-top:var(--sp-4)}.journal-source a{color:var(--c-text-muted);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--c-border);transition:color var(--dur-fast) var(--ease),text-decoration-color var(--dur-fast) var(--ease)}.journal-source a:hover{color:var(--c-text);text-decoration-color:var(--c-text)}.journal-video{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.18)}.journal-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.journal-video-missing{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--c-text-subtle);font-size:var(--fs-sm)}.journal-empty{max-width:900px;margin:0 auto;padding:calc(var(--sp-9) + 60px) var(--page-mx);text-align:center;color:var(--c-text-muted)}@media (max-width:1024px){.about-pillars{grid-template-columns:1fr}.about-experience{grid-template-columns:1fr}.about-intro{grid-template-columns:1fr}.project-detail-content{grid-template-columns:1fr;gap:var(--sp-5)}.project-detail-meta{position:static}.home-statement-body{grid-template-columns:1fr}}@media (max-width:768px){.home-hero{height:80vh}.about-hero{padding-top:calc(60px + var(--sp-4));padding-bottom:var(--sp-4)}.about-intro{padding-bottom:var(--sp-5)}.about-pillars{padding-top:var(--sp-5);padding-bottom:var(--sp-3);gap:var(--sp-2)}.about-pillar{padding-top:var(--sp-3);padding-bottom:var(--sp-3)}.about-experience{padding-top:var(--sp-5);padding-bottom:var(--sp-5)}.about-skills{padding-top:var(--sp-5)}.about-timeline-item:last-child{padding-bottom:0}.works-header{padding-top:calc(60px + var(--sp-5));padding-bottom:var(--sp-1)}.thinking-header{padding-top:calc(60px + var(--sp-5))}.search-header{padding-top:calc(60px + var(--sp-5))}.post-article{padding-top:calc(60px + var(--sp-5));padding-bottom:var(--sp-2)}.post-header{margin-bottom:var(--sp-4)}.post-kicker{flex-wrap:wrap;margin-bottom:var(--sp-4)}.post-layout{grid-template-columns:1fr;gap:var(--sp-2)}.post-main{order:1}.post-side{order:2;position:static;max-height:none;overflow:visible}.post-side .post-toc{display:none}.post-toc-mobile:not([hidden]){display:block}.post-side-back{display:none}.post-side-sec:last-of-type{border-bottom:none;padding-bottom:0}.post-cover{margin-bottom:var(--sp-4)}.post-body{font-size:1.125rem;line-height:1.85}.post-body h1,.post-body h2{font-size:1.525rem}.post-body h3{font-size:1.285rem}.post-rel-card{display:grid;grid-template-columns:104px 1fr;gap:var(--sp-3);align-items:start}.post-rel-thumb{aspect-ratio:4/3;margin-bottom:0}.post-nav{padding-top:var(--sp-2)}.post-nav-label{width:64px}.post-nav-title{font-size:var(--fs-base);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.home-statement{padding-top:var(--sp-6);padding-bottom:var(--sp-5)}.contact-page{padding-top:calc(60px + var(--sp-5))}.home-statement-body{grid-template-columns:1fr;gap:var(--sp-6)}.home-statement-label{flex-wrap:wrap;row-gap:var(--sp-1);margin-bottom:var(--sp-6)}.label-mono{white-space:normal;font-size:var(--fs-xs);letter-spacing:var(--ls-wide)}.home-statement-line{flex:1 1 40px}.home-statement-cta-title{font-size:calc(var(--fs-lg) - 2px)}.home-works-header{margin-bottom:var(--sp-5)}#home-thinking .thinking-card:first-child{margin-top:0}.home-works{padding-top:var(--sp-5)}#home-thinking{padding-top:var(--sp-6)}.home-work-card{margin-top:var(--sp-5);margin-bottom:var(--sp-5)}.home-work-card:last-child{margin-bottom:0}.home-work-card-info{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;column-gap:var(--sp-1);row-gap:var(--sp-1);grid-template-areas:"client year  ." "title  title title" "tags   tags  tags"}.home-work-card-code{display:none}.home-work-card-client{grid-area:client}.home-work-card-title{grid-area:title}.home-work-card-year{grid-area:year;margin-left:0}.home-work-card-sep-mobile{display:inline;margin:0 4px}.home-work-card-sep-desktop{display:none}.home-work-card-tags{grid-area:tags;text-align:right}.works-card{margin-top:var(--sp-5);margin-bottom:var(--sp-5)}.works-card-info{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;column-gap:var(--sp-1);row-gap:var(--sp-1);grid-template-areas:"client year  ." "title  title title" "tags   tags  tags"}.works-card-code{display:none}.works-card-title-wrap{display:contents}.works-card-title{grid-area:title}.works-card-client{grid-area:client;margin-top:0}.works-card-year{grid-area:year;margin-left:0;white-space:normal}.works-card-sep-mobile{display:inline;margin:0 4px}.works-card-sep-desktop{display:none}.works-card-tags{grid-area:tags;text-align:right;white-space:normal}.contact-headline{font-size:var(--fs-2xl)}.contact-footer-bar{display:contents}.contact-footer-bar .footer-links{order:1;justify-content:center;margin-top:var(--sp-7)}.contact-footer-bar .footer-copy{order:3;margin-top:var(--sp-3);text-align:center}.contact-social-links{order:2;justify-content:center;margin-top:var(--sp-3)}.about-timeline-item{grid-template-columns:1fr;gap:var(--sp-2)}.project-detail-hero{height:50vh}.project-detail-content{padding-top:var(--sp-5);padding-bottom:var(--sp-5)}.project-has-video .project-detail-meta-item:last-child{border-bottom:var(--border)}.project-detail-gallery{grid-template-columns:1fr;padding-bottom:var(--sp-5)}.lab-list{grid-template-columns:1fr;gap:var(--sp-4);padding-bottom:var(--sp-4)}.works-header.lab-header{padding-bottom:var(--sp-5)}.thinking-card{gap:var(--sp-5);padding:var(--sp-4) 0 var(--sp-4) 20px}.thinking-card-image{width:110px}.thinking-card-title{font-size:var(--fs-md)}.thinking-card-excerpt{display:none}}