.app-button[data-v-e2bd4158]{align-items:center;border:1px solid transparent;border-radius:999px;color:#323232;cursor:pointer;display:flex;font-size:20px;font-weight:var(--font-weight-medium);justify-content:center;line-height:1.5;padding:12px 24px;text-align:center;text-decoration:none;transition:background-color .16s ease,border-color .16s ease,transform .16s ease;width:320px}.app-button__content[data-v-e2bd4158]{align-items:center;display:flex;justify-content:center}.app-button--has-icon .app-button__content[data-v-e2bd4158]{gap:10px}.app-button__icon[data-v-e2bd4158]{align-items:center;display:inline-flex;flex:0 0 auto;height:20px;justify-content:center;width:20px}.app-button__icon[data-v-e2bd4158] img,.app-button__icon[data-v-e2bd4158] svg{display:block;height:100%;width:100%}.app-button.app-button--fit[data-v-e2bd4158]{width:fit-content}.app-button--s[data-v-e2bd4158]{padding:8px 16px}.app-button--s-wide[data-v-e2bd4158]{padding:8px 24px}.app-button--outline[data-v-e2bd4158]{border-color:#323232}.app-button--primary[data-v-e2bd4158]{background:#00d3f8}.app-button--light-outline[data-v-e2bd4158]{border-color:#fff;color:#fff}.app-button[data-v-e2bd4158]:hover{transform:translateY(-2px)}.app-button--outline[data-v-e2bd4158]:hover{background:#323232;color:#fff;transform:none}.app-button--primary[data-v-e2bd4158]:hover{background:#00c4e7;transform:none}.app-button--light-outline[data-v-e2bd4158]:hover{background:#fff;color:#323232;transform:none}.app-button[data-v-e2bd4158]:focus-visible{outline:3px solid #323232;outline-offset:3px}@media(max-width:767px){.app-button[data-v-e2bd4158]{font-size:16px;max-width:320px;width:100%}.app-button.app-button--mobile-full[data-v-e2bd4158]{max-width:none;width:100%}}.site-header[data-v-3e0e4f44]{-webkit-backdrop-filter:blur(20px);align-items:center;backdrop-filter:blur(20px);background:#fafafacc;display:flex;left:0;justify-content:center;min-height:60px;overflow:hidden;padding:13px 24px;position:fixed;top:0;width:100%;z-index:1000}.header-inner[data-v-3e0e4f44]{align-items:center;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);position:relative;width:100%;z-index:1}.site-header__progress[data-v-3e0e4f44]{background:#00d9ff;bottom:0;height:3px;left:0;position:absolute;transform-origin:left center;width:100%;z-index:2}.logo-link[data-v-3e0e4f44]{display:block;flex:0 0 auto;height:18px;line-height:0;width:233px}.logo-link img[data-v-3e0e4f44]{display:block;height:18px;transition:filter .18s ease;width:233px}.menu-toggle[data-v-3e0e4f44]{display:none}.navigation-panel[data-v-3e0e4f44]{display:contents}nav[data-v-3e0e4f44]{--indicator-width: 64px;--indicator-x: 0px;align-items:center;display:flex;flex:0 0 auto;gap:16px;position:relative}nav[data-v-3e0e4f44]:before{background:#ededed;border-radius:999px;bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;transform:translate(var(--indicator-x));transition:transform .42s cubic-bezier(.22,1,.36,1),width .42s cubic-bezier(.22,1,.36,1);width:var(--indicator-width)}nav.navigation--indicator-ready[data-v-3e0e4f44]:before{opacity:1}nav.navigation--no-transition[data-v-3e0e4f44]:before{transition:none}.nav-link[data-v-3e0e4f44]{align-items:center;color:#000;display:flex;font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);justify-content:center;line-height:1.5;padding:8px 12px;position:relative;text-decoration:none;transition:color .16s ease;white-space:nowrap;z-index:1}.nav-link[data-v-3e0e4f44]:hover{color:#323232}.nav-link--active[data-v-3e0e4f44]{color:#000;font-weight:var(--font-weight-medium);padding-inline:16px}.header-actions[data-v-3e0e4f44]{align-items:center;display:flex;gap:16px;justify-content:flex-end}.contact-button[data-v-3e0e4f44]{font-size:var(--font-size-body-small);padding:12px 24px;white-space:nowrap}@media(prefers-reduced-motion:reduce){nav[data-v-3e0e4f44]:before{transition:none}}@media(max-width:1023px){.site-header[data-v-3e0e4f44]{-webkit-backdrop-filter:none;align-items:center;backdrop-filter:none;background:#fff;min-height:44px;overflow:visible;padding:16px}.header-inner[data-v-3e0e4f44]{align-items:center;display:grid;grid-template-columns:minmax(0,1fr) auto}.navigation-panel[data-v-3e0e4f44]{-webkit-backdrop-filter:blur(20px);align-items:center;backdrop-filter:blur(20px);background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:16px;left:16px;opacity:0;padding:24px 32px;pointer-events:none;position:fixed;right:16px;top:64px;transform-origin:top right;visibility:hidden;width:auto;will-change:clip-path,opacity,transform}.navigation-panel--open[data-v-3e0e4f44]{pointer-events:auto}.header-actions[data-v-3e0e4f44]{align-items:center;display:flex;gap:16px;justify-content:center;opacity:1;pointer-events:auto;visibility:visible}.contact-button[data-v-3e0e4f44]{font-size:var(--font-size-body-small);line-height:1.5;order:1;padding:8px}nav[data-v-3e0e4f44]{align-items:center;flex-direction:column;gap:16px;max-height:none;opacity:1;overflow:visible;pointer-events:auto;transform:none;visibility:visible;width:100%}nav[data-v-3e0e4f44]:before{display:none}.nav-link[data-v-3e0e4f44]{border-radius:999px;font-size:var(--font-size-body-small);padding:8px 12px}.nav-link--active[data-v-3e0e4f44]{background:transparent;font-weight:var(--font-weight-medium);padding-inline:12px}.menu-toggle[data-v-3e0e4f44]{-webkit-tap-highlight-color:transparent;align-items:center;background:transparent;border:0;cursor:pointer;display:flex;flex-direction:column;gap:0;height:20px;justify-content:center;padding:0;position:relative;touch-action:manipulation;width:20px;z-index:2}.menu-toggle[data-v-3e0e4f44]:before{content:"";inset:-12px;position:absolute}.menu-toggle img[data-v-3e0e4f44]{display:block;height:2px;left:0;pointer-events:none;position:absolute;transition:opacity .18s ease,transform .28s cubic-bezier(.22,1,.36,1);user-select:none;width:20px}.menu-toggle img[data-v-3e0e4f44]:first-child{top:3px}.menu-toggle img[data-v-3e0e4f44]:nth-child(2){top:9px}.menu-toggle img[data-v-3e0e4f44]:last-child{top:15px}.menu-toggle--open img[data-v-3e0e4f44]:first-child{transform:translateY(6px) rotate(45deg)}.menu-toggle--open img[data-v-3e0e4f44]:nth-child(2){opacity:0}.menu-toggle--open img[data-v-3e0e4f44]:last-child{transform:translateY(-6px) rotate(-45deg)}.logo-link[data-v-3e0e4f44],.logo-link img[data-v-3e0e4f44]{height:12px;width:155.186px}}.page-transition[data-astro-cid-hg254eu5]{align-items:center;display:flex;inset:0;justify-content:center;pointer-events:none;position:fixed;z-index:10000}.page-transition__layer[data-astro-cid-hg254eu5]{inset:0;position:absolute;transform:translate3d(0,101%,0);will-change:transform}.page-transition__layer--back[data-astro-cid-hg254eu5]{background:#131313;transition:transform .52s cubic-bezier(.76,0,.24,1)}.page-transition__layer--main[data-astro-cid-hg254eu5]{background-color:#00d9ff;transition:transform .58s 50ms cubic-bezier(.76,0,.24,1)}.page-transition--enter[data-astro-cid-hg254eu5] .page-transition__layer[data-astro-cid-hg254eu5]{transform:translateZ(0)}.page-transition--reset[data-astro-cid-hg254eu5] .page-transition__layer[data-astro-cid-hg254eu5],.page-transition--reset[data-astro-cid-hg254eu5] .page-transition__content[data-astro-cid-hg254eu5]{transition:none}.page-transition--exit[data-astro-cid-hg254eu5] .page-transition__layer[data-astro-cid-hg254eu5]{transform:translate3d(0,-100%,0)}.page-transition--exit[data-astro-cid-hg254eu5] .page-transition__layer--main[data-astro-cid-hg254eu5]{transition-duration:.52s;transition-delay:0ms}.page-transition--exit[data-astro-cid-hg254eu5] .page-transition__layer--back[data-astro-cid-hg254eu5]{transition-delay:0ms}[data-astro-cid-hg254eu5]::view-transition-old(root),[data-astro-cid-hg254eu5]::view-transition-new(root){animation:none}.page-transition__label[data-astro-cid-hg254eu5]{color:#323232;font-family:Montserrat,Noto Sans TC,sans-serif;font-size:clamp(48px,8vw,128px);font-weight:var(--font-weight-bold);letter-spacing:-.04em;line-height:1;margin:0;text-align:center;transform:translate3d(0,115%,0);transition:transform .46s .15s cubic-bezier(.16,1,.3,1);will-change:transform}.page-transition__content[data-astro-cid-hg254eu5]{align-items:center;display:flex;flex-direction:column;opacity:0;position:relative;transform:translate3d(0,24px,0);transition:opacity .22s .14s ease,transform .46s .14s cubic-bezier(.16,1,.3,1);z-index:3}.page-transition__title-mask[data-astro-cid-hg254eu5]{overflow:hidden;padding:.08em .08em .12em}.page-transition--enter[data-astro-cid-hg254eu5] .page-transition__content[data-astro-cid-hg254eu5]{opacity:1;transform:translateZ(0)}.page-transition--enter[data-astro-cid-hg254eu5] .page-transition__label[data-astro-cid-hg254eu5]{transform:translateZ(0)}.page-transition--exit[data-astro-cid-hg254eu5] .page-transition__content[data-astro-cid-hg254eu5]{opacity:0;transform:translate3d(0,-28px,0);transition:none}main.page-transition-content-enter{animation:page-content-reveal .8s .18s both cubic-bezier(.16,1,.3,1)}@media(max-width:767px){.page-transition__layer--back[data-astro-cid-hg254eu5]{display:none}.page-transition__layer--main[data-astro-cid-hg254eu5]{transition-delay:0ms}}@keyframes page-content-reveal{0%{opacity:.72;transform:translate3d(0,24px,0)}to{opacity:1;transform:translateZ(0)}}@media(prefers-reduced-motion:reduce){.page-transition[data-astro-cid-hg254eu5]{display:none}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.site-footer[data-v-d2b8a8de]{--footer-art-unit: clamp(.65px, .0520833333vw, 1px);align-items:flex-end;background:linear-gradient(180deg,#fff 12.42%,#f3f3f3);color:#323232;display:flex;min-height:calc(348 * var(--footer-art-unit));overflow:hidden;padding:calc(240 * var(--footer-art-unit)) var(--layout-gutter) calc(32 * var(--footer-art-unit));position:relative}.site-footer__artwork[data-v-d2b8a8de]{display:block;height:100%;inset:0;pointer-events:none;position:absolute;width:100%;z-index:0}.site-footer__artwork img[data-v-d2b8a8de]{display:block;height:100%;object-fit:fill;width:100%}.site-footer__inner[data-v-d2b8a8de]{align-items:flex-end;display:flex;justify-content:space-between;margin-inline:auto;max-width:calc(1200 * var(--footer-art-unit));position:relative;width:100%;z-index:2}.site-footer__identity[data-v-d2b8a8de]{align-items:flex-start;display:flex;flex-direction:column;gap:calc(24 * var(--footer-art-unit))}.site-footer__logo[data-v-d2b8a8de]{display:block;height:calc(28 * var(--footer-art-unit));line-height:0;width:calc(362.1 * var(--footer-art-unit))}.site-footer__logo img[data-v-d2b8a8de]{display:block;height:calc(28 * var(--footer-art-unit));width:calc(362.1 * var(--footer-art-unit))}.site-footer nav[data-v-d2b8a8de]{align-items:center;display:flex;gap:calc(24 * var(--footer-art-unit))}.site-footer nav a[data-v-d2b8a8de]{color:#323232;font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);line-height:1.5;min-width:auto;text-align:center;text-decoration:none;white-space:nowrap}.site-footer nav a[data-v-d2b8a8de]{transition:opacity .18s ease,transform .18s ease}.site-footer nav a[data-v-d2b8a8de]:hover{opacity:.7}.site-footer__meta[data-v-d2b8a8de]{align-items:flex-end;display:flex;flex-direction:column;gap:12px}.site-footer__meta p[data-v-d2b8a8de]{font-family:Montserrat,Noto Sans TC,sans-serif;font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);line-height:1.5;margin:0;white-space:nowrap}@media(max-width:900px){.site-footer[data-v-d2b8a8de]{padding-top:calc(200 * var(--footer-art-unit))}.site-footer__inner[data-v-d2b8a8de]{gap:calc(40 * var(--footer-art-unit))}.site-footer nav[data-v-d2b8a8de]{flex-wrap:wrap;gap:calc(12 * var(--footer-art-unit)) calc(20 * var(--footer-art-unit))}}@media(max-width:767px){.site-footer[data-v-d2b8a8de]{align-items:stretch;min-height:320px;padding:32px 24px}.site-footer__inner[data-v-d2b8a8de]{align-items:flex-start;flex-direction:column;gap:32px}.site-footer__identity[data-v-d2b8a8de]{gap:32px;width:100%}.site-footer__logo[data-v-d2b8a8de],.site-footer__logo img[data-v-d2b8a8de]{height:20px;width:258px}.site-footer nav[data-v-d2b8a8de]{align-items:start;column-gap:12px;display:grid;grid-template-columns:repeat(2,120px);row-gap:12px}.site-footer nav a[data-v-d2b8a8de]{font-size:var(--font-size-body-small);line-height:24px;min-width:120px;text-align:left}.site-footer__meta[data-v-d2b8a8de]{align-items:flex-start;gap:16px}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/montserrat-latin-400-normal.BLhwKU8k.woff2) format("woff2"),url(/_astro/montserrat-latin-400-normal.xItZbAXg.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/montserrat-latin-500-normal.DRFEGfly.woff2) format("woff2"),url(/_astro/montserrat-latin-500-normal.Dok2oTci.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/montserrat-latin-600-normal.UVxSCcoG.woff2) format("woff2"),url(/_astro/montserrat-latin-600-normal.CdhFl4lI.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/montserrat-latin-700-normal.BdjcYUrC.woff2) format("woff2"),url(/_astro/montserrat-latin-700-normal.BWkrl476.woff) format("woff")}:root{--color-accent: #00d9ff;--color-surface-muted: #f3f3f3;--color-text-primary: #323232;--font-size-section-heading: 40px;--font-size-detail-heading: 40px;--font-size-content-heading: 28px;--font-size-card-heading: 32px;--font-size-item-heading: 24px;--content-body-font-size: 20px;--font-size-body-small: 18px;--font-size-caption: 16px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--content-heading-gap: 24px;--content-width-project: 960px;--content-width-wide: 1200px;--layout-gutter: 24px;--layout-shell-width: 1248px;--page-gutter: 24px;--radius-card: 24px;font-family:Montserrat,Noto Sans TC,sans-serif;font-weight:var(--font-weight-regular);color:#000;background:#fff;font-synthesis:none}*{box-sizing:border-box}html,body,#app{min-height:100%}html{scroll-behavior:smooth}body{display:flex;flex-direction:column;margin:0;min-height:100vh}.portfolio-site{display:flex;flex:1;flex-direction:column;min-height:100vh}main{flex:1;overflow-x:clip;padding-top:80px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media(max-width:1023px){main{padding-top:52px}}@media(max-width:767px){:root{--font-size-section-heading: 32px;--font-size-detail-heading: 32px;--font-size-content-heading: 24px;--font-size-card-heading: 24px;--font-size-item-heading: 20px;--content-body-font-size: 18px;--font-size-body-small: 16px;--font-size-caption: 14px;--layout-gutter: 20px;--page-gutter: 20px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
