:root{--ink:#111418;--paper:#f8f9fa;--white:#fff;--muted:#626970;--soft:#e9edf0;--line:#cdd3d8;--signal:#ff5a4f;--blue:#dce8f2;--max:1240px;--narrow:820px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--paper);letter-spacing:0;margin:0;font-family:Inter,Noto Sans TC,Microsoft JhengHei,Arial,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit}img{max-width:100%;display:block}svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}:focus-visible{outline:3px solid var(--signal);outline-offset:4px}.wrap{width:min(var(--max), calc(100% - 64px));margin-inline:auto}[data-en],body.en [data-zh]{display:none}body.en [data-en]{display:initial}.skip-link{z-index:99;color:var(--white);background:var(--ink);padding:10px 14px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{z-index:20;backdrop-filter:blur(14px);background:#f8f9faeb;border-bottom:1px solid #11141824;position:sticky;top:0}.site-nav{align-items:center;gap:28px;min-height:72px;display:flex}.brand{margin-right:auto;font-size:15px;font-weight:900}.brand small{color:var(--muted);margin-left:9px;font-size:12px;font-weight:600}.nav-links{align-items:center;gap:25px;font-size:13px;font-weight:700;display:flex}.nav-links a,.lang-toggle{position:relative}.nav-links a:after{content:"";background:var(--signal);transform-origin:0;height:2px;transition:transform .2s;position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}.nav-links a:hover:after{transform:scaleX(1)}.lang-toggle{border:1px solid var(--ink);cursor:pointer;background:0 0;min-width:70px;padding:7px 9px;font-size:12px;font-weight:800}.lang-toggle:hover{color:var(--white);background:var(--ink)}.hero{grid-template-columns:minmax(0,1.55fr) minmax(300px,.55fr);align-items:center;gap:80px;min-height:calc(100svh - 72px);padding-block:72px 54px;display:grid}.hero-copy{align-self:center}.hero-name{text-transform:uppercase;margin:0;font-size:12px;font-weight:900}.hero-name span{color:var(--muted);margin-left:10px;font-weight:600}h1,h2,h3,p{text-wrap:pretty}.hero h1{max-width:900px;margin:28px 0 34px;font-size:82px;font-weight:850;line-height:1.03}.hero h1 em{color:var(--signal);font-family:Iowan Old Style,Times New Roman,serif;font-weight:500}.hero-intro{max-width:700px;color:var(--muted);margin:0;font-size:19px}.actions{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.button{border:1px solid var(--ink);justify-content:center;align-items:center;gap:18px;min-height:48px;padding:0 18px;font-size:13px;font-weight:850;transition:color .18s,background .18s;display:inline-flex}.button.primary{color:var(--white);background:var(--ink)}.button.primary:hover{border-color:var(--signal);background:var(--signal)}.button.quiet:hover,.button.secondary:hover{background:var(--blue)}.hero-portrait{align-self:end;margin:0}.hero-portrait img{aspect-ratio:4/5.1;object-fit:cover;object-position:center top;filter:saturate(.86)contrast(1.03);width:100%}.hero-portrait figcaption{color:var(--muted);justify-content:space-between;margin-top:9px;font-size:10px;font-weight:800;display:flex}.social-links{flex-wrap:wrap;gap:18px;margin-top:18px;font-size:12px;font-weight:800;display:flex}.social-links a{align-items:center;gap:7px;display:inline-flex}.social-links svg{width:15px;height:15px}.social-links a:hover{color:var(--signal)}.section{padding-block:112px}.section-index{color:var(--signal);margin:0;font-size:11px;font-weight:900}.section-label{color:var(--muted);text-transform:uppercase;margin:0 0 18px;font-size:11px;font-weight:900}.section-head{grid-template-columns:1fr 3fr;gap:28px;margin-bottom:56px;display:grid}.section-head h2{max-width:820px;margin:0;font-size:40px;line-height:1.18}.editorial-grid{grid-template-columns:.5fr 2.2fr 1.3fr;align-items:start;gap:46px;display:grid}.about-section{color:var(--white);background:var(--ink)}.about-section .section-index{color:var(--signal)}.about-section .section-label,.about-section .about-body{color:#afb7bd}.about-copy h2{max-width:730px;margin:0;font-size:46px;line-height:1.22}.about-body p{margin:34px 0 30px;font-size:16px}.text-link{border-bottom:1px solid;align-items:center;gap:12px;padding-bottom:5px;font-size:13px;font-weight:850;display:inline-flex}.text-link:hover{color:var(--signal)}.focus-section{background:var(--blue)}.focus-list{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.focus-item{border-top:1px solid var(--ink);min-width:0;min-height:260px;padding:25px 32px 25px 0}.focus-item+.focus-item{border-left:1px solid #11141833;padding-left:32px}.focus-item>span{color:var(--muted);font-size:11px;font-weight:900}.focus-item h3{margin:54px 0 14px;font-size:24px}.focus-item p{color:var(--muted);margin:0;font-size:14px}.writing-section{background:var(--white)}.writing-list{border-top:1px solid var(--ink)}.writing-row{border-bottom:1px solid var(--line);grid-template-columns:130px minmax(0,1fr) 24px;align-items:start;gap:30px;padding-block:27px;transition:color .18s,padding .18s;display:grid}.writing-row:hover{color:var(--signal);padding-left:10px}.writing-row time{color:var(--muted);padding-top:5px;font-size:12px;font-weight:700}.writing-row h2,.writing-row h3{margin:0;font-size:23px;line-height:1.3}.writing-row p{max-width:760px;color:var(--muted);margin:7px 0 0;font-size:14px}.writing-empty{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);grid-template-columns:1fr 3fr;align-items:center;gap:28px;min-height:230px;display:grid}.writing-empty.large{min-height:360px}.empty-mark{color:var(--signal);margin:0;font-family:Iowan Old Style,Times New Roman,serif;font-size:46px}.writing-empty strong{font-size:26px}.writing-empty p:not(.empty-mark){max-width:650px;color:var(--muted);margin:9px 0 0}.section-link{margin-top:34px}.journey-section{background:var(--paper)}.journey-head{margin-bottom:38px}.timeline{max-width:970px;margin-left:auto;position:relative}.timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:18px;bottom:18px;left:160px}.timeline-entry{padding:9px 38px 9px 0;position:relative}.timeline-entry summary{cursor:pointer;grid-template-columns:136px 24px minmax(0,1fr);align-items:start;gap:12px;list-style:none;display:grid}.timeline-entry summary::-webkit-details-marker{display:none}.timeline-entry summary:after{content:"+";color:var(--muted);font-size:17px;position:absolute;top:8px;right:3px}.timeline-entry[open] summary:after{content:"−";color:var(--signal)}.timeline-date{color:var(--muted);padding-top:2px;font-size:11px;font-weight:800}.timeline-marker{min-height:18px;position:relative}.timeline-marker:before{content:"";border:2px solid var(--ink);background:var(--paper);border-radius:50%;width:8px;height:8px;position:absolute;top:4px;left:4px}.timeline-entry.project .timeline-marker:before{border-color:var(--signal);background:var(--signal)}.timeline-entry.experience .timeline-marker:before{background:#4e718a;border-color:#4e718a}.timeline-type{color:var(--muted);margin-bottom:2px;font-size:9px;font-weight:850;display:block}.timeline-summary strong{font-size:15px;line-height:1.4;display:block}.timeline-entry summary:hover strong{color:var(--signal)}.timeline-entry>p{max-width:720px;color:var(--muted);margin:7px 0 4px 172px;font-size:13px}.journey-link{margin:35px 0 0 calc(100% - 798px)}.projects-section{color:var(--white);background:var(--ink)}.projects-section .section-label{color:#afb7bd}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.project-listing{min-width:0}.project-listing>.project-card{height:100%}.project-card{min-width:0;color:var(--ink);background:var(--white);flex-direction:column;transition:transform .22s;display:flex}.project-card:hover{transform:translateY(-5px)}.project-media{aspect-ratio:16/10;background:var(--soft);position:relative;overflow:hidden}.project-media img{object-fit:cover;width:100%;height:100%;transition:transform .35s}.project-media.contain img{object-fit:contain;padding:16px}.project-card:hover .project-media img{transform:scale(1.025)}.project-number{color:var(--white);background:var(--ink);padding:5px 7px;font-size:10px;font-weight:850;position:absolute;top:12px;left:12px}.project-body{flex-direction:column;flex:1;min-height:300px;padding:22px;display:flex}.project-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:10px;font-weight:750;display:flex}.project-type{color:var(--signal);font-weight:900}.project-body h3{margin:20px 0 11px;font-size:21px;line-height:1.35}.project-summary{color:var(--muted);margin:0;font-size:13px}.tag-list{flex-wrap:wrap;gap:6px;margin-top:18px;display:flex}.tag{border:1px solid var(--line);color:var(--muted);padding:3px 6px;font-size:10px;font-weight:750}.project-footer{justify-content:space-between;margin-top:auto;padding-top:20px;font-size:11px;font-weight:850;display:flex}.projects-section .section-link{color:var(--white)}.page-intro{flex-direction:column;justify-content:flex-end;min-height:540px;padding-block:80px;display:flex}.page-intro h1,.archive-intro h1{max-width:950px;margin:20px 0 28px;font-size:68px;line-height:1.08}.page-intro>p:last-child,.archive-intro>p:last-child{max-width:700px;color:var(--muted);margin:0;font-size:17px}.page-intro+.journey-section{padding-top:50px}.writing-archive{background:var(--white);padding-top:38px}.writing-toolbar,.archive-toolbar{grid-template-columns:minmax(260px,.8fr) minmax(0,2.2fr);gap:20px;margin-bottom:42px;display:grid}.search-box{position:relative}.search-box svg{width:18px;height:18px;color:var(--muted);pointer-events:none;position:absolute;top:14px;left:14px}.search-box input{border:1px solid var(--ink);background:var(--white);border-radius:0;width:100%;min-height:46px;padding:0 14px 0 42px}.filters{flex-wrap:wrap;gap:7px;display:flex}.filter{border:1px solid var(--line);cursor:pointer;background:0 0;min-height:38px;padding:6px 11px;font-size:12px;font-weight:800}.filter:hover,.filter[aria-pressed=true]{color:var(--white);border-color:var(--ink);background:var(--ink)}.empty{min-height:190px;color:var(--muted);text-align:center;place-items:center;display:none}.empty.is-visible{display:grid}.archive-intro{flex-direction:column;justify-content:flex-end;min-height:480px;padding-block:72px;display:flex}.archive{color:var(--ink);background:var(--white);padding:55px 0 110px}.result-bar{color:var(--muted);justify-content:space-between;gap:16px;margin-bottom:18px;font-size:11px;font-weight:700;display:flex}.project-listing.is-hidden{display:none}.load-more{border:1px solid var(--ink);cursor:pointer;background:0 0;min-width:180px;min-height:46px;margin:36px auto 0;font-weight:850;display:none}.load-more:hover{color:var(--white);background:var(--ink)}.load-more.is-visible{display:block}.detail-hero{min-height:620px;color:var(--ink);background:var(--blue);grid-template-columns:1fr 1.15fr;align-items:stretch;display:grid}.detail-hero>img{object-fit:cover;grid-area:1/2;width:100%;height:100%;min-height:620px}.detail-hero.contain>img{object-fit:contain;padding:30px}.detail-hero-copy{grid-area:1/1;width:min(520px,100% - 64px);margin:auto;padding:64px 0}.detail-hero h1{margin:22px 0 0;font-size:56px;line-height:1.08}.eyebrow{color:var(--signal);margin:0;font-size:10px;font-weight:900}.detail-meta{color:var(--muted);flex-wrap:wrap;gap:9px 16px;margin-top:28px;font-size:12px;font-weight:700;display:flex}.detail-page{padding:70px 0 110px}.back-link{color:var(--muted);align-items:center;gap:8px;margin-bottom:42px;font-size:12px;font-weight:850;display:inline-flex}.back-link:before{content:"←"}.back-link:hover{color:var(--signal)}.detail-lead{max-width:860px;margin:0 0 64px;font-size:29px;line-height:1.4}.detail-section{border-top:1px solid var(--line);grid-template-columns:minmax(150px,.35fr) minmax(0,1fr);gap:46px;padding:52px 0;display:grid}.detail-section h2{margin:0;font-size:12px}.detail-section ul{margin:0;padding-left:19px}.detail-section li+li{margin-top:9px}.responsibility-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;display:grid}.responsibility-block{border-top:3px solid var(--ink);padding-top:13px}.responsibility-block.owned{border-color:var(--signal)}.responsibility-block.collaborated{border-color:#4e718a}.responsibility-block h3{margin:0 0 12px;font-size:15px}.responsibility-block ul{color:var(--muted);font-size:13px}.evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.evidence{background:var(--white);margin:0}.evidence img{aspect-ratio:16/10;object-fit:cover;width:100%}.evidence figcaption{color:var(--muted);padding:9px 0;font-size:12px}.score-list{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin:22px 0;display:grid}.score-list div{padding:15px 15px 15px 0}.score-list dt{color:var(--muted);font-size:11px}.score-list dd{margin:7px 0 0;font-weight:900}.project-links{flex-wrap:wrap;gap:9px;display:flex}.project-links a{border:1px solid var(--ink);align-items:center;min-height:40px;padding:0 12px;font-size:12px;font-weight:850;display:inline-flex}.project-links a:hover{color:var(--white);background:var(--ink)}.resume-page{min-height:calc(100vh - 200px);padding:110px 0}.resume-page h1{max-width:850px;margin:22px 0 28px;font-size:68px;line-height:1.08}.resume-page>p{max-width:660px;color:var(--muted);font-size:17px}.resume-actions{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.resume-note{margin-top:22px;font-size:12px!important}.article-page{max-width:960px;padding-block:70px 120px}.article-header{margin-bottom:56px}.article-meta{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:10px;font-weight:800;display:flex}.article-header h1{margin:24px 0;font-size:62px;line-height:1.12}.article-header>p{max-width:760px;color:var(--muted);font-size:19px}.article-tools{justify-content:space-between;align-items:flex-end;gap:20px;margin-top:30px;display:flex}.copy-link{border:0;border-bottom:1px solid var(--ink);cursor:pointer;background:0 0;padding:0 0 4px;font-size:12px;font-weight:850}.copy-link:hover{color:var(--signal);border-color:var(--signal)}.article-cover{object-fit:cover;width:100%;max-height:560px;margin-bottom:54px}.prose{max-width:740px;font-size:17px;line-height:1.85}.prose h2{margin:2.2em 0 .7em;font-size:30px;line-height:1.3}.prose h3{margin:1.8em 0 .6em;font-size:22px}.prose a{color:var(--signal);text-decoration:underline}.prose img{margin-block:32px}.prose blockquote{border-left:4px solid var(--signal);color:var(--muted);margin:30px 0;padding-left:22px;font-size:20px}.prose code{background:var(--soft);padding:2px 5px;font-size:.9em}.prose pre{color:var(--white);background:var(--ink);padding:20px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.site-footer{color:var(--white);background:var(--ink);padding:72px 0 46px}.footer-grid{grid-template-columns:1.4fr 1fr auto;align-items:end;gap:30px;display:grid}.footer-label{color:#afb7bd;margin:0 0 8px;font-size:12px}.footer-grid h2{margin:0;font-size:28px}.footer-grid h2 span{color:#afb7bd;font-size:14px;font-weight:500}.social-links.compact{margin:0}.social-links.compact a:hover{color:var(--signal)}.footer-meta{color:#899198;margin:0;font-size:10px;font-weight:700}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width<=960px){.wrap{width:min(var(--max), calc(100% - 40px))}.nav-links{display:none}.hero{grid-template-columns:1fr .45fr;gap:38px;min-height:0;padding-block:64px}.hero h1{font-size:60px}.hero-intro{font-size:17px}.editorial-grid{grid-template-columns:.35fr 1.6fr 1fr;gap:26px}.about-copy h2{font-size:36px}.section-head{grid-template-columns:.35fr 2.65fr}.section-head h2{font-size:34px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline{max-width:none}.journey-link{margin-left:172px}.detail-hero,.detail-hero>img{min-height:540px}.detail-hero-copy{width:calc(100% - 40px)}.detail-hero h1{font-size:44px}.responsibility-grid{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}.footer-meta{grid-column:1/-1}}@media (width<=680px){.wrap{width:min(var(--max), calc(100% - 28px))}.site-nav{min-height:62px}.brand small{display:none}.hero{flex-direction:column;gap:34px;padding-block:45px;display:flex}.hero-copy{order:1}.hero-portrait{order:0;width:100%}.hero-portrait img{aspect-ratio:4/4.4;object-position:center 22%}.hero h1{margin:22px 0 25px;font-size:47px}.hero-intro{font-size:16px}.actions{flex-direction:column}.button{justify-content:space-between;width:100%}.section{padding-block:76px}.section-head,.editorial-grid{grid-template-columns:1fr;gap:24px}.section-head{margin-bottom:38px}.section-head h2,.about-copy h2{font-size:31px}.about-body p{margin-top:0}.focus-list{grid-template-columns:1fr}.focus-item{min-height:0;padding:22px 0}.focus-item+.focus-item{border-left:0;padding-left:0}.focus-item h3{margin:26px 0 9px;font-size:21px}.writing-empty{grid-template-columns:1fr;gap:16px;min-height:270px;padding-block:30px}.writing-row{grid-template-columns:1fr 20px;gap:14px}.writing-row time{grid-column:1/-1}.writing-row h2,.writing-row h3{font-size:20px}.timeline{margin:0}.timeline:before{left:93px}.timeline-entry{padding-right:26px}.timeline-entry summary{grid-template-columns:74px 16px minmax(0,1fr);gap:8px}.timeline-date{font-size:9px}.timeline-marker:before{left:1px}.timeline-summary strong{font-size:13px}.timeline-entry>p{margin-left:98px;font-size:12px}.journey-link{margin-left:98px}.project-grid{grid-template-columns:1fr}.project-body{min-height:270px}.page-intro{min-height:460px;padding-block:60px}.page-intro h1,.archive-intro h1,.resume-page h1{font-size:46px}.page-intro>p:last-child,.archive-intro>p:last-child{font-size:15px}.writing-toolbar,.archive-toolbar{grid-template-columns:1fr}.result-bar{flex-direction:column;align-items:flex-start}.detail-hero{flex-direction:column;min-height:0;display:flex}.detail-hero>img{aspect-ratio:4/3;order:0;min-height:0}.detail-hero-copy{order:1;width:calc(100% - 28px)}.detail-hero h1{font-size:38px}.detail-lead{font-size:23px}.detail-section{grid-template-columns:1fr;gap:22px;padding:40px 0}.evidence-grid,.score-list{grid-template-columns:1fr}.score-list div{border-bottom:1px solid var(--line)}.article-header h1{font-size:43px}.article-tools{flex-direction:column;align-items:flex-start}.footer-grid{grid-template-columns:1fr;align-items:start}.footer-meta{grid-column:auto}}
