.writing-shell{background:var(--color-surface);color:var(--color-foreground);font-family:DM Sans,Noto Sans TC,sans-serif;min-height:100vh}.writing-shell :where(a,button,input,select,summary):focus-visible{outline:2px solid var(--color-accent);outline-offset:6px}.writing-footer,.writing-nav{align-items:center;display:flex;gap:24px;justify-content:space-between;margin:auto;max-width:1440px;padding:32px 6vw}.writing-nav{font-size:14px}.writing-signature{font-size:21px;letter-spacing:-.04em}.writing-signature span{color:var(--color-accent);margin-left:12px}.writing-footer{color:var(--color-foreground-muted);font-size:13px;padding-bottom:40px;padding-top:80px}.writing-shell a{transition:color .2s}.writing-shell a:hover{color:var(--color-accent)}.archive-page,.reader-page{margin:auto;max-width:1240px;padding:80px 6vw 30px}.archive-heading{margin-bottom:72px}.archive-heading h1{font-size:clamp(48px,7vw,96px);font-weight:500;letter-spacing:-.055em;line-height:1.1}.archive-heading h1 span{color:var(--color-accent)}.archive-heading p{color:var(--color-foreground-muted);line-height:1.8;margin-top:30px}.archive-tools{align-items:end;display:flex;gap:32px}.archive-tools label{color:var(--color-foreground-muted);display:flex;flex-direction:column;font-size:13px;gap:12px}.archive-search{flex:1}.archive-tools input,.archive-tools select{background:transparent;border:0;border-bottom:1px solid var(--color-border-strong);border-radius:0;color:var(--color-foreground);font-size:16px;min-width:130px;padding:12px 0;width:100%}.archive-tools select option{background:var(--color-surface)}.archive-status{color:var(--color-foreground-muted);display:flex;font-size:13px;justify-content:space-between;margin:26px 0 38px}.archive-empty button,.archive-status button{color:var(--color-accent)}.archive-empty{padding:80px 0}.archive-list{list-style:none;padding:0;position:relative}.archive-list:before{background:linear-gradient(color-mix(in srgb,var(--color-accent) 60%,transparent),color-mix(in srgb,var(--color-accent) 13%,transparent));bottom:50px;content:"";left:118px;position:absolute;top:12px;width:1px}.archive-entry{display:grid;gap:38px;grid-template-columns:118px 1fr;position:relative}.archive-entry time{color:var(--color-foreground-muted);font-size:13px;padding-top:3px}.archive-entry a{display:block;min-width:0;padding:0 42px 48px 0;position:relative}.archive-entry a:before{background:var(--color-foreground-muted);border-radius:50%;content:"";height:7px;left:-41px;position:absolute;top:7px;transition:background .2s,box-shadow .2s;width:7px}.archive-entry a:focus-visible:before,.archive-entry a:hover:before{background:var(--color-accent);box-shadow:0 0 18px color-mix(in srgb,var(--color-accent) 50%,transparent)}.archive-category{color:var(--color-foreground-muted);font-size:12px}.archive-entry h2{font-size:clamp(22px,2.2vw,29px);font-weight:500;letter-spacing:-.025em;line-height:1.5;margin:10px 0 12px;overflow-wrap:anywhere}.archive-entry p{color:var(--color-foreground-muted);display:-webkit-box;font-size:14px;-webkit-line-clamp:2;line-height:1.85;max-width:65ch;-webkit-box-orient:vertical;overflow:hidden}.archive-open{color:var(--color-accent);font-size:22px;position:absolute;right:0;top:36px}.reader-page{padding-top:45px}.reader-back{color:var(--color-foreground-muted);font-size:14px}.reader-heading{margin:60px 0 65px;max-width:900px}.reader-category{color:var(--color-accent);margin-bottom:20px}.reader-heading h1{font-size:clamp(32px,4.2vw,58px);font-weight:500;letter-spacing:-.035em;line-height:1.35;overflow-wrap:anywhere}.reader-meta{color:var(--color-foreground-muted);display:flex;flex-wrap:wrap;font-size:13px;gap:22px;margin:28px 0}.reader-description{color:var(--color-foreground-soft);font-size:18px;line-height:1.9;max-width:65ch}.reader-tags{color:var(--color-foreground-muted);display:flex;flex-wrap:wrap;font-size:13px;gap:18px;margin-top:24px}.reader-grid{align-items:start;display:grid;gap:60px;grid-template-columns:minmax(0,1fr) 230px}.reading-content{grid-column:1;grid-row:1;min-width:0}.reader-toc{font-size:13px;grid-column:2;grid-row:1;max-height:calc(100vh - 70px);overflow-y:auto;position:sticky;scrollbar-width:thin;top:35px}.reader-toc summary{color:var(--color-accent);cursor:pointer;font-size:14px;margin-bottom:20px}.reader-toc ol{list-style:none;padding:0}.reader-toc ol ol{border-left:1px solid var(--color-border);margin-left:3px;padding-left:15px}.reader-toc a{color:var(--color-foreground-muted);display:block;line-height:1.7;padding:7px 0}.reading-content .prose{color:var(--color-foreground-soft);font-size:17px;line-height:1.95;max-width:72ch;overflow-wrap:anywhere;--tw-prose-body:var(--color-foreground-soft);--tw-prose-headings:var(--color-foreground);--tw-prose-bold:var(--color-foreground);--tw-prose-links:var(--color-accent);--tw-prose-code:var(--color-foreground);--tw-prose-quotes:var(--color-foreground-soft);--tw-prose-counters:var(--color-foreground-muted);--tw-prose-bullets:var(--color-foreground-muted)}.reading-content .prose :where(h1,h2,h3,h4){color:var(--color-foreground);line-height:1.5;scroll-margin-top:30px}.reading-content .prose a{color:var(--color-accent);text-underline-offset:4px}.reading-content .prose pre{background:var(--color-surface-elevated);border:1px solid var(--color-border);font-size:13px;line-height:1.8;max-width:100%;overflow-x:auto;padding:20px}.reading-content .prose table{display:block;max-width:100%;overflow-x:auto}.reading-content .prose blockquote{border-left-color:var(--color-accent);color:var(--color-foreground-soft)}.reader-cover{height:auto;margin-bottom:40px;width:100%}.reading-progress{height:3px;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:100}.reading-progress span{background:var(--color-accent);display:block;height:100%;transform-origin:left}.reader-share{color:var(--color-foreground-muted);display:flex;flex-wrap:wrap;font-size:13px;gap:24px;margin-top:55px}.reader-related{margin-top:90px}.reader-related>h2{color:var(--color-foreground-muted);margin-bottom:28px}.reader-related>a{display:block;padding:20px 0}.reader-related span{color:var(--color-foreground-muted);font-size:12px}.reader-related h3{font-size:22px;margin-top:8px}@media(max-width:850px){.reader-grid{display:flex;flex-direction:column;gap:35px}.reader-toc{max-height:none;position:static;width:100%}.reader-toc nav{max-height:260px;overflow:auto}.reading-content{width:100%}.reader-heading{margin-bottom:35px;margin-top:40px}}@media(max-width:550px){.archive-page,.reader-page,.writing-footer,.writing-nav{padding-left:24px;padding-right:24px}.archive-page{padding-top:45px}.archive-heading{margin-bottom:42px}.archive-tools{flex-wrap:wrap;gap:20px}.archive-search{flex-basis:100%}.archive-tools label:not(.archive-search){flex:1}.archive-entry{gap:10px;grid-template-columns:minmax(0,1fr);padding-left:22px}.archive-list:before{left:0}.archive-entry a:before{left:-25px}.archive-entry a{padding-bottom:40px;padding-right:24px}.archive-open{font-size:18px}.reading-content .prose{font-size:16px}.writing-footer{align-items:start;flex-direction:column}}@media(prefers-reduced-motion:reduce){.writing-shell *,.writing-shell :before{scroll-behavior:auto!important;transition:none!important}}@media(max-width:700px){.archive-page{padding:45px 24px 30px}}.interior-nav{display:flex;flex-wrap:wrap;gap:28px;margin-left:auto}.interior-nav a{color:var(--color-foreground-muted)}.interior-nav a.router-link-active{color:var(--color-accent);text-decoration:underline;text-underline-offset:8px}.interior-page{margin:auto;max-width:1240px;padding:80px 6vw 30px}.interior-page h1{font-size:clamp(48px,7vw,96px);font-weight:500;letter-spacing:-.055em;line-height:1.1;overflow-wrap:anywhere}.interior-page h2{font-weight:500;letter-spacing:-.035em}.interior-kicker{color:var(--color-accent);font-size:14px;margin-bottom:20px}.identity-heading{align-items:center;display:grid;gap:65px;grid-template-columns:minmax(0,1fr) 180px}.identity-bio{color:var(--color-foreground-soft);line-height:1.9;margin:30px 0 18px;max-width:60ch}.career-period,.identity-location{color:var(--color-foreground-muted);font-size:13px;line-height:1.8}.identity-photo{border-radius:48% 48% 3px 3px;filter:saturate(.65);height:230px;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:180px}.interior-links{color:var(--color-accent);display:flex;flex-wrap:wrap;font-size:14px;gap:24px;margin-top:28px}.resume-chapter{margin-top:100px}.resume-chapter>h2{font-size:30px;margin-bottom:44px}.career-list{position:relative}.career-list:before{background:linear-gradient(color-mix(in srgb,var(--color-accent) 60%,transparent),color-mix(in srgb,var(--color-accent) 13%,transparent));bottom:40px;content:"";left:180px;position:absolute;top:7px;width:1px}.career-entry{display:grid;gap:38px;grid-template-columns:180px minmax(0,1fr);padding-bottom:58px}.career-entry>div{position:relative}.career-entry>div:before{background:var(--color-accent);border-radius:50%;content:"";height:7px;left:-41px;position:absolute;top:7px;width:7px}.career-entry h3,.credential-lines h3,.resume-project h3{font-size:24px;font-weight:500;line-height:1.5;margin-bottom:20px}.career-entry .interior-kicker{margin-bottom:10px}.interior-bullets{color:var(--color-foreground-soft);font-size:15px;line-height:1.9;list-style:disc;padding-left:18px}.interior-bullets li{margin-bottom:12px;padding-left:5px}.interior-bullets li::marker{color:var(--color-accent)}.interior-technologies{color:var(--color-foreground-muted);font-size:13px;line-height:1.9;margin-top:26px}.resume-project{margin-bottom:45px;padding-left:218px}.resume-project>p:not([class]){color:var(--color-foreground-soft);line-height:1.9;margin-bottom:24px}.interior-all{color:var(--color-accent);display:inline-block;margin-left:218px}.skill-lines>div{display:grid;gap:38px;grid-template-columns:180px minmax(0,1fr);padding:22px 0}.skill-lines dt{color:var(--color-accent);font-size:14px}.skill-lines dd{color:var(--color-foreground-soft);line-height:1.9}.credential-lines article{align-items:center;display:flex;gap:30px;padding:25px 0}.credential-lines img{height:90px;-o-object-fit:contain;object-fit:contain;width:90px}.credential-lines h3{font-size:21px;margin:8px 0}.credential-lines a{font-size:13px}.credential-lines a,.work-heading h1 span{color:var(--color-accent)}.work-index{color:var(--color-foreground-muted);display:flex;flex-wrap:wrap;font-size:13px;gap:18px 28px;line-height:1.8;margin-top:40px;max-width:75ch}.case-study{display:grid;gap:38px;grid-template-columns:180px minmax(0,1fr);padding-top:100px;scroll-margin-top:30px}.case-context{color:var(--color-foreground-muted);font-size:13px;line-height:1.8;padding-top:8px}.case-context p+p{margin-top:12px}.case-body{border-left:1px solid color-mix(in srgb,var(--color-accent) 33%,transparent);min-width:0;padding-left:35px}.case-body h2{font-size:clamp(28px,3vw,42px);line-height:1.35;overflow-wrap:anywhere}.case-subtitle{color:var(--color-accent);margin-top:16px}.case-description{color:var(--color-foreground-soft);font-size:17px;line-height:1.9;margin-top:24px}.case-role{font-size:14px;line-height:1.8;margin-top:24px}.case-team{color:var(--color-foreground-muted);font-size:13px;margin-top:8px}.case-stats{display:flex;flex-wrap:wrap;gap:28px 40px;margin:35px 0}.case-stats dt{color:var(--color-accent);font-size:32px;letter-spacing:-.04em}.case-stats dd{color:var(--color-foreground-muted);font-size:12px;margin-top:6px}.case-body details{margin-top:30px}.case-body summary{color:var(--color-accent);cursor:pointer;font-size:14px;padding:10px 0}.case-highlights{margin-top:24px}.case-gallery{display:flex;gap:20px;margin-top:30px;overflow-x:auto;padding-bottom:16px;scroll-snap-type:x proximity;scrollbar-color:var(--color-accent) var(--color-surface-elevated)}.case-gallery img{background:var(--color-surface-elevated);flex:0 0 auto;height:360px;max-width:100%;-o-object-fit:contain;object-fit:contain;scroll-snap-align:start}@media(max-width:700px){.writing-nav{flex-wrap:wrap;gap:20px}.interior-nav{font-size:13px;gap:18px}.writing-nav>button{background:transparent;padding:0}.interior-page{padding:45px 24px 20px}.identity-heading{gap:30px;grid-template-columns:minmax(0,1fr)}.identity-photo{height:140px;width:110px}.career-entry,.case-study,.skill-lines>div{gap:16px;grid-template-columns:minmax(0,1fr)}.career-entry{padding-left:22px}.career-list:before{left:0}.career-entry>div:before{left:-25px}.resume-project{padding-left:22px}.interior-all{margin-left:22px}.resume-chapter{margin-top:65px}.case-study{padding-top:65px}.case-body{padding-left:22px}.case-gallery img{height:260px}.credential-lines img{height:64px;width:64px}}.case-gallery:focus-visible{outline:2px solid var(--color-accent);outline-offset:6px}.writing-nav{background:color-mix(in srgb,var(--color-surface) 96%,transparent);border-bottom:1px solid color-mix(in srgb,var(--color-border) 40%,transparent);flex-wrap:nowrap;height:88px;max-width:none;padding:0 max(6vw,calc(50vw - 633.5px));position:sticky;top:0;z-index:50}.interior-nav{gap:16px;justify-content:space-between;width:310px}.interior-language{flex-shrink:0;width:88px}.interior-language select{background:transparent;color:var(--color-foreground);font-size:13px;padding:8px 0;width:100%}.interior-language option{background:var(--color-surface)}.mobile-menu{display:none}.case-study,.resume-chapter{scroll-margin-top:120px}.reader-toc{max-height:calc(100vh - 140px);top:110px}.reading-content .prose :where(h1,h2,h3,h4){scroll-margin-top:120px}.reader-cover{aspect-ratio:16/9;-o-object-fit:contain;object-fit:contain}@media(min-width:851px){.reader-toc-disclosure>nav{display:block!important}.reader-toc-disclosure::details-content{content-visibility:visible}.reader-toc-disclosure>summary{list-style:none;pointer-events:none}.reader-toc-disclosure>summary::-webkit-details-marker{display:none}}@media(max-width:700px){.writing-nav{gap:18px;height:72px;padding:0 24px}.writing-signature{font-size:18px;white-space:nowrap}.interior-nav{display:none}.interior-language{margin-left:auto;width:64px}.mobile-menu{display:block}.mobile-menu summary{cursor:pointer;font-size:13px;list-style:none;white-space:nowrap}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:0 20px 30px #0004;display:flex;flex-direction:column;left:0;padding:20px 24px;position:absolute;right:0;top:72px}.mobile-menu nav a{padding:14px 0}}.interior-nav{display:grid;gap:0;grid-template-columns:repeat(3,1fr);position:relative;text-align:center}.interior-nav a.router-link-active{text-decoration:none}.interior-nav:after{background:var(--color-accent);bottom:-12px;content:"";height:1px;left:0;position:absolute;transform:translate(calc(var(--active-tab)*100%));transition:transform .22s ease;width:33.33333%}.chapter-nav{background:color-mix(in srgb,var(--color-surface) 96%,transparent);display:flex;gap:26px;margin-top:44px;overflow-x:auto;padding:20px 0;position:sticky;scrollbar-width:thin;top:88px;z-index:30}.chapter-nav a{color:var(--color-foreground-muted);font-size:13px;white-space:nowrap}.chapter-nav a[aria-current],.reader-toc a[aria-current]{color:var(--color-accent)}.editorial-projects .case-study,.editorial-resume .resume-chapter{scroll-margin-top:170px}.gallery-controls{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:13px;gap:20px;margin-top:24px}.gallery-controls button{color:var(--color-accent);font-size:22px;padding:4px 12px}.gallery-controls button:disabled{opacity:.3}.case-gallery{margin-top:10px}.case-gallery img{flex-basis:100%;width:100%}@media(max-width:850px){.reader-toc{background:var(--color-surface);max-height:none;padding:16px 0;position:sticky;top:88px;z-index:30}.reader-toc summary{margin-bottom:0}.reader-toc nav{margin-top:18px}}@media(max-width:700px){.interior-nav{display:none}.chapter-nav,.reader-toc{top:72px}}@supports (interpolate-size:allow-keywords){.case-body details{interpolate-size:allow-keywords}.case-body details::details-content{block-size:0;overflow:clip;transition:block-size .24s ease,content-visibility allow-discrete .24s}.case-body details[open]::details-content{block-size:auto}}@media(prefers-reduced-motion:reduce){.case-body details::details-content{transition:none}.interior-nav:after{transition:none}}.identity-role{margin:24px 0 0}
