@font-face{font-family:Han;src:url('assets/han-400.woff?v=20261024m2') format('woff');font-weight:400;font-display:swap}@font-face{font-family:Han;src:url('assets/han-600.woff?v=20261024m2') format('woff');font-weight:600;font-display:swap}@font-face{font-family:Han;src:url('assets/han-700.woff?v=20261024m2') format('woff');font-weight:700;font-display:swap}
:root{--paper:#f6f5f0;--ink:#202d26;--muted:#66716a;--line:#cbd0c8;--sage:#e8ede6;--sand:#eee9de;--rose:#f1e7e2;--accent:#425d4e;--space:clamp(64px,7vw,112px)}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Calibri,Han,'Noto Sans TC',sans-serif;font-size:18px;line-height:1.8;-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:600;line-height:1.35;letter-spacing:-.035em}h1{font-size:clamp(44px,5.4vw,76px)}h2{font-size:clamp(30px,3vw,44px)}h3{font-size:25px}p{overflow-wrap:break-word}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}img{display:block;max-width:100%;height:auto}.wrap{width:min(1280px,calc(100% - 112px));margin-inline:auto}.section{padding-block:var(--space);border-top:1px solid var(--line)}.eyebrow{font-size:13px;font-weight:700;letter-spacing:.12em;line-height:1.5}.muted,.note{color:var(--muted)}.note{font-size:14px;line-height:1.8}.text-link{display:inline-flex;align-items:center;justify-content:space-between;gap:46px;padding:10px 0;border-bottom:1px solid var(--ink);font-weight:600;font-size:16px}.text-link span{font-size:23px}.skip{position:fixed;top:-70px;left:20px;background:var(--ink);color:white;padding:12px;z-index:99}.skip:focus{top:10px}.site-header{position:sticky;top:0;z-index:20;height:88px;padding:0 56px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);background:rgba(246,245,240,.97)}.wordmark{display:flex;gap:14px;align-items:baseline;font-size:22px;font-weight:700;letter-spacing:.06em}.wordmark span{font-size:10px;letter-spacing:.12em}.site-header nav{display:flex;align-items:center;gap:32px;font-size:15px}.site-header nav a{position:relative}.site-header nav a:not(.nav-contact):after{content:'';position:absolute;left:0;bottom:-5px;width:0;height:1px;background:var(--ink);transition:width .2s}.site-header nav a:hover:after{width:100%}.nav-contact{border:1px solid var(--line);padding:8px 16px}.nav-contact span{margin-left:16px}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:46% 54%;align-items:center;min-height:650px;padding-block:65px}.hero .eyebrow{margin-bottom:30px}.hero h1{line-height:1.18;letter-spacing:-.055em}.hero h1 span{color:var(--accent)}.hero-name{margin-top:28px;font-size:23px;font-weight:600}.hero-name span{margin-left:20px;font-size:17px;font-weight:400}.intro{margin-top:16px;color:var(--muted);font-size:17px;line-height:1.9}.hero .text-link{margin-top:28px}.hero-visual{margin:0 0 0 16px;align-self:stretch;display:flex;flex-direction:column;justify-content:center}.hero-visual img{width:100%;height:430px;object-fit:contain;padding:22px;background:var(--sand)}.hero-visual figcaption{display:flex;justify-content:space-between;gap:15px;padding-top:14px;font-size:12px;color:var(--muted)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:44px}.section-head .eyebrow{margin-bottom:16px}.section-head>p{font-size:16px;color:var(--muted);max-width:400px;flex-shrink:0}.section-head>.text-link{flex-shrink:0}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px 36px}.work-card:nth-child(even){transform:translateY(48px)}.work-grid{padding-bottom:48px}.work-image{display:block;position:relative;overflow:hidden}.sage{background:var(--sage)}.sand{background:var(--sand)}.rose{background:var(--rose)}.work-image img{height:350px;width:100%;object-fit:contain;padding:30px;transition:transform .35s ease}.work-image:hover img{transform:scale(1.025)}.image-link{position:absolute;right:18px;bottom:16px;font-size:12px;background:var(--paper);padding:4px 10px;opacity:0;transition:opacity .2s}.work-image:hover .image-link,.work-image:focus-visible .image-link{opacity:1}.work-meta{display:flex;align-items:flex-start;gap:20px;margin-top:23px}.work-meta .index{font-size:15px;color:var(--muted);padding-top:2px}.work-meta .eyebrow{font-size:11px;letter-spacing:.1em;margin-bottom:5px}.work-meta h3{margin-bottom:5px}.work-meta p:not(.eyebrow){font-size:16px;color:var(--muted)}.round-link{margin-left:auto;width:38px;height:38px;border:1px solid var(--line);display:grid;place-items:center;border-radius:50%;flex-shrink:0}.sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px}.sheet-label{display:flex;gap:18px;align-items:baseline;border-top:1px solid var(--line);padding-top:20px;margin-bottom:24px}.sheet-label span{font-size:14px;color:var(--muted)}.sheet-label strong{font-size:24px;font-weight:600}.engineering .figure img{height:340px;object-fit:contain;padding:8px}.engineering>.note{margin-top:20px}.figure{min-width:0}.image-open{position:relative;display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.image-open img{width:100%;height:auto;object-fit:contain}.zoom-mark{position:absolute;right:10px;bottom:10px;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);background:var(--paper);font-size:20px;opacity:.7;transition:opacity .2s}.image-open:hover .zoom-mark{opacity:1}.figure figcaption{font-size:14px;color:var(--muted);padding-top:14px;line-height:1.7}.application-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.application-grid .image-open{background:var(--sand)}.application-grid img{height:250px;padding:22px}.application-caption{padding-top:20px}.application-caption h3{font-size:21px}.application-caption p{font-size:15px;margin-top:7px}.application-caption .note{display:block;margin-top:10px;font-size:12px}.about-section{background:#eaece5}.about-section .section{border-top:0}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-grid .eyebrow{margin-bottom:20px}.about-grid h2{font-size:44px;line-height:1.4}.about-lead{margin-top:28px;font-size:22px}.about-copy>p{max-width:580px}.career{margin-top:36px;padding-top:26px;border-top:1px solid #bfc8bc}.career>span{font-size:14px;color:var(--muted)}.career h3{font-size:24px;margin-top:10px}.career p{font-size:16px;color:var(--muted);margin-top:5px}.profile-list{margin:30px 0 0}.profile-list>div{display:grid;grid-template-columns:130px 1fr;padding-block:14px;border-top:1px solid #cbd0c5;font-size:16px}.profile-list dt{color:var(--muted)}.profile-list dd{margin:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:60px;padding-top:30px;border-top:1px solid #bfc8bc}.stats strong{font-size:68px;line-height:1.2;letter-spacing:-.04em;font-weight:600}.stats strong span{font-size:38px;margin-left:5px}.stats strong small{font-size:22px;margin-right:10px}.stats p{font-size:15px;color:var(--muted);margin-top:8px}.stats-note{font-size:13px;color:var(--muted);margin-top:26px}.downloads{display:grid;grid-template-columns:1fr 1fr;gap:80px;border-top:0}.downloads .eyebrow{margin-bottom:16px}.downloads>div>p:not(.eyebrow){font-size:16px;color:var(--muted);margin-top:18px}.download-links a{border-bottom:1px solid var(--line);padding:24px 0;display:flex;align-items:center;justify-content:space-between}.download-links a:first-child{border-top:1px solid var(--line)}.download-links strong{font-size:21px;font-weight:600;display:block}.download-links small{font-size:14px;color:var(--muted);display:block;margin-top:6px}.download-links a>span:last-child{font-size:30px}footer{padding:70px 56px 24px;background:#263a31;color:#f2f2e9}.footer-main{max-width:1280px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:80px}.footer-main h2{margin-top:18px;font-size:40px}.footer-main>div>p:last-child{font-size:16px;color:#c8d0c6;margin-top:24px}.contact-block{align-self:center}.contact-block>span{font-size:14px;color:#bdc9bd}.contact-block>a{display:block;padding:12px 0;border-bottom:1px solid #758674;font-size:clamp(18px,2.3vw,30px);white-space:nowrap}.contact-block>a span{float:right}.contact-block p{font-size:15px;color:#bdc9bd;margin-top:22px}.footer-note{max-width:1280px;margin:70px auto 0;border-top:1px solid #5c6c5b;padding-top:20px;display:flex;align-items:baseline;justify-content:space-between;gap:30px;font-size:12px;color:#c4cdc0}.footer-note p{max-width:800px}.footer-note a{white-space:nowrap}.case-intro{padding-top:32px;padding-bottom:54px}.back-link{display:inline-block;font-size:14px;color:var(--muted);margin-bottom:40px}.case-intro>.eyebrow{margin-bottom:20px}.case-intro h1{font-size:56px}.case-intro h1>span{display:block;font-size:30px;font-weight:400;color:var(--muted);margin-top:14px;letter-spacing:-.02em}.case-summary{font-size:18px;margin-top:24px;max-width:760px}.case-cover{width:min(1440px,100%);margin:auto}.case-cover img{height:510px;width:min(1100px,100%);margin:auto;object-fit:contain;padding:40px}.case-brief{display:grid;grid-template-columns:1fr 1.8fr;gap:90px;border-top:0}.project-meta{margin:0;font-size:16px}.project-meta>div{margin-bottom:26px}.project-meta dt{font-size:13px;color:var(--muted);margin-bottom:8px}.project-meta dd{margin:0}.project-meta a{border-bottom:1px solid var(--line)}.brief-copy{display:grid;grid-template-columns:1fr 1fr;gap:38px}.brief-copy h2{font-size:24px;margin-bottom:20px}.brief-copy p{font-size:18px}.stage-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px}.stage-top{display:flex;align-items:baseline;gap:16px;margin-bottom:25px}.stage-top>span{font-size:14px;color:var(--muted)}.stage-top h3{font-size:23px}.stage-grid article{border-top:1px solid var(--line);padding-top:20px;min-width:0}.stage-grid .figure img{height:250px;object-fit:contain}.stage-grid article>p{font-size:16px;margin-top:24px;color:var(--muted)}.pair-section{display:grid;grid-template-columns:1.65fr 1fr;gap:70px;align-items:center}.pair-section>div .eyebrow{margin-bottom:18px}.pair-section>div h2{font-size:36px;margin-bottom:26px}.pair-section>div>p{font-size:18px}.pair-section>div>.note{font-size:14px;margin-top:20px}.pair-figures{display:grid;grid-template-columns:1fr 1fr;gap:40px}.pair-figures .figure img{height:380px;object-fit:contain;padding:20px;background:#eeeee7}.small-figure{margin-top:32px;max-width:260px}.small-figure img{max-height:150px}.toucan-stages{row-gap:46px}.toucan-stages .figure img{height:180px}.case-end{padding-bottom:75px}.case-end>p{border-top:1px solid var(--line);padding-top:20px}.case-end>a{display:flex;align-items:baseline;justify-content:space-between;padding-top:70px}.case-end>a>span{font-size:14px;color:var(--muted)}.case-end strong{font-size:32px;font-weight:600}.not-found{min-height:60vh}.not-found h1{margin:30px 0}.not-found .text-link{margin-top:30px}dialog{width:calc(100% - 60px);max-width:1440px;height:calc(100% - 60px);max-height:none;background:var(--paper);border:1px solid var(--line);padding:0;color:var(--ink)}dialog::backdrop{background:rgba(15,23,18,.8)}.viewer-bar{height:64px;display:flex;align-items:center;justify-content:space-between;padding:12px 24px;border-bottom:1px solid var(--line);gap:20px}.viewer-bar p{font-size:15px}.viewer-bar button{border:0;background:transparent;font-size:16px;white-space:nowrap;cursor:pointer}.viewer-image{height:calc(100% - 116px);padding:24px;overflow:auto;display:grid;place-items:center}.viewer-image img{max-height:100%;max-width:100%;width:auto}.viewer-hint{font-size:13px;color:var(--muted);text-align:center;height:52px;padding:10px}.viewer-hint a{margin-left:20px;border-bottom:1px solid var(--line)}body.modal-open{overflow:hidden}
@media(min-width:1600px){.hero{min-height:730px}.hero-visual img{height:490px}.work-image img{height:400px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.site-header{padding:0 32px}.site-header nav{gap:22px}.hero{grid-template-columns:45% 55%;min-height:590px}.hero h1{font-size:52px}.hero-name span{display:block;margin:5px 0 0}.hero-visual img{height:380px;padding:15px}.hero-visual figcaption{display:block}.hero-visual figcaption span{display:block}.work-image img{height:300px;padding:24px}.about-grid,.downloads{gap:45px}.application-caption h3{font-size:18px}.case-brief{gap:40px;grid-template-columns:1fr 2fr}.brief-copy{gap:25px}.pair-section{gap:40px}.pair-section>div h2{font-size:30px}footer{padding-inline:32px}.footer-main{gap:45px}.section-head>p{max-width:330px}.stage-grid{gap:24px}.stage-top h3{font-size:20px}}
@media(max-width:720px){html{scroll-padding-top:90px}.wrap{width:calc(100% - 40px)}body{font-size:17px}.site-header{height:72px;padding:0 20px}.wordmark{font-size:20px;gap:9px}.wordmark span{font-size:8px;letter-spacing:.06em}.menu-toggle{display:flex;align-items:center;gap:16px;padding:8px 0 8px 16px;border:0;background:transparent;font-size:14px}.menu-toggle span{font-size:22px}.site-header nav{display:none;position:absolute;left:0;right:0;top:71px;background:var(--paper);padding:24px 20px 30px;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0}.site-header nav.open{display:flex}.site-header nav a{padding:14px 0}.site-header nav .nav-contact{margin-top:12px;padding:12px 14px;display:flex;justify-content:space-between}.hero{grid-template-columns:1fr;padding-top:42px;padding-bottom:48px;min-height:0}.hero .eyebrow{font-size:10px;margin-bottom:22px}.hero h1{font-size:48px;line-height:1.2}.hero-name{font-size:21px;margin-top:24px}.hero-name span{display:inline;margin-left:14px;font-size:15px}.intro{font-size:16px;margin-top:16px}.hero .text-link{margin-top:20px}.hero-visual{margin:38px 0 0}.hero-visual img{height:300px;padding:18px}.hero-visual figcaption{display:flex;font-size:10px}.hero-visual figcaption span{display:inline}.section-head{display:block;margin-bottom:30px}.section-head .eyebrow{font-size:11px;margin-bottom:13px}.section-head>p,.section-head>.text-link{margin-top:20px}.section-head>p{max-width:none;font-size:16px}.section-head h2{font-size:30px}.work-grid{grid-template-columns:1fr;gap:42px;padding-bottom:0}.work-card:nth-child(even){transform:none}.work-image img{height:310px;padding:24px}.work-meta{gap:14px;margin-top:20px}.work-meta h3{font-size:25px}.work-meta p:not(.eyebrow){font-size:15px}.work-meta .eyebrow{font-size:10px}.sheet-grid{grid-template-columns:1fr;gap:32px}.sheet-label{padding-top:16px;margin-bottom:15px}.sheet-label strong{font-size:22px}.engineering .figure img{height:auto;aspect-ratio:370/196;padding:0}.application-grid{grid-template-columns:1fr;gap:36px}.application-grid article{display:grid;grid-template-columns:46% 1fr;gap:20px;align-items:center}.application-grid img{height:180px;padding:12px}.application-caption{padding-top:0}.application-caption h3{font-size:20px}.application-caption p{font-size:14px}.application-caption .note{font-size:12px}.about-grid{grid-template-columns:1fr;gap:36px}.about-grid h2{font-size:36px}.about-lead{font-size:21px;margin-top:20px}.about-copy>p{font-size:17px}.profile-list>div{grid-template-columns:104px 1fr;font-size:15px;gap:10px}.stats{gap:15px;margin-top:36px;padding-top:26px}.stats strong{font-size:40px}.stats strong span{font-size:25px;margin-left:2px}.stats strong small{font-size:17px;margin-right:4px}.stats p{font-size:12px}.stats-note{font-size:12px;line-height:1.8;margin-top:22px}.downloads{grid-template-columns:1fr;gap:30px}.downloads h2{font-size:30px}.download-links strong{font-size:20px}footer{padding:52px 20px 22px}.footer-main{grid-template-columns:1fr;gap:42px}.footer-main h2{font-size:33px}.footer-main .eyebrow{font-size:11px}.contact-block>a{font-size:clamp(17px,5.2vw,22px)}.footer-note{display:block;margin-top:44px}.footer-note>a{display:inline-block;margin-top:20px}.case-intro{padding-top:22px;padding-bottom:32px}.back-link{margin-bottom:30px;font-size:13px}.case-intro>.eyebrow{font-size:11px;margin-bottom:16px}.case-intro h1{font-size:36px}.case-intro h1>span{font-size:23px;line-height:1.5;margin-top:12px}.case-summary{font-size:17px;margin-top:20px}.case-cover img{height:335px;padding:25px 20px}.case-brief{grid-template-columns:1fr;gap:34px}.project-meta{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:0}.project-meta>div{margin:0}.project-meta dd{font-size:15px}.brief-copy{grid-template-columns:1fr;gap:28px}.brief-copy h2{font-size:23px;margin-bottom:14px}.brief-copy p{font-size:17px}.stage-grid{grid-template-columns:1fr;gap:32px}.stage-top{margin-bottom:18px}.stage-top h3{font-size:23px}.stage-grid .figure img{height:auto;min-height:180px;max-height:310px}.stage-grid article>p{font-size:16px;margin-top:18px}.pair-section{grid-template-columns:1fr;gap:32px}.pair-section>div h2{font-size:30px;margin-bottom:20px}.pair-section>div>p{font-size:17px}.pair-figures{grid-template-columns:1fr;gap:30px}.pair-figures .figure img{height:320px;padding:20px}.toucan-stages .figure img{height:210px;min-height:0}.small-figure{max-width:300px}.small-figure img{max-height:180px}.case-end{padding-bottom:50px}.case-end>a{padding-top:40px;align-items:flex-start;gap:20px}.case-end strong{font-size:24px}.case-end>a>span{font-size:12px;white-space:nowrap}dialog{width:calc(100% - 20px);height:calc(100% - 40px)}.viewer-bar{padding:10px 14px;height:84px}.viewer-bar p{font-size:13px;line-height:1.5}.viewer-image{height:calc(100% - 144px);padding:10px}.viewer-hint{font-size:11px;height:60px;line-height:1.7}.viewer-hint a{margin-left:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

.viewer-bar p{margin-right:auto}.viewer-image.zoomed{display:block}.viewer-image.zoomed img{max-height:none;max-width:none;width:max(900px,160%);height:auto;margin:0}.viewer-bar button{min-height:40px;min-width:64px}#viewer-zoom{border:1px solid var(--line);padding:2px 10px;font-size:14px}
@media(max-width:720px){.viewer-bar{gap:10px}.viewer-bar p{max-width:49%}.viewer-bar button{font-size:13px;min-width:54px}#viewer-zoom{padding:2px 6px;font-size:12px}.application-grid article{grid-template-columns:1fr}.application-grid img{height:250px}.application-caption .note{font-size:12px}}

/* V2: editorial headings and a same-page floating image viewer. */
.case-number{font-size:13px;color:var(--muted);margin-bottom:20px;letter-spacing:.08em}
.hero h1{margin-top:0}.work-meta h3{margin-top:0}.section-head:has(.eyebrow){align-items:end}
.toucan-stages .image-open{height:140px;display:flex;align-items:flex-end;justify-content:center;padding:0 4px 20px}
.toucan-stages .image-open img{width:100%;height:auto;max-height:160px;min-height:0;object-fit:contain;object-position:center bottom}
.toucan-stages .stage-top{min-height:40px;margin-bottom:16px}.toucan-stages .zoom-mark{bottom:0}
dialog{width:min(1280px,92vw);height:min(860px,88dvh);max-height:88dvh;border:1px solid var(--line);box-shadow:0 24px 80px rgba(12,21,16,.25);border-radius:6px;overflow:hidden}
dialog[open]{animation:viewer-in .22s ease-out}dialog::backdrop{background:rgba(15,23,18,.65);backdrop-filter:blur(5px)}
.viewer-bar{height:64px;padding:10px 20px;gap:20px;align-items:center}.viewer-bar p{max-width:none;flex:1;font-size:14px;line-height:1.5}
.viewer-controls{display:flex;align-items:center;gap:10px;flex-shrink:0}.viewer-controls button{padding:5px 12px;min-height:40px;min-width:56px;border:1px solid var(--line);border-radius:2px;font-size:14px;cursor:pointer}
#viewer-close{border-color:transparent}#viewer-zoom{font-size:14px;padding:5px 12px}
.viewer-image{height:calc(100% - 120px);padding:24px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;cursor:zoom-in}
.viewer-image img{flex:0 0 auto;display:block;max-width:100%;max-height:100%;width:auto;height:auto;user-select:none;will-change:transform;transform-origin:center;pointer-events:none}
.viewer-image.is-zoomed{cursor:grab}.viewer-image.is-zoomed:active{cursor:grabbing}
.viewer-hint{height:56px;padding:12px 16px;text-align:center;font-size:13px;border-top:1px solid var(--line);line-height:1.6}
@keyframes viewer-in{from{opacity:0;translate:0 10px;scale:.985}to{opacity:1;translate:0 0;scale:1}}
@media(max-width:720px){
 .case-number{margin-bottom:14px;font-size:12px}.case-intro h1{margin-top:0}
 .toucan-stages .image-open{height:130px;max-height:none;padding-bottom:18px}.toucan-stages .image-open img{height:auto;max-height:140px;min-height:0;object-position:center bottom}
 .toucan-stages{gap:28px}.toucan-stages .stage-top{min-height:34px;margin-bottom:8px}
 dialog{width:94vw;height:82dvh;max-height:82dvh;max-width:94vw}.viewer-bar{height:96px;padding:10px 12px;gap:10px;align-items:flex-start}
 .viewer-bar p{max-width:none;font-size:12px;flex:1;align-self:center}.viewer-controls{gap:5px;align-self:center}
 .viewer-controls button,#viewer-zoom{font-size:12px;min-width:44px;min-height:42px;padding:4px 6px}
 .viewer-image{height:calc(100% - 154px);padding:14px}.viewer-hint{height:58px;font-size:11px;line-height:1.7;padding:10px 12px}
}
@media(prefers-reduced-motion:reduce){dialog[open]{animation:none}.viewer-image img{will-change:auto}}

html{scrollbar-gutter:stable}

.site-header{background:var(--paper)}.keyboard-hint{margin-left:12px}@media(max-width:720px){.keyboard-hint{display:none}}

.toucan-stages .image-open{background:#fdfcf9}

