:root{--background:#f8f3eb;--foreground:#2d3b45;--card:#fffdfa;--primary:#687b8c;--muted:#e6ece5;--muted-foreground:#68746f;--border:#d6ddd4;--ring:#8fa797;--accent-strong:#557463;--font-portfolio:Inter, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--background);color:var(--foreground);font-family:var(--font-portfolio);text-rendering:optimizelegibility;margin:0}a{color:inherit;text-decoration:none}button{font:inherit}.site-shell{min-height:100vh}.site-header{z-index:30;color:#fff;background:#687b8c;border-bottom:1px solid #5d7080;justify-content:space-between;align-items:center;gap:24px;min-height:68px;padding:0 clamp(28px,7vw,112px);display:flex;position:sticky;top:0}.site-mark{letter-spacing:-.02em;font-size:.92rem;font-weight:650}.site-nav{align-items:center;gap:10px;display:flex}.site-nav-link{color:#ffffffb8;border-radius:7px;padding:9px 12px;font-size:.86rem;font-weight:550;transition:color .16s,background .16s;display:inline-block}.contact-link,.portfolio-link{color:#28483b;background:#dae7d6;border:1px solid #ffffff47;box-shadow:0 2px 7px #1d322a2e}.contact-link:hover,.contact-link:focus-visible,.portfolio-link:hover,.portfolio-link:focus-visible{color:#1e3e31;background:#e8f0e4}.page-wrap{width:min(1020px,100% - clamp(56px,11vw,176px));margin:0 auto;padding:clamp(60px,8vw,96px) 0 96px}.portfolio-heading{margin-bottom:clamp(42px,6vw,72px)}.portfolio-heading h1{letter-spacing:-.045em;margin:0;font-size:clamp(2rem,3.2vw,3rem);font-weight:600;line-height:1.05}.portfolio-heading>p:last-child{max-width:580px;color:var(--muted-foreground);margin:19px 0 0;font-size:.95rem;line-height:1.7}.eyebrow{color:var(--accent-strong);letter-spacing:.1em;text-transform:uppercase;margin:0 0 13px;font-size:.69rem;font-weight:700}.portfolio-toc{border:1px solid var(--border);background:color-mix(in srgb, var(--card) 76%, var(--background));border-radius:16px;grid-template-columns:minmax(190px,.52fr) minmax(0,1.48fr);gap:clamp(36px,6vw,82px);margin-bottom:clamp(72px,9vw,112px);padding:clamp(24px,3vw,34px);display:grid;box-shadow:0 18px 54px #2d3b450a}.toc-heading h2{letter-spacing:-.03em;margin:0;font-size:clamp(1.15rem,1.8vw,1.5rem);font-weight:600}.toc-heading>p:last-child{color:var(--muted-foreground);margin:12px 0 0;font-size:.78rem;line-height:1.65}.toc-years{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;display:grid}.toc-years details{border-top:1px solid var(--border);min-width:0}.toc-years summary{color:var(--primary);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:14px 0 12px;font-size:.84rem;font-weight:650;list-style:none;display:flex}.toc-years summary::-webkit-details-marker,.evidence-stack-summary::-webkit-details-marker{display:none}.toc-years summary:after{content:"+";color:var(--accent-strong);font-size:1rem}.toc-years details[open] summary:after{content:"−"}.toc-years ul{gap:1px;margin:0;padding:0 0 4px;list-style:none;display:grid}.toc-years a{color:var(--muted-foreground);border-radius:7px;padding:8px 10px;font-size:.76rem;line-height:1.5;transition:color .16s,background .16s;display:block}.toc-years a:hover,.toc-years a:focus-visible{background:var(--muted);color:var(--foreground);outline:none}.career-period{border-top:1px solid var(--border);padding-top:clamp(34px,5vw,64px)}.period-header{text-align:center;padding-bottom:clamp(18px,3vw,36px)}.period-header .eyebrow{margin-bottom:10px}.period-header h2{color:var(--primary);letter-spacing:-.035em;margin:0;font-size:clamp(1.45rem,2.4vw,2rem);font-weight:550;line-height:1.15}.performance-overview{border-top:1px solid color-mix(in srgb, var(--border) 76%, transparent);padding:clamp(48px,6vw,78px) 0 clamp(68px,8vw,104px);scroll-margin-top:92px}.overview-copy{grid-template-columns:minmax(240px,.65fr) minmax(0,1.35fr);align-items:end;gap:clamp(48px,7vw,100px);margin-bottom:30px;display:grid}.overview-copy h3{letter-spacing:-.035em;margin:0;font-size:clamp(1.45rem,2.1vw,2.1rem);font-weight:600;line-height:1.2}.overview-copy>p{max-width:660px;color:var(--muted-foreground);margin:0;font-size:.94rem;line-height:1.75}.case-study{border-top:1px solid color-mix(in srgb, var(--border) 76%, transparent);grid-template-columns:minmax(240px,.65fr) minmax(0,1.35fr);align-items:start;gap:clamp(48px,7vw,100px);padding:clamp(72px,9vw,116px) 0;scroll-margin-top:92px;display:grid}.case-copy{position:sticky;top:116px}.case-copy h3{letter-spacing:-.04em;max-width:540px;margin:0;font-size:clamp(1.7rem,2.6vw,2.7rem);font-weight:600;line-height:1.2}.case-summary{max-width:560px;color:var(--muted-foreground);margin:22px 0 0;font-size:.98rem;line-height:1.75}.result-list{flex-wrap:wrap;gap:8px;margin-top:23px;display:flex}.result-list span{border:1px solid var(--border);background:color-mix(in srgb, var(--card) 68%, transparent);border-radius:999px;padding:7px 10px;font-size:.75rem;font-weight:550}.work-note{border-top:1px solid var(--border);margin-top:34px;padding-top:22px}.work-note h4{margin:0 0 8px;font-size:.82rem;font-weight:650}.work-note p{color:var(--muted-foreground);margin:0;font-size:.87rem;line-height:1.7}.evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.evidence-card{border:1px solid var(--border);background:var(--card);width:100%;min-width:0;color:inherit;text-align:left;appearance:none;cursor:zoom-in;border-radius:13px;padding:0;transition:transform .18s,box-shadow .18s;display:block;overflow:hidden;box-shadow:0 14px 38px #2d3b450f}.evidence-card.is-featured,.evidence-stack{grid-column:1/-1}.evidence-card:hover,.evidence-card:focus-visible{outline:3px solid color-mix(in srgb, var(--ring) 38%, transparent);outline-offset:3px;transform:translateY(-2px);box-shadow:0 20px 52px #2d3b451c}.evidence-image-wrap,.evidence-stack-image-wrap{aspect-ratio:16/9;background:#20242a;display:block;position:relative;overflow:hidden}.evidence-image{object-fit:contain;object-position:center;width:100%;height:100%;display:block}.evidence-expand{color:#fffaf3;opacity:0;background:#27363ec7;border:1px solid #ffffff38;border-radius:999px;padding:7px 9px;font-size:.7rem;font-weight:600;transition:opacity .16s,transform .16s;position:absolute;bottom:10px;right:10px;transform:translateY(4px)}.evidence-card:hover .evidence-expand,.evidence-card:focus-visible .evidence-expand{opacity:1;transform:translateY(0)}.evidence-caption{justify-content:space-between;align-items:center;gap:16px;min-height:54px;padding:13px 15px;font-size:.76rem;display:flex}.evidence-caption>span{min-width:0;color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.evidence-caption strong{color:var(--primary);text-align:right;flex:none;font-weight:650}.evidence-stack{z-index:0;min-width:0;padding-bottom:17px;position:relative}.evidence-stack:not([open]):before,.evidence-stack:not([open]):after{z-index:0;content:"";border:1px solid var(--border);background:var(--card);border-radius:13px;position:absolute;box-shadow:0 12px 30px #2d3b450d}.evidence-stack:not([open]):before{inset:9px 14px 7px;transform:translateY(7px)}.evidence-stack:not([open]):after{inset:16px 28px 1px;transform:translateY(14px)}.evidence-stack-summary{z-index:2;border:1px solid var(--border);background:var(--card);cursor:pointer;border-radius:13px;min-width:0;list-style:none;transition:transform .18s,box-shadow .18s;display:block;position:relative;overflow:hidden;box-shadow:0 14px 38px #2d3b4512}.evidence-stack-summary:hover,.evidence-stack-summary:focus-visible{outline:3px solid color-mix(in srgb, var(--ring) 38%, transparent);outline-offset:3px;transform:translateY(-2px);box-shadow:0 20px 52px #2d3b451c}.evidence-stack-count{color:#fffaf3;background:#27363ed1;border:1px solid #ffffff47;border-radius:999px;place-items:center;min-width:38px;height:38px;padding:0 9px;font-size:.76rem;font-weight:650;display:grid;position:absolute;bottom:12px;right:13px}.stack-open-label{display:none}.evidence-stack[open]{padding-bottom:0}.evidence-stack[open]>.evidence-stack-summary .evidence-stack-image-wrap,.evidence-stack[open] .stack-closed-label{display:none}.evidence-stack[open] .stack-open-label{display:inline}.evidence-stack[open]>.evidence-stack-summary{box-shadow:none}.evidence-stack-reveal{opacity:0;transform-origin:top;grid-template-rows:0fr;transition:grid-template-rows .82s cubic-bezier(.22,1,.36,1),opacity .42s .11s,transform .76s cubic-bezier(.22,1,.36,1);display:grid;transform:translateY(-38px)}.evidence-stack-reveal-inner{min-height:0;overflow:hidden}.evidence-stack-grid{margin-top:20px}.evidence-stack[open] .evidence-stack-reveal{opacity:1;grid-template-rows:1fr;transform:translateY(0)}.evidence-stack.is-closing .evidence-stack-reveal{opacity:0;grid-template-rows:0fr;transform:translateY(-38px)}.evidence-stack[open] .evidence-stack-grid .evidence-card{animation:.72s cubic-bezier(.22,1,.36,1) both evidence-card-in}.evidence-stack[open] .evidence-stack-grid .evidence-card:nth-child(2){animation-delay:90ms}.evidence-stack[open] .evidence-stack-grid .evidence-card:nth-child(3){animation-delay:.18s}.evidence-stack[open] .evidence-stack-grid .evidence-card:nth-child(n+4){animation-delay:.27s}.evidence-stack.is-closing .evidence-stack-grid .evidence-card{animation:.62s cubic-bezier(.55,0,1,.45) both evidence-card-out}@keyframes evidence-card-in{0%{opacity:0;transform:translateY(-46px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes evidence-card-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-34px)scale(.985)}}.evidence-note{border-top:1px solid var(--border);color:var(--muted-foreground);margin:12px 0 0;padding-top:24px;font-size:.76rem;line-height:1.7}.evidence-dialog::backdrop{backdrop-filter:blur(9px);background:#26343dc2}.evidence-dialog{width:min(1500px,100dvw - 32px);max-width:min(1500px,100dvw - 32px);height:min(980px,100dvh - 32px);max-height:min(980px,100dvh - 32px);color:var(--foreground);background:#f4f7f2;border:1px solid #ffffff61;border-radius:16px;margin:auto;padding:0;position:fixed;inset:0;overflow:hidden;box-shadow:0 34px 110px #19252c6b}.evidence-dialog[open]:not(.is-closing){animation:.72s cubic-bezier(.22,1,.36,1) both evidence-dialog-in}.evidence-dialog.is-closing{pointer-events:none;animation:.56s cubic-bezier(.55,0,1,.45) both evidence-dialog-out}@keyframes evidence-dialog-in{0%{opacity:0;transform:translateY(18px)scale(.965)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes evidence-dialog-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(22px)scale(.965)}}.evidence-dialog-panel{grid-template-rows:auto minmax(0,1fr);width:100%;height:100%;display:grid}.evidence-dialog-header{border-bottom:1px solid var(--border);background:var(--card);justify-content:space-between;align-items:center;gap:24px;min-height:68px;padding:14px 68px 14px 20px;display:flex;position:relative}.evidence-dialog-header h2{margin:0;font-size:.9rem;font-weight:650;line-height:1.35}.evidence-dialog-header p{color:var(--muted-foreground);margin:3px 0 0;font-size:.74rem}.evidence-original-link{color:var(--primary);font-size:.76rem;font-weight:650}.evidence-original-link:hover,.evidence-original-link:focus-visible{text-underline-offset:3px;text-decoration:underline}.evidence-dialog-close{border:1px solid var(--border);background:var(--card);width:38px;height:38px;color:var(--primary);cursor:pointer;border-radius:999px;place-items:center;padding:0;font-size:1.4rem;line-height:1;display:grid;position:absolute;top:14px;right:16px}.evidence-dialog-image-wrap{background:#26343d;place-items:center;min-width:0;min-height:0;padding:clamp(10px,1.6vw,24px);display:grid;overflow:hidden}.evidence-dialog-image{object-fit:contain;object-position:center;max-width:100%;max-height:100%;display:block}.contact-page{grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);gap:clamp(64px,10vw,144px);width:min(960px,100% - 96px);margin:0 auto;padding:clamp(76px,12vw,160px) 0 80px;display:grid}.contact-copy h1{letter-spacing:-.05em;max-width:650px;margin:0;font-size:clamp(2.5rem,5vw,4.8rem);font-weight:600;line-height:1.03}.contact-copy>p:last-child{max-width:620px;color:var(--muted-foreground);margin:30px 0 0;font-size:1rem;line-height:1.8}.contact-details{border-top:1px solid var(--border);align-self:end;padding-top:20px}.contact-details>div{border-bottom:1px solid var(--border);padding:20px 0}.contact-details span{color:var(--accent-strong);font-size:.75rem;font-weight:650}.contact-details p{color:var(--muted-foreground);margin:8px 0 0;font-size:.9rem;line-height:1.7}.contact-details a{color:var(--foreground);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--ring) 68%, transparent);text-underline-offset:4px}.contact-details a:hover,.contact-details a:focus-visible{color:var(--primary)}.back-link{color:var(--primary);align-items:center;gap:10px;margin-top:27px;font-size:.88rem;font-weight:650;display:inline-flex}.back-link span{transition:transform .16s}.back-link:hover span,.back-link:focus-visible span{transform:translate(3px)}@media (width<=860px){.case-study,.contact-page,.overview-copy,.portfolio-toc{grid-template-columns:1fr}.portfolio-toc{gap:24px}.overview-copy{align-items:start;gap:18px}.case-copy{position:static}.contact-details{max-width:600px}}@media (width<=600px){.site-header{min-height:62px;padding-inline:18px}.site-mark{font-size:.82rem}.site-nav-link{padding:8px 9px;font-size:.78rem}.page-wrap,.contact-page{width:min(100% - 28px,1200px)}.page-wrap{padding-top:38px}.portfolio-heading h1{font-size:2.15rem}.portfolio-heading{margin-bottom:38px}.portfolio-toc{margin-bottom:64px;padding:22px 18px}.toc-years,.evidence-grid{grid-template-columns:1fr}.performance-overview{padding:42px 0 58px}.case-study{padding:54px 0}.case-copy h3{font-size:1.75rem}.evidence-card.is-featured,.evidence-stack{grid-column:auto}.evidence-caption{flex-direction:column;align-items:flex-start;gap:4px}.evidence-caption strong{text-align:left}.evidence-expand{opacity:1;transform:none}.evidence-dialog{border-radius:12px;width:calc(100dvw - 16px);max-width:calc(100dvw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px)}.evidence-dialog-header{padding:12px 58px 12px 14px}.evidence-original-link{display:none}.contact-page{padding-top:62px}.contact-copy h1{font-size:2.8rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.evidence-stack-reveal,.evidence-card,.evidence-stack-summary,.evidence-expand,.toc-years a,.back-link span{transition:none}.evidence-stack[open] .evidence-stack-grid .evidence-card,.evidence-stack.is-closing .evidence-stack-grid .evidence-card,.evidence-dialog[open],.evidence-dialog.is-closing{animation:none}}
