.ambient{--mx:-999px;--my:-999px;z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient__grid,.ambient__spot{background-image:radial-gradient(circle at 1px 1px, var(--grid-dot) 1.2px, transparent 0);background-size:28px 28px;position:absolute;inset:0}.ambient__grid{opacity:.55;-webkit-mask-image:linear-gradient(#0000,#000 18% 82%,#0000);mask-image:linear-gradient(#0000,#000 18% 82%,#0000)}.ambient__spot{background-image:radial-gradient(circle at 1px 1px, var(--text-muted) 1.3px, transparent 0);opacity:0;-webkit-mask-image:radial-gradient(circle 220px at var(--mx) var(--my), #000 0%, transparent 100%);-webkit-mask-image:radial-gradient(circle 220px at var(--mx) var(--my), #000 0%, transparent 100%);mask-image:radial-gradient(circle 220px at var(--mx) var(--my), #000 0%, transparent 100%);transition:opacity .6s}.ambient.has-pointer .ambient__spot{opacity:.45}.ambient__pixel{will-change:transform;position:absolute}.ambient__pixel i{width:var(--size);height:var(--size);background:var(--text);opacity:.09;animation:pixel-drift var(--drift) ease-in-out var(--delay) infinite alternate;display:block}.ambient__pixel i.is-outline{border:1.5px solid var(--text);opacity:.14;background:0 0}@keyframes pixel-drift{0%{transform:translate(0)rotate(0)}50%{transform:translate(14px,-22px)rotate(45deg)}to{transform:translate(-10px,18px)rotate(90deg)}}.ambient__grain{opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:1.1s steps(6,end) infinite grain;position:absolute;inset:-15%}:root[data-theme=dark] .ambient__grain{opacity:.07}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-6%,4%)}40%{transform:translate(5%,-7%)}60%{transform:translate(-4%,-3%)}80%{transform:translate(7%,6%)}to{transform:translate(-2%,8%)}}@media (prefers-reduced-motion:reduce){.ambient__pixel i,.ambient__grain{animation:none}}.typing-banner{--banner-ease:cubic-bezier(.65, 0, .35, 1);border-bottom:1px solid var(--rule);background:var(--bg);isolation:isolate;touch-action:pan-y;height:74svh;min-height:460px;max-height:880px;transition:height 1.2s var(--banner-ease), max-height 1.2s var(--banner-ease), margin-top 1.2s var(--banner-ease);place-items:center;margin-top:0;padding-inline:1rem;display:grid;position:relative;overflow:hidden}.typing-banner.is-fullscreen{height:100svh;max-height:100svh;margin-top:calc(-1 * var(--header-h));border-bottom-color:#0000}.particle-field{z-index:-2;width:100%;height:100svh;position:absolute;top:0;left:0}.typing-banner__vignette{z-index:-1;pointer-events:none;background:radial-gradient(ellipse 34% 22% at 50% 50%, color-mix(in srgb, var(--bg) 82%, transparent), transparent 100%), radial-gradient(ellipse 120% 90% at 50% 50%, transparent 55%, var(--bg) 100%);position:absolute;inset:0}.typing-banner__content{pointer-events:none;justify-items:center;gap:clamp(1.1rem,2.6vh,1.75rem);display:grid}.typing-banner__text{min-height:1.6em;font-family:var(--font-pixel);font-size:clamp(.75rem, calc(88vw / var(--chars,21)), 3rem);white-space:nowrap;color:var(--text);align-items:center;line-height:1.6;display:flex;position:relative}.typing-banner__cursor{background:currentColor;width:.8em;height:1em;margin-left:.2em;animation:1.05s step-end infinite blink;display:inline-block}.typing-banner.is-fullscreen .typing-banner__hud{opacity:0;pointer-events:none;transition-delay:0s;transform:translateY(10px)}.typing-banner__hud{padding:0 var(--gutter) clamp(1rem, 3vh, 1.75rem);max-width:calc(var(--container) + 2 * var(--gutter));transition:opacity .8s var(--ease-out) .7s, transform .8s var(--ease-out) .7s;justify-content:flex-end;align-items:flex-end;gap:1rem;margin-inline:auto;display:flex;position:absolute;bottom:0;left:0;right:0}.typing-banner__readout{color:var(--text-muted);font-family:var(--font-pixel);letter-spacing:.04em;white-space:pre;justify-items:end;gap:.45rem;font-size:.5625rem;display:grid}.typing-banner__hint{font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:500}@media (pointer:coarse){.typing-banner__readout{display:none}}@media (width<=560px){.typing-banner{height:66svh;min-height:400px}}@media (prefers-reduced-motion:reduce){.typing-banner__cursor{animation:none}}.carousel{--gap:clamp(1rem, 2vw, 1.5rem)}.carousel__head{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:clamp(1.75rem,4vw,2.75rem);display:flex}.carousel__head .section-title{margin-bottom:0}.carousel__arrows{gap:.5rem;display:flex}.carousel__arrow{width:48px;height:48px;font-size:1.35rem}.carousel__arrows .carousel__arrow:hover{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.carousel__viewport{margin:-6px -8px -10px -6px;padding:6px 8px 10px 6px;overflow:hidden}.carousel__container{margin:0 0 0 calc(var(--gap) * -1);touch-action:pan-y pinch-zoom;padding:0;list-style:none;display:flex}.carousel__slide{min-width:0;padding-left:var(--gap);flex:0 0 86%}@media (width>=640px){.carousel__slide{flex-basis:50%}}@media (width>=1024px){.carousel__slide{flex-basis:33.3333%}}.project-card{-webkit-user-select:none;user-select:none;flex-direction:column;height:100%;display:flex;overflow:hidden}.project-card__media{aspect-ratio:16/10;background:var(--bg-wash);position:relative;overflow:hidden}.project-card__media img{object-fit:cover;pointer-events:none;width:100%;height:100%}.project-card__placeholder{background-image:radial-gradient(circle at 1px 1px, var(--grid-dot) 1.5px, transparent 0);height:100%;color:var(--text);letter-spacing:-.04em;background-size:18px 18px;place-items:center;font-size:4rem;font-weight:600;display:grid}.project-card__badge{position:absolute;top:.75rem;left:.75rem}.project-card__body{border-top:1px solid var(--rule);flex-direction:column;flex:1;padding:1.15rem 1.25rem 1.2rem;display:flex}.project-card__title{font-size:var(--text-md);letter-spacing:-.02em}.project-card__desc{color:var(--text-muted);font-size:var(--text-sm);flex:1;margin-top:.45rem;line-height:1.55}.project-card__meta{color:var(--text-muted);font-size:var(--text-xs);justify-content:space-between;align-items:center;gap:1rem;margin-top:1.1rem;display:flex}.project-card__type{color:var(--text);align-items:center;gap:.4rem;font-weight:500;display:inline-flex}.project-card__type svg{font-size:1rem}.carousel__dots{flex-wrap:wrap;gap:.15rem;margin-top:1.25rem;margin-left:-10px;display:flex}.carousel__dot{cursor:pointer;background:0 0;border:0;width:32px;height:32px;padding:0;position:relative}.carousel__dot:before{content:"";border:1.5px solid var(--rule-strong);width:10px;height:10px;transition:background-color .2s,border-color .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.carousel__dot:hover:before{border-color:var(--text-muted)}.carousel__dot.is-selected:before{border-color:var(--accent);background:var(--accent)}@media (width<=767px){.carousel__arrows{display:none}}.carousel__arrow:disabled{opacity:.35;cursor:default;pointer-events:none}.photos{padding-top:clamp(1rem,3vw,2rem)}.photo-strip{--tile:clamp(200px, 24vw, 320px);--strip-gap:clamp(.75rem, 1.5vw, 1.25rem);--tuck:14px;padding-block:1rem 3.75rem;overflow:hidden}.photo-strip__track{width:max-content;animation:strip-scroll var(--strip-duration,60s) linear infinite;display:flex}.photo-strip__row{gap:var(--strip-gap);padding:0 var(--strip-gap) 0 0;flex-shrink:0;list-style:none;display:flex}.photo-strip__item{width:var(--tile);transition:transform .25s var(--ease-out), filter .25s ease;position:relative}.photo-strip__item img{z-index:1;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius-lg);background:var(--bg-wash);width:100%;position:relative}.photo-strip__description{top:calc(100% - var(--tuck));z-index:0;padding:calc(var(--tuck) + .6rem) 1rem .65rem;border-radius:0 0 var(--radius-lg) var(--radius-lg);background:var(--accent);color:var(--on-accent);font-size:var(--text-sm);text-align:center;-webkit-line-clamp:2;opacity:0;transition:transform .3s var(--ease-out), opacity .2s ease;pointer-events:none;-webkit-box-orient:vertical;font-weight:500;line-height:1.35;display:-webkit-box;position:absolute;left:0;right:0;overflow:hidden;transform:translateY(-100%)}@media (hover:hover){.photo-strip__item:hover{z-index:2;filter:drop-shadow(0 12px 22px #00000047);transform:scale(1.05)}.photo-strip__item:hover .photo-strip__description{opacity:1;transform:translateY(0)}}@keyframes strip-scroll{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.photo-strip__track{animation:none}}.about__grid{gap:clamp(2.5rem,5vw,4rem);display:grid}.about__main{align-items:start;gap:1.75rem;display:grid}.about__photo{aspect-ratio:4/5;border-radius:var(--radius-lg);background:var(--bg-wash);width:clamp(150px,40vw,200px);overflow:hidden}.about__photo img{object-fit:cover;width:100%;height:100%}:root[data-theme=dark] .about__photo img[src*=placeholder]{filter:invert(.88)hue-rotate(180deg)}.about__text{max-width:62ch;color:var(--text-muted);gap:1rem;line-height:1.7;display:grid}.about__interests-title{margin-top:2.25rem}.about__contact .contact-list{margin-bottom:1.25rem}@media (width>=700px){.about__main{grid-template-columns:auto minmax(0,1fr);gap:clamp(1.75rem,3.5vw,2.75rem)}}@media (width>=1000px){.about__grid{grid-template-columns:minmax(0,1.75fr) minmax(280px,1fr);align-items:start}.about__contact{top:calc(var(--header-h) + 24px);position:sticky}}.life{--arm:clamp(2.5rem, 5vw, 4.5rem);--node:14px;--node-top:2.1rem;color:#fff;background:#0e0e0d;margin-top:clamp(4rem,9vw,7rem);position:relative}.life__backdrop{height:100svh;margin-bottom:-100svh;position:sticky;top:0;overflow:hidden}.life__photo{opacity:0;transition:opacity 1.1s;position:absolute;inset:0}.life__photo.is-active{opacity:1}.life__photo img,.life__placeholder{object-fit:cover;width:100%;height:100%;transition:transform 8s cubic-bezier(.22,1,.36,1);transform:scale(1.12)}.life__photo.is-active img,.life__photo.is-active .life__placeholder{transform:scale(1.01)}.life__placeholder{background:repeating-linear-gradient(45deg,#0000 0 14px,#ffffff0d 14px 28px),#2a2a28}.life__veil{background:linear-gradient(#0000008c,#0003 30%,#00000040 70%,#0009),radial-gradient(30% 70%,#00000040,#0000);position:absolute;inset:0}.life__hud{padding:0 var(--gutter) clamp(1rem, 3vh, 1.75rem);max-width:calc(var(--container) + 2 * var(--gutter));justify-content:space-between;align-items:center;gap:1rem;margin-inline:auto;display:flex;position:absolute;bottom:0;left:0;right:0}.life__place{border-radius:var(--radius-sm);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:var(--text-xs);background:#00000040;border:1px solid #ffffff40;align-items:center;gap:.45rem;padding:.4rem .75rem;font-weight:500;display:inline-flex}.life__count{color:#ffffffb3;font-family:var(--font-pixel);font-size:.75rem}.life__count strong{color:#fff;font-weight:400}.life__content{z-index:1;position:relative}.life__head{text-align:center;justify-items:center;padding-top:clamp(7rem,22vh,12rem);display:grid}.life__eyebrow{color:#ffffffbf;font-family:var(--font-pixel);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.6rem;margin-bottom:1rem;font-size:.5625rem;display:flex}.life__eyebrow:before{content:"";background:#fff;width:8px;height:8px}.life .life__title{text-shadow:0 4px 40px #00000059;margin:0;font-size:clamp(3rem,9vw,6.5rem)}.life__timeline{margin-top:clamp(4rem,12vh,7rem);padding-bottom:12vh;position:relative}.life__track{width:2px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.life__line{transform-origin:top;background:#fff;position:absolute;inset:0;box-shadow:0 0 14px #ffffff73}.life__tip{z-index:2;background:#fff;width:10px;height:10px;position:absolute;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 5px #ffffff2e,0 0 26px 4px #ffffff8c}.life__list{margin:0;padding:0;list-style:none}.branch{width:50%;min-height:68svh;position:relative}.branch--left{padding-right:var(--arm)}.branch--right{padding-left:var(--arm);margin-left:50%}.branch__node{top:var(--node-top);z-index:3;width:var(--node);height:var(--node);opacity:0;transition:opacity .25s ease, transform .4s var(--ease-out);background:#fff;border:2px solid #fff;position:absolute;transform:scale(.3)}.branch--left .branch__node{right:calc(var(--node) / -2)}.branch--right .branch__node{left:calc(var(--node) / -2)}.branch.is-reached .branch__node{opacity:1;transform:scale(1.1)}.branch__arm{top:calc(var(--node-top) + var(--node) / 2 - 1px);width:calc(var(--arm) - var(--node) / 2);height:2px;transition:transform .55s var(--ease-out);background:#fff;position:absolute;transform:scaleX(0)}.branch--left .branch__arm{right:calc(var(--node) / 2);transform-origin:100%}.branch--right .branch__arm{left:calc(var(--node) / 2);transform-origin:0}.branch.is-reached .branch__arm{transform:scaleX(1)}.branch__card{border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);opacity:0;transform:translateX(var(--from,0)) scale(.98);background:#0e0e0d6b;border:1px solid #ffffff29;gap:.75rem;padding:clamp(1.25rem,2.6vw,1.85rem);transition:opacity .35s,transform .35s;display:grid;box-shadow:0 24px 60px -30px #0009}.branch--left .branch__card{--from:-28px}.branch--right .branch__card{--from:28px}.branch.is-reached .branch__card,.branch:focus-within .branch__card{opacity:1;transition:opacity .7s var(--ease-out) .25s, transform .8s var(--ease-out) .25s;transform:none}.branch__meta{color:#ffffffc7;font-size:var(--text-sm);flex-wrap:wrap;align-items:center;gap:.4rem .9rem;display:flex}.branch__index{color:#111;font-family:var(--font-pixel);background:#fff;padding:.3rem .45rem .25rem;font-size:.5625rem;line-height:1}.branch__place{align-items:center;gap:.35rem;display:inline-flex}.branch__title{letter-spacing:-.03em;font-size:clamp(1.5rem,2.8vw,2.25rem);line-height:1.08}.branch__desc{color:#ffffffd1;font-size:var(--text-sm);line-height:1.6}.branch__link,.life__end-button{border-radius:var(--radius-md);color:#111;min-height:44px;font-size:var(--text-sm);transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);background:#fff;justify-self:start;align-items:center;gap:.55rem;margin-top:.25rem;padding:.6rem 1.05rem;font-weight:500;text-decoration:none;display:inline-flex}.branch__link svg,.life__end-button svg{transition:transform .2s var(--ease-out)}@media (hover:hover){.branch__link:hover,.life__end-button:hover{transform:translate(-2px,-2px);box-shadow:4px 4px #fff6}.branch__link:hover svg,.life__end-button:hover svg{transform:translate(3px)}}.branch__link:focus-visible,.life__end-button:focus-visible{outline-color:#fff}.life__end{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem 1.5rem;padding:2rem 0 clamp(6rem,20vh,10rem);display:flex}.life__end-text{color:#ffffffd9;font-size:var(--text-md)}.life__end-button{margin-top:0}@media (width<=760px){.life{--arm:1.75rem;--line-x:7px}.life__head{text-align:left;justify-items:start}.life__track,.life__tip{left:var(--line-x)}.branch,.branch--left,.branch--right{width:100%;min-height:60svh;padding-left:calc(var(--line-x) + var(--arm));margin-left:0;padding-right:0}.branch--left .branch__node,.branch--right .branch__node{left:calc(var(--line-x) - var(--node) / 2);right:auto}.branch--left .branch__arm,.branch--right .branch__arm{left:calc(var(--line-x) + var(--node) / 2);transform-origin:0;right:auto}.branch--left .branch__card{--from:28px}.life__end{justify-content:flex-start}}.projects{padding-top:clamp(3rem,7vw,5rem);padding-bottom:clamp(1.5rem,3vw,2.5rem)}.projects+.about{padding-top:clamp(3rem,7vw,5rem)}.blogs__header{margin-bottom:clamp(2rem,5vw,3.5rem)}.blog-grid{gap:clamp(1.25rem,3vw,2rem);padding:0;list-style:none;display:grid}@media (width>=760px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.blog-grid>li{display:flex}.blog-card{flex-direction:column;flex:1;display:flex;overflow:hidden}.blog-card__media{aspect-ratio:16/10;background:var(--bg-wash);overflow:hidden}.blog-card__media img{object-fit:cover;width:100%;height:100%}.blog-card__placeholder{background-image:radial-gradient(circle at 1px 1px, var(--grid-dot) 1.5px, transparent 0);background-size:18px 18px;height:100%}.blog-card__body{border-top:1px solid var(--rule);flex-direction:column;flex:1;padding:1.25rem 1.4rem 1.5rem;display:flex}.blog-card__meta{color:var(--text-muted);font-size:var(--text-sm);flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;display:flex}.blog-card__location{align-items:center;gap:.35rem;display:inline-flex}.blog-card__title{font-size:var(--text-xl);letter-spacing:-.03em;margin-top:.6rem;line-height:1.1}.blog-card__desc{color:var(--text-muted);margin-top:.65rem;line-height:1.6}.contact__header{margin-bottom:clamp(2.5rem,6vw,4rem)}.contact__grid{gap:clamp(3rem,6vw,5rem);display:grid}@media (width>=900px){.contact__grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);align-items:start}.contact__info{top:calc(var(--header-h) + 24px);border-left:1px solid var(--rule);padding-left:clamp(2rem,4vw,3rem);position:sticky}}.contact-form{max-width:600px;position:relative}.field+.field{margin-top:1.5rem}.field label{margin-bottom:.45rem;font-weight:500;display:block}.field input,.field textarea{border:1px solid var(--rule-strong);border-radius:var(--radius-md);background:var(--surface);width:100%;min-height:50px;color:var(--text);font:inherit;font-size:max(1rem, var(--text-base));padding:.75rem .95rem;transition:border-color .15s,box-shadow .15s}.field textarea{resize:vertical;min-height:180px;line-height:1.6}.field input:hover,.field textarea:hover{border-color:var(--text-muted)}.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--danger)}.field input[aria-invalid=true]:focus,.field textarea[aria-invalid=true]:focus{box-shadow:0 0 0 1px var(--danger)}.field__hint{color:var(--text-muted);font-size:var(--text-sm);margin-top:.4rem}.field__error{color:var(--danger);font-size:var(--text-sm);align-items:center;gap:.4rem;margin-top:.45rem;font-weight:500;display:flex}.hp-field{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.contact-form__actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;margin-top:2rem;display:flex}.contact-form__actions .field__hint{margin:0}.contact-form__status:not(:empty){margin-top:1.5rem}.alert{border-radius:var(--radius-md);font-size:var(--text-sm);animation:menu-in .25s var(--ease-out);border:1px solid;gap:.75rem;padding:1rem 1.1rem;line-height:1.55;display:flex}.alert>svg{flex-shrink:0;margin-top:.15rem;font-size:1.15rem}.alert__title{font-size:var(--text-base);margin-bottom:.15rem;font-weight:600}.alert--success{border-color:color-mix(in srgb, var(--success) 45%, transparent);background:color-mix(in srgb, var(--success) 7%, transparent)}.alert--success>svg{color:var(--success)}.alert--error{border-color:color-mix(in srgb, var(--danger) 45%, transparent);background:color-mix(in srgb, var(--danger) 6%, transparent)}.alert--error>svg{color:var(--danger)}:root{--font-sans:"Space Grotesk", "Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif;--font-pixel:"Press Start 2P", "DotGothic16", ui-monospace, monospace;--bg:#fff;--bg-wash:#f4f4f2;--surface:#fff;--text:#1c1c1b;--text-muted:#63635e;--accent:#2a2a28;--accent-hover:#000;--on-accent:#fff;--rule:#e4e3df;--rule-strong:#c9c8c2;--grid-dot:#d6d5cf;--success:#1f7244;--danger:#b3261e;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1.0625rem;--text-md:1.25rem;--text-lg:clamp(1.375rem, 2.2vw, 1.5rem);--text-xl:clamp(1.75rem, 3.2vw, 2.125rem);--text-2xl:clamp(2.5rem, 6vw, 4rem);--radius-lg:10px;--radius-md:6px;--radius-sm:3px;--press:4px 4px 0 var(--accent);--header-h:68px;--container:1120px;--gutter:clamp(1rem, 4vw, 2rem);--section-space:clamp(5rem, 11vw, 9rem);--ease-out:cubic-bezier(.23, 1, .32, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#161615;--bg-wash:#1e1e1d;--surface:#1b1b1a;--text:#ecebe7;--text-muted:#a3a29c;--accent:#e9e8e3;--accent-hover:#fff;--on-accent:#161615;--rule:#2c2c2a;--rule-strong:#43433f;--grid-dot:#34342f;--success:#74d39c;--danger:#ff9389;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 24px);-webkit-text-size-adjust:100%}html.intro-lock,html.intro-lock body{overflow:hidden}body{font-family:var(--font-sans);font-size:var(--text-base);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.6;transition:background-color .25s,color .25s;overflow-x:hidden}#root{flex-direction:column;min-height:100vh;display:flex}main{flex:1}main:focus{outline:none}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:600;line-height:1.15}p{text-wrap:pretty;margin:0}img{max-width:100%;height:auto;display:block}a{color:inherit}button{font:inherit;color:inherit}ul,ol{margin:0}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.skip-link{z-index:100;border-radius:var(--radius-md);background:var(--accent);color:var(--on-accent);padding:.7rem 1rem;font-weight:500;text-decoration:none;position:absolute;top:-100px;left:1rem}.skip-link:focus{top:.75rem}.section{padding-block:var(--section-space)}.section-title{font-size:var(--text-2xl);letter-spacing:-.035em;margin-bottom:clamp(1.75rem,4vw,2.75rem);line-height:1}.page{padding-top:clamp(3rem,8vw,6rem);padding-bottom:var(--section-space)}.page-title{font-size:var(--text-2xl);letter-spacing:-.035em;line-height:1}.page-intro{max-width:60ch;color:var(--text-muted);font-size:var(--text-md);margin-top:1.25rem;line-height:1.55}.small-heading{font-size:var(--text-base);letter-spacing:-.01em;margin-bottom:1rem;font-weight:600}.button{border-radius:var(--radius-md);background:var(--accent);min-height:48px;color:var(--on-accent);font-size:var(--text-base);cursor:pointer;border:0;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.4rem;font-weight:500;line-height:1.2;text-decoration:none;transition:background-color .15s,transform .1s;display:inline-flex}.button:hover{background:var(--accent-hover)}.button:active{transform:scale(.98)}.button:disabled{opacity:.55;cursor:progress}.button--block{width:100%}.icon-button{border:1px solid var(--rule);border-radius:var(--radius-md);width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;place-items:center;padding:0;font-size:1.125rem;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-grid}.icon-button:hover{border-color:var(--rule-strong);background:var(--bg-wash)}.link-button{text-underline-offset:3px;cursor:pointer;background:0 0;border:0;margin-top:.5rem;padding:0;font-weight:500;text-decoration:underline}.card{border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--surface);padding:clamp(1.25rem,3vw,1.75rem)}.pressable{border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--surface);color:inherit;transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out), border-color .2s ease;text-decoration:none}@media (hover:hover){.pressable:hover{border-color:var(--accent);box-shadow:var(--press);transform:translate(-3px,-3px)}}.pressable:focus-visible{border-color:var(--accent);box-shadow:var(--press);outline-offset:6px}.pressable:active{box-shadow:1px 1px 0 var(--accent);transform:translate(0)}.chips{flex-wrap:wrap;gap:.5rem;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--rule-strong);border-radius:var(--radius-sm);font-size:var(--text-sm);padding:.3rem .7rem;line-height:1.4}.badge{border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:.5rem;padding:.35rem .6rem;font-weight:500;line-height:1.2;display:inline-flex}.block-cursor{background:currentColor;width:.55em;height:1em;animation:1.05s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.site-header{z-index:50;height:var(--header-h);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:saturate(160%)blur(14px);backdrop-filter:saturate(160%)blur(14px);border-bottom:1px solid var(--rule);box-shadow:0 1px 0 color-mix(in srgb, var(--bg) 60%, transparent);transition:opacity .9s cubic-bezier(.65,0,.35,1),transform 1.2s cubic-bezier(.65,0,.35,1),border-color .2s,background-color .25s,box-shadow .3s;position:sticky;top:0}.site-header.is-scrolled,.site-header.menu-open{border-bottom-color:var(--rule-strong);box-shadow:0 12px 32px -22px #00000059}:root[data-theme=dark] .site-header.is-scrolled{box-shadow:0 12px 32px -18px #000c}.site-header__progress{background:var(--accent);transform-origin:0;pointer-events:none;height:2px;position:absolute;bottom:-1px;left:0;right:0}.site-header.is-hidden{opacity:0;pointer-events:none;transform:translateY(-100%)}.site-header__inner{align-items:center;gap:1.5rem;height:100%;display:flex}.brand{font-size:var(--text-md);letter-spacing:-.03em;align-items:baseline;gap:.2em;padding-block:.5rem;font-weight:600;text-decoration:none;display:inline-flex}.brand__cursor{background:currentColor;width:.5em;height:.78em;transform:translateY(.06em)}@media (hover:hover){.brand:hover .brand__cursor{animation:1.05s step-end infinite blink}}.site-nav{margin-left:auto}.site-nav__list{gap:.25rem;padding:0;list-style:none;display:flex}.site-nav__link{min-height:44px;color:var(--text-muted);font-size:var(--text-sm);align-items:center;padding:0 .85rem;font-weight:500;text-decoration:none;transition:color .15s;display:flex}.site-nav__link:hover,.site-nav__link.is-active{color:var(--text)}.site-header__actions{align-items:center;gap:.5rem;display:flex}@media (width>=761px){.site-header__actions{border-left:1px solid var(--rule);padding-left:1.25rem}}.theme-toggle,.menu-button{border-color:#0000}.theme-toggle__icon{animation:icon-in .3s var(--ease-out);display:grid}@keyframes icon-in{0%{opacity:0;transform:rotate(-45deg)scale(.6)}}.menu-button{display:none}.menu-button__bars{gap:4px;width:18px;display:grid}.menu-button__bars span{height:2px;transition:transform .25s var(--ease-out), opacity .15s ease;background:currentColor}.menu-button[aria-expanded=true] .menu-button__bars span:first-child{transform:translateY(6px)rotate(45deg)}.menu-button[aria-expanded=true] .menu-button__bars span:nth-child(2){opacity:0}.menu-button[aria-expanded=true] .menu-button__bars span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.menu-backdrop{display:none}@media (width<=760px){.menu-button{display:inline-grid}.site-header__actions{margin-left:auto}.site-nav{z-index:2;padding:.5rem var(--gutter) 1.25rem;background:var(--bg);border-bottom:1px solid var(--rule);margin:0;display:none;position:absolute;top:100%;left:0;right:0}.menu-open .site-nav{animation:menu-in .25s var(--ease-out);display:block}.site-nav__list{flex-direction:column;gap:0}.site-nav__link{min-height:52px;font-size:var(--text-md);border-bottom:1px solid var(--rule);padding-left:0}.site-nav__list li:last-child .site-nav__link{border-bottom:0}.menu-backdrop{z-index:1;background:#0000004d;height:100vh;animation:.25s fade-in;display:block;position:absolute;top:100%;left:0;right:0}}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}}@keyframes fade-in{0%{opacity:0}}.contact-list{padding:0;list-style:none;display:grid}.contact-list li+li{border-top:1px solid var(--rule)}.contact-list__link{grid-template-columns:1.25rem 1fr;align-items:center;gap:.9rem;min-height:56px;padding-block:.65rem;text-decoration:none;display:grid}.contact-list__icon{color:var(--text-muted);font-size:1.15rem;transition:color .15s;display:grid}.contact-list__text{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 1rem;min-width:0;display:flex}.contact-list__label{font-weight:500}.contact-list__handle{color:var(--text-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.contact-list__link:hover .contact-list__icon{color:var(--text)}.contact-list__link:hover .contact-list__label{text-underline-offset:3px;text-decoration:underline}.site-footer{border-top:1px solid var(--rule);padding-block:1.75rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.site-footer__copy{color:var(--text-muted);font-size:var(--text-sm)}.site-footer__socials{gap:.25rem;padding:0;list-style:none;display:flex}.site-footer__socials .icon-button{color:var(--text-muted);border-color:#0000}.site-footer__socials .icon-button:hover{background:var(--bg-wash);color:var(--text)}.back-link{min-height:44px;color:var(--text-muted);font-size:var(--text-sm);align-items:center;gap:.4rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.back-link:hover{color:var(--text)}.back-link svg{transition:transform .2s var(--ease-out)}.back-link:hover svg{transform:translate(-3px)}.not-found{justify-items:start;gap:1.25rem;display:grid}.not-found p{max-width:50ch;color:var(--text-muted);font-size:var(--text-md)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.lang-switch{position:relative}.lang-switch__button{border-radius:var(--radius-md);min-height:44px;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.4rem;padding:0 .7rem;font-weight:500;transition:color .15s,background-color .15s,border-color .15s;display:inline-flex}.lang-switch__button:hover,.lang-switch.is-open .lang-switch__button{border-color:var(--rule);background:var(--bg-wash);color:var(--text)}.lang-switch__globe{font-size:1.05rem}.lang-switch__chevron{transition:transform .2s var(--ease-out);font-size:.9rem}.lang-switch.is-open .lang-switch__chevron{transform:rotate(180deg)}.lang-switch__menu{z-index:10;border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--surface);min-width:11rem;animation:menu-in .18s var(--ease-out);margin:0;padding:.35rem;list-style:none;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 40px -18px #00000073}.lang-switch__option{border-radius:var(--radius-md);min-height:42px;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;outline:none;justify-content:space-between;align-items:center;gap:1rem;padding:0 .75rem;font-weight:500;display:flex}.lang-switch__option:focus,.lang-switch__option:hover{background:var(--bg-wash);color:var(--text)}.lang-switch__option:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}.lang-switch__option.is-selected{color:var(--text)}@media (width<=760px){.lang-switch__button{padding:0 .5rem}.lang-switch__chevron{display:none}}:root:lang(zh-Hant) :is(h1,h2,h3,.section-title,.page-title){letter-spacing:0}
