:root{--color-white:#fff;--color-black:#000;--color-neutral-25:#fcfcfc;--color-neutral-50:#f7f7f7;--color-neutral-100:#f0f0f0;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#292929;--color-neutral-900:#202020;--color-neutral-950:#0a0a0a;--color-cool-gray-50:#f8f9fb;--color-cool-gray-100:#f1f3f6;--color-cool-gray-200:#e4e8ee;--color-blue-500:#2563eb;--color-green-600:#16803c;--color-amber-600:#b45309;--color-red-600:#dc2626;--color-bg-canvas:var(--color-white);--color-bg-surface:var(--color-white);--color-bg-subtle:var(--color-cool-gray-50);--color-bg-muted:var(--color-cool-gray-100);--color-bg-hover:var(--color-neutral-50);--color-bg-pressed:var(--color-neutral-100);--color-bg-disabled:var(--color-neutral-100);--color-bg-inverse:var(--color-neutral-950);--color-bg-overlay:#0a0a0a7a;--color-text-primary:var(--color-neutral-900);--color-text-secondary:#00000080;--color-text-tertiary:var(--color-neutral-500);--color-text-disabled:var(--color-neutral-400);--color-text-inverse:var(--color-white);--color-text-link:var(--color-blue-500);--color-border-subtle:var(--color-neutral-100);--color-border-default:var(--color-neutral-200);--color-border-strong:var(--color-neutral-300);--color-focus-ring:var(--color-blue-500);--color-status-info:var(--color-blue-500);--color-status-success:var(--color-green-600);--color-status-warning:var(--color-amber-600);--color-status-danger:var(--color-red-600);--color-canvas-alpha-0:#fff0;--color-canvas-alpha-82:#ffffffd1;--color-canvas-alpha-100:#fff;--font-family-sans:"Helvetica Neue", Helvetica, Arial, sans-serif;--font-family-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--font-size-12:.75rem;--font-size-14:.875rem;--font-size-16:1rem;--font-size-20:1.25rem;--font-size-24:1.5rem;--font-size-32:2rem;--font-size-40:2.5rem;--font-size-48:3rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.2;--line-height-snug:1.3;--line-height-body:1.4;--line-height-relaxed:1.6;--letter-spacing-tight:-.03em;--letter-spacing-snug:-.02em;--letter-spacing-normal:0;--text-display-size:var(--font-size-48);--text-display-line-height:var(--line-height-tight);--text-display-weight:var(--font-weight-medium);--text-heading-lg-size:var(--font-size-32);--text-heading-md-size:var(--font-size-24);--text-heading-sm-size:var(--font-size-20);--text-heading-line-height:var(--line-height-tight);--text-heading-weight:var(--font-weight-medium);--text-body-lg-size:var(--font-size-20);--text-body-md-size:var(--font-size-16);--text-body-sm-size:var(--font-size-14);--text-body-xs-size:var(--font-size-12);--text-body-line-height:var(--line-height-body);--text-body-weight:var(--font-weight-regular);--text-label-size:var(--font-size-14);--text-label-line-height:var(--line-height-snug);--text-label-weight:var(--font-weight-medium);--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--radius-none:0;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-full:9999px;--radius-control:var(--radius-md);--radius-card:var(--radius-lg);--radius-dialog:var(--radius-xl);--radius-pill:var(--radius-full);--shadow-xs:0 1px 2px #0000000d;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 8px 24px #0000001f;--shadow-lg:0 16px 40px #00000029;--shadow-sticker-rest:0 4px 8px #00000014;--shadow-sticker-drag:0 12px 24px #0003;--shadow-experience-card-rest:none;--shadow-experience-card-hover:0 4px 8px #0000000a, 0 14px 28px -8px #00000017;--motion-duration-instant:0s;--motion-duration-fast:.12s;--motion-duration-normal:.2s;--motion-duration-slow:.3s;--motion-duration-slower:.5s;--motion-duration-entrance:.7s;--motion-duration-emphasis:.9s;--motion-delay-none:0s;--motion-delay-content:.7s;--motion-ease-linear:linear;--motion-ease-standard:cubic-bezier(.32, .72, 0, 1);--motion-ease-enter:cubic-bezier(.32, .72, 0, 1);--motion-ease-exit:cubic-bezier(.32, .72, 0, 1);--motion-ease-in-out:cubic-bezier(.32, .72, 0, 1);--motion-ease-card:cubic-bezier(.22, .61, .36, 1);--motion-ease-press:cubic-bezier(.25, .46, .45, .94);--motion-duration-interaction:var(--motion-duration-normal);--motion-duration-transition:var(--motion-duration-slow);--motion-duration-sticker-frame:.14s;--z-base:0;--z-content:1;--z-floating:2;--z-dragging:3;--z-transition:4;--z-overlay:5;--z-navigation:6;--z-toast:100;--z-modal:200}@media (prefers-color-scheme:dark){:root{--color-bg-canvas:var(--color-neutral-950);--color-bg-surface:var(--color-neutral-900);--color-bg-subtle:var(--color-neutral-800);--color-bg-muted:var(--color-neutral-700);--color-bg-hover:var(--color-neutral-800);--color-bg-pressed:var(--color-neutral-700);--color-bg-disabled:var(--color-neutral-800);--color-bg-inverse:var(--color-white);--color-bg-overlay:#000000b8;--color-text-primary:var(--color-white);--color-text-secondary:#ffffffb8;--color-text-tertiary:var(--color-neutral-300);--color-text-disabled:var(--color-neutral-500);--color-text-inverse:var(--color-neutral-950);--color-border-subtle:var(--color-neutral-800);--color-border-default:var(--color-neutral-700);--color-border-strong:var(--color-neutral-600);--color-canvas-alpha-0:#0a0a0a00;--color-canvas-alpha-82:#0a0a0ad1;--color-canvas-alpha-100:#0a0a0a;--shadow-xs:0 0 0 1px #ffffff14;--shadow-sm:0 0 0 1px #ffffff14;--shadow-md:0 0 0 1px #ffffff1a;--shadow-lg:0 0 0 1px #ffffff1f;--shadow-sticker-rest:0 0 2px #ffffff2e;--shadow-sticker-drag:0 0 4px #ffffff42;--shadow-experience-card-rest:0 0 0 1px #ffffff14;--shadow-experience-card-hover:0 0 0 1px #ffffff24}}@media (prefers-reduced-motion:reduce){:root{--motion-duration-fast:1ms;--motion-duration-normal:1ms;--motion-duration-slow:1ms;--motion-duration-slower:1ms;--motion-duration-entrance:1ms;--motion-duration-emphasis:1ms;--motion-duration-sticker-frame:1ms;--motion-delay-content:0s}}:root{color:var(--color-text-primary);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:var(--font-family-sans);background:var(--color-bg-canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}::selection{color:var(--color-text-inverse);background:var(--color-bg-inverse)}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{background:var(--color-bg-canvas);cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M4.90002%202.61999L4.93402%202.63099L20.86%208.34799C21.14%208.44799%2021.409%208.54499%2021.616%208.64099C21.791%208.72099%2022.173%208.90399%2022.39%209.30099C22.5067%209.51529%2022.5693%209.7548%2022.5724%209.99876C22.5755%2010.2427%2022.5191%2010.4838%2022.408%2010.701C22.202%2011.104%2021.824%2011.296%2021.652%2011.381C21.447%2011.482%2021.182%2011.585%2020.904%2011.693L14.272%2014.273L11.694%2020.903C11.586%2021.181%2011.482%2021.447%2011.382%2021.651C11.297%2021.824%2011.104%2022.202%2010.701%2022.408C10.4838%2022.5191%2010.2428%2022.5755%209.99879%2022.5724C9.75483%2022.5692%209.51532%2022.5066%209.30102%2022.39C8.90402%2022.173%208.72102%2021.79%208.64102%2021.616C8.53369%2021.3676%208.43628%2021.1151%208.34902%2020.859L2.63202%204.93399L2.62002%204.89999C2.53962%204.68743%202.46822%204.47157%202.40602%204.25299C2.35902%204.06999%202.28002%203.71699%202.41102%203.33799C2.48528%203.12338%202.60731%202.92844%202.76789%202.76786C2.92847%202.60728%203.12341%202.48525%203.33802%202.41099C3.71702%202.27999%204.07002%202.35899%204.25302%202.40599C4.44702%202.45599%204.67502%202.53899%204.90002%202.61999Z'%20fill='black'/%3e%3c/svg%3e") 2 2,auto;min-height:100vh;overflow:hidden}:where(*){cursor:inherit}@media (prefers-color-scheme:dark){body{cursor:auto}}.loading-screen,.home-screen{background:var(--color-bg-canvas);width:100%;min-height:100svh;position:relative;overflow:hidden}.home-screen{overscroll-behavior-y:contain;scroll-behavior:smooth;scroll-snap-type:y mandatory;touch-action:pan-y;height:100svh;scroll-padding-block:0;overflow:hidden auto}.home-page-content{display:contents}.home-screen[data-detail-open=true] .home-header{z-index:calc(var(--z-modal) + 2)}.home-screen[data-detail-open=true] .home-header a{pointer-events:none}.home-screen[data-detail-open=true] .project-card.is-active{visibility:hidden;pointer-events:none;transition:none}.home-scroll-space{scroll-snap-align:start;scroll-snap-stop:always;height:100svh;position:relative}.home-stage{pointer-events:none;width:100%;height:100svh;z-index:var(--z-base);position:fixed;top:0;left:0;overflow:hidden}.home-content-layer{z-index:var(--z-content);animation:home-content-enter var(--motion-duration-entrance) var(--motion-ease-enter) var(--motion-delay-content) both;will-change:transform, opacity;position:absolute;inset:0}.home-about-scroll-layer{z-index:var(--z-content);animation:home-content-enter var(--motion-duration-entrance) var(--motion-ease-enter) var(--motion-delay-content) both;pointer-events:none;will-change:transform, opacity;position:absolute;inset:0}.home-about-content{pointer-events:none;position:absolute;inset:0}.home-about-scroll-layer .home-about-content{opacity:calc(1 - var(--hero-fade-progress));transform:translateY(calc(var(--hero-fade-progress) * -48px))}.home-header{z-index:var(--z-modal);width:100%;padding:var(--space-4) var(--space-24);color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);opacity:var(--scroll-progress);pointer-events:none;transform:translateY(var(--header-shift));justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0}.home-header nav{align-items:center;gap:var(--space-12);display:flex}.home-header a{color:inherit;pointer-events:auto;transition:color var(--motion-duration-interaction) var(--motion-ease-standard);text-decoration:none;display:inline-block;position:relative}.home-header a:after{content:"";opacity:0;transform-origin:50%;height:1px;transition:transform var(--motion-duration-interaction) var(--motion-ease-standard), opacity var(--motion-duration-interaction) var(--motion-ease-standard);background:currentColor;position:absolute;bottom:-2px;left:0;right:0;transform:scaleX(0)}.home-header a.is-active:after{opacity:1;transform:scaleX(1)}.home-header a:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.language-toggle{border:1px solid var(--color-border-strong);border-radius:var(--radius-full);width:32px;height:32px;color:inherit;font:inherit;font-size:var(--text-body-xs-size);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-normal);cursor:pointer;touch-action:manipulation;pointer-events:auto;transition:color var(--motion-duration-interaction) var(--motion-ease-standard), background-color var(--motion-duration-interaction) var(--motion-ease-standard), border-color var(--motion-duration-interaction) var(--motion-ease-standard), transform var(--motion-duration-fast) var(--motion-ease-press);background:0 0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex;position:relative}.language-toggle:before{content:"";position:absolute;inset:-6px}.language-toggle:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.language-toggle:active{background:var(--color-bg-pressed);transform:scale(.96)}@media (hover:hover) and (pointer:fine){.home-header a:hover{color:var(--color-text-tertiary)}.language-toggle:hover{border-color:var(--color-text-tertiary);background:var(--color-bg-hover)}}.home-sticker-rail{pointer-events:none;height:64px;z-index:var(--z-overlay);opacity:0;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter);will-change:opacity;position:absolute;inset:0 0 auto;overflow:hidden}.home-sticker-rail img{object-fit:cover;width:100%;height:64px;display:block}.home-sticker-mask{z-index:var(--z-navigation);background:linear-gradient(to bottom, var(--color-canvas-alpha-0) 0, var(--color-canvas-alpha-82) var(--space-8), var(--color-canvas-alpha-100) var(--space-16), var(--color-canvas-alpha-100) 100%);pointer-events:none;opacity:0;width:100%;height:100%;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter);will-change:opacity;position:absolute;top:0;left:0}.home-stage .draggable-sticker{pointer-events:auto}.loading-exit-sticker{top:var(--loading-exit-top,calc(50% - 36px));left:var(--loading-exit-left,50%);object-fit:contain;pointer-events:none;width:72px;height:72px;transform:var(--loading-exit-transform,translate(-50%, 0));filter:drop-shadow(var(--shadow-sticker-rest));animation:loading-sticker-exit var(--motion-duration-emphasis) var(--motion-ease-exit) forwards;will-change:opacity, translate;z-index:var(--z-transition);display:block;position:absolute;translate:0}.draggable-sticker{cursor:grab;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;touch-action:pan-y;transform-origin:50%;will-change:auto;filter:drop-shadow(var(--shadow-sticker-rest));transition:filter var(--motion-duration-transition) var(--motion-ease-in-out);z-index:var(--z-floating);display:block;position:absolute;top:0;left:0}.draggable-sticker.is-dragging{cursor:grabbing;will-change:transform;filter:drop-shadow(var(--shadow-sticker-drag));z-index:var(--z-dragging)}.draggable-sticker.is-locked{cursor:default;pointer-events:none;transition:filter var(--motion-duration-transition) var(--motion-ease-in-out)}.loading-sticker{z-index:var(--z-content)}.loading-screen .loading-sticker{animation:loading-sticker-enter var(--motion-duration-entrance) var(--motion-ease-enter) both}.portfolio-section{opacity:0;pointer-events:none;will-change:opacity, transform;width:100%;height:100svh;min-height:100svh;scroll-margin-top:0;position:relative;overflow:hidden}.work-section{opacity:var(--work-entry-progress,0);pointer-events:none;transform:translate3d(0, calc((1 - var(--work-entry-progress,0)) * 72px), 0)}.scroll-chapter{scroll-snap-align:start;scroll-snap-stop:always;height:100svh;position:relative}.about-copy{text-align:center;width:min(607px,100% - 48px);position:absolute;top:calc(50% - 110px);left:50%;transform:translate(-50%)}.about-copy h2{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-heading-md-size);font-style:normal;font-weight:var(--text-heading-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-body-line-height);margin:0}.about-meta{color:var(--color-text-secondary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-body-line-height);text-align:center;white-space:nowrap;flex-direction:column;align-items:center;margin:0;display:flex;position:absolute;top:calc(50% + 88px);left:50%;transform:translate(-50%)}.about-meta a{color:inherit;text-underline-offset:2px;text-decoration:underline}.work-content{gap:var(--space-6);flex-direction:column;width:min(930px,100% - 48px);min-height:486px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.work-intro{align-items:flex-start;gap:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));min-height:88px;padding:0;display:grid}.work-intro h2{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-heading-md-size);font-style:normal;font-weight:var(--text-heading-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-heading-line-height);text-align:right;grid-column:1;margin:0}.work-intro p{min-width:0;color:var(--color-text-secondary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-body-line-height);grid-column:2/-1;margin:0}.experience-grid{gap:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));min-height:374px;display:grid}.experience-card{--experience-card-tilt-x:0deg;--experience-card-tilt-y:0deg;--experience-card-lift:0px;--experience-card-scale:1;min-width:0;min-height:374px;transform:translateY(var(--experience-card-lift));transform-origin:50%;transform-box:border-box;transition:transform var(--motion-duration-slow) var(--motion-ease-card);display:flex;position:relative}.experience-card-open{z-index:4;border-radius:var(--radius-card);cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M15%204C14.7348%204%2014.4804%203.89464%2014.2929%203.70711C14.1054%203.51957%2014%203.26522%2014%203C14%202.73478%2014.1054%202.48043%2014.2929%202.29289C14.4804%202.10536%2014.7348%202%2015%202H21C21.2652%202%2021.5196%202.10536%2021.7071%202.29289C21.8946%202.48043%2022%202.73478%2022%203V9C22%209.26522%2021.8946%209.51957%2021.7071%209.70711C21.5196%209.89464%2021.2652%2010%2021%2010C20.7348%2010%2020.4804%209.89464%2020.2929%209.70711C20.1054%209.51957%2020%209.26522%2020%209V5.414L14.707%2010.707C14.5184%2010.8892%2014.2658%2010.99%2014.0036%2010.9877C13.7414%2010.9854%2013.4906%2010.8802%2013.3052%2010.6948C13.1198%2010.5094%2013.0146%2010.2586%2013.0123%209.9964C13.01%209.7342%2013.1108%209.4816%2013.293%209.293L18.586%204H15ZM10.707%2013.293C10.8945%2013.4805%2010.9998%2013.7348%2010.9998%2014C10.9998%2014.2652%2010.8945%2014.5195%2010.707%2014.707L5.414%2020H9C9.13132%2020%209.26136%2020.0259%209.38268%2020.0761C9.50401%2020.1264%209.61425%2020.2%209.70711%2020.2929C9.79996%2020.3858%209.87362%2020.496%209.92388%2020.6173C9.97413%2020.7386%2010%2020.8687%2010%2021C10%2021.1313%209.97413%2021.2614%209.92388%2021.3827C9.87362%2021.504%209.79996%2021.6142%209.70711%2021.7071C9.61425%2021.8%209.50401%2021.8736%209.38268%2021.9239C9.26136%2021.9741%209.13132%2022%209%2022H3C2.73478%2022%202.48043%2021.8946%202.29289%2021.7071C2.10536%2021.5196%202%2021.2652%202%2021V15C2%2014.7348%202.10536%2014.4804%202.29289%2014.2929C2.48043%2014.1054%202.73478%2014%203%2014C3.26522%2014%203.51957%2014.1054%203.70711%2014.2929C3.89464%2014.4804%204%2014.7348%204%2015V18.586L9.293%2013.293C9.48053%2013.1055%209.73483%2013.0002%2010%2013.0002C10.2652%2013.0002%2010.5195%2013.1055%2010.707%2013.293Z'%20fill='black'/%3e%3c/svg%3e") 8 8,pointer;background:0 0;border:0;padding:0;position:absolute;inset:0}.experience-card-open:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.experience-card-surface{width:100%;height:100%;min-height:inherit;border-radius:var(--radius-card);background:var(--color-bg-hover);box-shadow:var(--shadow-experience-card-rest);transform:perspective(1100px) scale(var(--experience-card-scale)) rotateX(var(--experience-card-tilt-x)) rotateY(var(--experience-card-tilt-y));transform-origin:50%;transform-box:border-box;transform-style:preserve-3d;transition:transform var(--motion-duration-fast) var(--motion-ease-card), box-shadow var(--motion-duration-slow) var(--motion-ease-card);flex-direction:column;display:flex;overflow:hidden}.experience-card,.experience-card *{cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M15%204C14.7348%204%2014.4804%203.89464%2014.2929%203.70711C14.1054%203.51957%2014%203.26522%2014%203C14%202.73478%2014.1054%202.48043%2014.2929%202.29289C14.4804%202.10536%2014.7348%202%2015%202H21C21.2652%202%2021.5196%202.10536%2021.7071%202.29289C21.8946%202.48043%2022%202.73478%2022%203V9C22%209.26522%2021.8946%209.51957%2021.7071%209.70711C21.5196%209.89464%2021.2652%2010%2021%2010C20.7348%2010%2020.4804%209.89464%2020.2929%209.70711C20.1054%209.51957%2020%209.26522%2020%209V5.414L14.707%2010.707C14.5184%2010.8892%2014.2658%2010.99%2014.0036%2010.9877C13.7414%2010.9854%2013.4906%2010.8802%2013.3052%2010.6948C13.1198%2010.5094%2013.0146%2010.2586%2013.0123%209.9964C13.01%209.7342%2013.1108%209.4816%2013.293%209.293L18.586%204H15ZM10.707%2013.293C10.8945%2013.4805%2010.9998%2013.7348%2010.9998%2014C10.9998%2014.2652%2010.8945%2014.5195%2010.707%2014.707L5.414%2020H9C9.13132%2020%209.26136%2020.0259%209.38268%2020.0761C9.50401%2020.1264%209.61425%2020.2%209.70711%2020.2929C9.79996%2020.3858%209.87362%2020.496%209.92388%2020.6173C9.97413%2020.7386%2010%2020.8687%2010%2021C10%2021.1313%209.97413%2021.2614%209.92388%2021.3827C9.87362%2021.504%209.79996%2021.6142%209.70711%2021.7071C9.61425%2021.8%209.50401%2021.8736%209.38268%2021.9239C9.26136%2021.9741%209.13132%2022%209%2022H3C2.73478%2022%202.48043%2021.8946%202.29289%2021.7071C2.10536%2021.5196%202%2021.2652%202%2021V15C2%2014.7348%202.10536%2014.4804%202.29289%2014.2929C2.48043%2014.1054%202.73478%2014%203%2014C3.26522%2014%203.51957%2014.1054%203.70711%2014.2929C3.89464%2014.4804%204%2014.7348%204%2015V18.586L9.293%2013.293C9.48053%2013.1055%209.73483%2013.0002%2010%2013.0002C10.2652%2013.0002%2010.5195%2013.1055%2010.707%2013.293Z'%20fill='black'/%3e%3c/svg%3e") 8 8,pointer}@media (hover:hover) and (pointer:fine){.experience-card:hover{--experience-card-lift:0px;--experience-card-scale:1.012}.experience-card:hover .experience-card-surface{box-shadow:var(--shadow-experience-card-hover)}.experience-card:hover .experience-card-media{--experience-aura-opacity:1}}.experience-card:active,.experience-card:hover:active{--experience-card-lift:0px;--experience-card-scale:.997}.experience-card:active .experience-card-surface,.experience-card:hover:active .experience-card-surface{transition:transform var(--motion-duration-fast) var(--motion-ease-press), box-shadow var(--motion-duration-slow) var(--motion-ease-card)}.experience-card[data-detail-transitioning]{--experience-card-lift:0px;--experience-card-scale:1;transition:none;transform:translateY(0)}.experience-card[data-detail-transitioning] .experience-card-surface{box-shadow:var(--shadow-experience-card-rest);transition:none;transform:perspective(1100px)scale(1)rotateX(0)rotateY(0)}.experience-card[data-detail-transitioning] .experience-aura-layer{--experience-aura-opacity:.68;transition:none}.experience-card-media{--experience-aura-opacity:.68;border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--color-bg-subtle);flex:0 0 144px;justify-content:center;align-items:center;height:144px;padding:10px;display:flex;position:relative;overflow:hidden}.experience-aura-layer{opacity:var(--experience-aura-opacity);transition:opacity var(--motion-duration-slow) var(--motion-ease-card);will-change:transform;pointer-events:none;position:absolute;inset:-42px;transform:translateZ(0)}.experience-aura-layer-1,.experience-aura-layer-2{mix-blend-mode:multiply;filter:blur(42px)}.experience-aura-wechat .experience-aura-layer-1{background:linear-gradient(#0000 0%, #4dd2ff1f 28%, var(--color-bg-canvas) 18%, #35e6c0 68%, #5b6ef5 100%)}.experience-aura-wechat .experience-aura-layer-2{background:linear-gradient(#0000 0%, #4dd2ff38 34%, var(--color-bg-canvas) 66%, #35e6c0 82%, #5b6ef5 100%)}.experience-aura-li-auto .experience-aura-layer-1{background:linear-gradient(#0000 0%, #d6ccbe1f 28%, var(--color-bg-canvas) 18%, #c4b5a0 68%, #a8947a 100%)}.experience-aura-li-auto .experience-aura-layer-2{background:linear-gradient(#0000 0%, #d6ccbe38 34%, var(--color-bg-canvas) 66%, #c4b5a0 82%, #a8947a 100%)}.experience-aura-iflytek .experience-aura-layer-1{background:linear-gradient(#0000 0%, #c8e6ff1f 28%, var(--color-bg-canvas) 18%, #96c8ff 68%, #6482c8 100%)}.experience-aura-iflytek .experience-aura-layer-2{background:linear-gradient(#0000 0%, #c8e6ff38 34%, var(--color-bg-canvas) 66%, #96c8ff 82%, #6482c8 100%)}@media (prefers-color-scheme:dark){.home-sticker-rail img{filter:invert()}.experience-aura-layer-1,.experience-aura-layer-2{mix-blend-mode:screen}.project-card-arrow,.projects-controls button img{filter:invert()}.experience-card,.experience-card *{cursor:pointer}}.experience-card-sticker{z-index:1;object-fit:contain;display:block;position:relative}.experience-card-sticker-wechat{width:52px;height:52px}.experience-card-sticker-li-auto{width:48px;height:48px}.experience-card-sticker-iflytek{width:77px;height:36px}.experience-card-body{justify-content:space-between;gap:var(--space-4);min-height:min-content;padding:var(--space-4);flex-direction:column;flex:auto;display:flex}.experience-card-heading h3,.experience-card-heading p,.experience-card-description p{margin:0}.experience-card-heading{color:var(--color-text-primary);font-family:var(--font-family-sans);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight)}.experience-card-heading h3{font-size:var(--text-body-md-size);line-height:var(--text-heading-line-height)}.experience-card-heading p{gap:var(--space-1);margin-top:var(--space-1);font-size:var(--text-body-sm-size);line-height:var(--text-body-sm-size);display:flex}.experience-card-description{color:var(--color-text-secondary);font-family:"OPPO Sans", var(--font-family-sans);font-size:var(--text-body-xs-size);letter-spacing:var(--letter-spacing-normal);line-height:1.45}.experience-card-description p+p{margin-top:0}.experience-detail{z-index:calc(var(--z-modal) + 1);overscroll-behavior:contain;scroll-behavior:smooth;isolation:isolate;position:fixed;inset:0;overflow:hidden auto}.experience-detail-backdrop{z-index:-1;background:var(--color-bg-canvas);cursor:inherit;opacity:0;transition:opacity .34s var(--motion-ease-enter);border:0;padding:0;position:fixed;inset:0}.experience-detail[data-entered=true] .experience-detail-backdrop{opacity:1}.experience-detail-meta,.experience-detail-navigation{z-index:2;gap:var(--space-1);width:135px;font-family:var(--font-family-sans);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);opacity:0;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter) .1s, transform var(--motion-duration-slow) var(--motion-ease-enter) .1s;flex-direction:column;display:flex;position:fixed;transform:translateY(16px)}.experience-detail-meta{top:50%;left:var(--space-24);color:var(--color-text-primary);transform:translateY(calc(16px - 50%))}.experience-detail-meta h1,.experience-detail-meta p{font:inherit;margin:0;line-height:normal}.experience-detail-meta h1{font-size:var(--text-body-md-size)}.experience-detail-meta p{font-size:var(--text-body-xs-size)}.experience-detail-navigation{top:calc(50% + 24px);right:var(--space-24);align-items:flex-end;transform:translateY(calc(16px - 50%))}.experience-detail-navigation button{min-width:44px;min-height:20px;color:var(--color-text-disabled);font:inherit;font-size:var(--text-body-md-size);letter-spacing:inherit;text-align:right;cursor:pointer;transition:color var(--motion-duration-fast) var(--motion-ease-standard), transform var(--motion-duration-fast) var(--motion-ease-standard);background:0 0;border:0;padding:0;line-height:normal}.experience-detail-navigation button.is-active{color:var(--color-text-primary)}.experience-detail-navigation button:active{transform:scale(.97)}.experience-detail-navigation button:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.experience-detail[data-entered=true] .experience-detail-meta,.experience-detail[data-entered=true] .experience-detail-navigation{opacity:1;transform:translateY(-50%)}.experience-detail-gallery{z-index:1;gap:var(--space-4);flex-direction:column;width:min(882px,100% - 558px);margin:0 auto;padding:120px 0 64px;display:flex;position:relative}.experience-detail-panel{content-visibility:auto;border-radius:var(--radius-md);background:var(--color-bg-hover);opacity:0;width:100%;height:480px;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter) .12s, transform var(--motion-duration-slow) var(--motion-ease-enter) .12s;backface-visibility:hidden;flex:0 0 480px;scroll-margin-block:120px;position:relative;overflow:hidden;transform:translateY(16px)scale(.985)}.experience-detail[data-entered=true] .experience-detail-panel{opacity:1;transform:translate(0,0)scale(1)}.experience-detail-image-layout,.experience-detail-reserved-slot{position:absolute;inset:0}.experience-detail-interactive-loading{background:linear-gradient(100deg, transparent 36%, #ffffffb8 50%, transparent 64%) 0 0 / 220% 100%, var(--color-bg-hover);animation:1.1s ease-in-out infinite experience-interactive-loading;position:absolute;inset:0}.experience-detail-notes{top:50%;left:var(--space-6);gap:var(--space-1);color:var(--color-text-primary);font-family:"PingFang SC", var(--font-family-sans);font-size:var(--text-body-md-size);letter-spacing:var(--letter-spacing-tight);flex-direction:column;line-height:normal;display:flex;position:absolute;transform:translateY(-50%)}.experience-detail-notes p,.experience-detail-gesture span{margin:0}.experience-detail-device{border:2px solid var(--color-border-strong);border-radius:var(--radius-2xl);width:128px;height:278px;margin:0;position:absolute;top:32px;left:50%;overflow:hidden;transform:translate(-50%)}.experience-detail-device img{object-fit:cover;width:100%;height:100%;display:block}.experience-detail-gesture{color:var(--color-text-primary);font-family:"PingFang SC", var(--font-family-sans);letter-spacing:-.03em;white-space:nowrap;font-size:10px;line-height:normal;position:absolute}.experience-detail-gesture img{max-width:none;display:block;position:absolute}.experience-detail-gesture-swipe{top:336px;left:calc(50% - 216px)}.experience-detail-gesture-swipe img{width:29px;height:61px;top:-8px;left:45px;transform:rotate(-105deg)}.experience-detail-gesture-resize{top:391px;left:calc(50% + 173px)}.experience-detail-gesture-resize img{width:36px;height:63px;top:-8px;right:calc(100% + 35px);transform:rotate(30deg)}.experience-detail-transition-card{z-index:4;border-radius:var(--radius-md);background:var(--color-bg-hover);pointer-events:none;transform-origin:0 0;backface-visibility:hidden;will-change:transform;position:fixed;overflow:hidden}.experience-detail-transition-card[hidden]{display:none}.experience-detail-transition-content{transform-origin:50%;backface-visibility:hidden;will-change:opacity, transform;width:100%;height:100%;display:block}.experience-detail-transition-media{background:var(--color-bg-subtle);justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.experience-detail-transition-copy{z-index:5;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);border-radius:0 0 var(--radius-card) var(--radius-card);color:var(--color-text-secondary);background:var(--color-bg-hover);box-shadow:var(--shadow-experience-card-rest);clip-path:inset(0 -4px -4px);font-family:var(--font-family-sans);font-size:var(--text-body-xs-size);pointer-events:none;transform-origin:50% 0;will-change:opacity, transform;flex-direction:column;line-height:1.45;display:flex;position:fixed;overflow:hidden}.experience-detail-transition-copy[hidden]{display:none}.experience-detail[data-phase=exiting] .experience-detail-backdrop{opacity:0;transition-duration:.34s;transition-delay:0s}.experience-detail[data-phase=exiting] .experience-detail-meta,.experience-detail[data-phase=exiting] .experience-detail-navigation,.experience-detail[data-phase=exiting] .experience-detail-panel{opacity:0;transition-duration:.18s;transition-delay:0s;transition-timing-function:var(--motion-ease-exit);transform:translateY(-12px)}.experience-detail-close{z-index:5;min-width:104px;min-height:44px;padding:0 var(--space-4);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);color:var(--color-text-primary);background:var(--color-bg-surface);box-shadow:var(--shadow-xs);font-family:var(--font-family-sans);font-size:var(--text-body-sm-size);cursor:pointer;opacity:0;touch-action:manipulation;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter) .16s, background-color var(--motion-duration-fast) var(--motion-ease-standard), border-color var(--motion-duration-fast) var(--motion-ease-standard), transform var(--motion-duration-slow) var(--motion-ease-enter) .16s;justify-content:center;align-items:center;display:inline-flex;position:fixed;top:10px;left:50%;transform:translate(-50%,-8px)}.experience-detail[data-entered=true] .experience-detail-close{opacity:1;transform:translate(-50%)}@media (hover:hover) and (pointer:fine){.experience-detail-close:hover{border-color:var(--color-border-default);background:var(--color-bg-hover)}}.experience-detail-close:active{background:var(--color-bg-pressed);transform:translate(-50%)scale(.97)}.experience-detail-close:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.experience-detail[data-phase=exiting] .experience-detail-close{opacity:0;pointer-events:none;transition-duration:.18s;transition-delay:0s;transition-timing-function:var(--motion-ease-exit);transform:translate(-50%,-8px)}.projects-section{--project-card-width:clamp(320px, calc((100vw - 216px) / 2), 612px);--project-card-step:clamp(344px, calc((100vw - 168px) / 2), 636px);--project-drag-offset:0px;width:100%;height:100svh;min-height:100svh;position:relative;overflow:hidden}.projects-content{align-items:center;gap:var(--space-6);width:100%;padding-inline:var(--space-24);pointer-events:none;transform:translate3d(var(--project-drag-offset), 0, 0);transition:transform var(--motion-duration-slow) var(--motion-ease-in-out);will-change:transform;z-index:3;grid-template-columns:repeat(8,minmax(0,1fr));display:grid;position:absolute;inset:0}.projects-content[data-active-index="1"]{transform:translate3d(calc(0px - var(--project-card-step) + var(--project-drag-offset)), 0, 0)}.projects-content.is-dragging,.projects-content.is-settling{transition:none!important}.projects-intro{gap:var(--space-6);padding-right:var(--space-4);isolation:isolate;z-index:3;flex-direction:column;grid-column:1/span 2;display:flex;position:relative}.projects-intro h2,.projects-intro p,.project-card-copy h3,.project-card-copy p{margin:0}.projects-intro h2{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-heading-md-size);font-weight:var(--text-heading-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-heading-line-height);white-space:nowrap}.projects-intro p{color:var(--color-text-secondary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-body-line-height)}.projects-showcase{z-index:1;min-width:0;position:absolute;inset:0}.projects-carousel{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.projects-carousel.is-dragging{cursor:grabbing}.project-card{--project-card-tilt-x:0deg;--project-card-tilt-y:0deg;--project-card-lift:0px;--project-card-scale:1;width:var(--project-card-width);opacity:.3;height:316px;font:inherit;text-align:left;transform:translate3d(calc(-50% + var(--project-drag-offset)), calc(-50% + var(--project-card-lift)), 0);transform-origin:50%;transform-box:border-box;transition:transform var(--motion-duration-slow) var(--motion-ease-in-out), opacity var(--motion-duration-slow) var(--motion-ease-standard);will-change:transform, opacity;z-index:0;background:0 0;border:0;outline:none;padding:0;position:absolute;top:50%;left:50%}.project-card:focus{--project-card-lift:0px;--project-card-scale:1;outline:none}.project-card:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:4px;--project-card-lift:0px;--project-card-scale:1}.project-card[data-position="-1"]{transform:translate3d(calc(-50% - var(--project-card-step) + var(--project-drag-offset)), calc(-50% + var(--project-card-lift)), 0)}.project-card[data-position="1"]{transform:translate3d(calc(-50% + var(--project-card-step) + var(--project-drag-offset)), calc(-50% + var(--project-card-lift)), 0)}.project-card.is-active{opacity:1;cursor:pointer;z-index:1}.projects-carousel.is-dragging,.projects-carousel.is-dragging *{cursor:grabbing!important}.projects-carousel.is-dragging .project-card,.projects-carousel.is-dragging .project-card.is-active,.projects-carousel.is-dragging .project-card:active,.projects-carousel.is-dragging .project-card.is-active:active,.projects-carousel.is-dragging .project-card-surface,.projects-carousel.is-settling .project-card,.projects-carousel.is-settling .project-card.is-active,.projects-carousel.is-settling .project-card:active,.projects-carousel.is-settling .project-card.is-active:active,.projects-carousel.is-settling .project-card-surface{--project-card-tilt-x:0deg!important;--project-card-tilt-y:0deg!important;--project-card-lift:0px!important;--project-card-scale:1!important;pointer-events:none!important;transition:none!important}.projects-carousel.is-dragging .project-card,.projects-carousel.is-dragging .project-card.is-active,.projects-carousel.is-dragging .project-card:active,.projects-carousel.is-dragging .project-card.is-active:active,.projects-carousel.is-dragging .project-card-surface{cursor:grabbing!important}.project-card-surface{border-radius:var(--radius-md);background:var(--color-bg-hover);width:100%;height:100%;box-shadow:var(--shadow-experience-card-rest);transform:perspective(1100px) scale(var(--project-card-scale)) rotateX(var(--project-card-tilt-x)) rotateY(var(--project-card-tilt-y));transform-origin:50%;transform-box:border-box;transform-style:preserve-3d;transition:transform var(--motion-duration-fast) var(--motion-ease-card), box-shadow var(--motion-duration-slow) var(--motion-ease-card);will-change:transform;flex-direction:column;display:flex;overflow:hidden}.project-card-media{flex:auto;min-height:0;position:relative;overflow:hidden}.project-card-media img{object-fit:cover;pointer-events:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.project-card-body{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:10px var(--space-4);flex:0 0 52px;display:flex}.project-card-copy{min-width:0;color:var(--color-text-primary);font-family:var(--font-family-sans);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight)}.project-card-copy h3{font-size:var(--text-body-md-size);font-weight:inherit;text-overflow:ellipsis;white-space:nowrap;line-height:1.15;overflow:hidden}.project-card-copy p{margin-top:var(--space-1);font-size:var(--text-body-sm-size);text-overflow:ellipsis;white-space:nowrap;line-height:1.1;overflow:hidden}.project-card-arrow{flex:none;width:16px;height:16px;display:block}.projects-controls{gap:var(--space-6);z-index:2;display:flex;position:absolute;top:calc(50% + 230px);left:50%;transform:translate(-50%)}.projects-controls button{border-radius:var(--radius-md);width:48px;height:48px;color:var(--color-text-primary);font:inherit;touch-action:manipulation;transition:color var(--motion-duration-fast) var(--motion-ease-standard), background-color var(--motion-duration-fast) var(--motion-ease-standard), transform var(--motion-duration-fast) var(--motion-ease-press);background:0 0;border:0;place-items:center;padding:0;display:grid}.projects-controls button img{width:24px;height:24px;display:block}.projects-controls button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.projects-controls button:active:not(:disabled){transform:scale(.96)}.projects-controls button:disabled{color:var(--color-text-disabled)}.projects-controls button:disabled img{opacity:.25}@media (hover:hover) and (pointer:fine){.project-card.is-active:hover{--project-card-lift:0px;--project-card-scale:1.012}.project-card.is-active:hover .project-card-surface{box-shadow:var(--shadow-experience-card-hover)}.projects-controls button:hover:not(:disabled){background:var(--color-bg-hover)}}.project-card:active,.project-card.is-active:active,.project-card.is-active:hover:active{--project-card-lift:0px;--project-card-scale:.997}.project-card:active .project-card-surface,.project-card.is-active:active .project-card-surface,.project-card.is-active:hover:active .project-card-surface{transition:transform var(--motion-duration-fast) var(--motion-ease-press), box-shadow var(--motion-duration-slow) var(--motion-ease-card)}.project-detail{z-index:calc(var(--z-modal) + 1);overscroll-behavior:contain;scroll-behavior:smooth;isolation:isolate;background:0 0;position:fixed;inset:0;overflow:hidden auto}.project-detail-backdrop{z-index:0;background:var(--color-bg-canvas);cursor:inherit;opacity:1;transition:opacity .38s var(--motion-ease-card);border:0;padding:0;position:fixed;inset:0}.project-detail[data-phase=exiting] .project-detail-backdrop{opacity:0}.project-detail-rail{z-index:0;opacity:0;pointer-events:none;height:64px;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter) .18s, transform var(--motion-duration-slow) var(--motion-ease-enter) .18s;position:fixed;inset:0 0 auto;overflow:hidden;transform:translateY(-8px)}.project-detail-rail img{object-fit:cover;width:100%;height:64px;display:block}.project-detail-rail:after{background:linear-gradient(to bottom, var(--color-canvas-alpha-0), var(--color-canvas-alpha-82) 32px, var(--color-canvas-alpha-100) 64px);content:"";position:absolute;inset:0}.project-detail-header{z-index:3;height:64px;padding:var(--space-4) var(--space-24);color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);letter-spacing:var(--letter-spacing-tight);opacity:0;pointer-events:none;transition:opacity var(--motion-duration-slow) var(--motion-ease-enter) .22s, transform var(--motion-duration-slow) var(--motion-ease-enter) .22s;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0 0 auto;transform:translateY(-8px)}.project-detail[data-entered=true] .project-detail-rail,.project-detail[data-entered=true] .project-detail-header{opacity:1;transform:translateY(0)}.project-detail-close{min-width:104px;min-height:44px;padding:0 var(--space-5);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);color:var(--color-text-primary);background:var(--color-bg-surface);box-shadow:var(--shadow-xs);font:inherit;letter-spacing:inherit;cursor:pointer;pointer-events:auto;touch-action:manipulation;transition:background-color var(--motion-duration-fast) var(--motion-ease-standard), border-color var(--motion-duration-fast) var(--motion-ease-standard), transform var(--motion-duration-fast) var(--motion-ease-press);justify-content:center;align-items:center;display:inline-flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}@media (hover:hover) and (pointer:fine){.project-detail-close:hover{border-color:var(--color-border-default);background:var(--color-bg-hover)}}.project-detail-close:active{background:var(--color-bg-pressed);transform:translate(-50%)scale(.97)}.project-detail-close:focus-visible,.project-detail-progress button:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.project-detail-sidebar{inset:98px auto auto var(--space-24);z-index:2;pointer-events:none;width:294px;position:fixed}.project-detail-title{gap:var(--space-1);padding-right:var(--space-12);opacity:0;transition:opacity var(--motion-duration-slower) var(--motion-ease-enter), transform var(--motion-duration-slower) var(--motion-ease-enter);will-change:opacity, transform;flex-direction:column;display:flex;transform:translateY(24px)}.project-detail-title h1,.project-detail-title p{color:var(--color-text-primary);font-family:var(--font-family-sans);font-weight:var(--text-body-weight);letter-spacing:var(--letter-spacing-tight);margin:0}.project-detail-title h1{font-size:var(--text-body-md-size);line-height:1.15}.project-detail-title p{font-size:var(--text-body-sm-size);overflow-wrap:anywhere;text-wrap:pretty;max-width:100%;line-height:1.2}.project-detail-progress{bottom:72px;left:var(--space-24);gap:var(--space-3);opacity:0;pointer-events:auto;width:64px;transition:opacity var(--motion-duration-slower) var(--motion-ease-enter) 80ms, transform var(--motion-duration-slower) var(--motion-ease-enter) 80ms;will-change:opacity, transform;flex-direction:column;display:flex;position:fixed;transform:translateY(24px)}.project-detail[data-entered=true] .project-detail-title,.project-detail[data-entered=true] .project-detail-progress{opacity:1;transform:translateY(0)}.project-detail[data-phase=exiting] .project-detail-rail,.project-detail[data-phase=exiting] .project-detail-header,.project-detail[data-phase=exiting] .project-detail-title,.project-detail[data-phase=exiting] .project-detail-progress{opacity:0;pointer-events:none;transition-duration:.18s;transition-delay:0s;transition-timing-function:var(--motion-ease-exit);transform:translateY(-12px)}.project-detail-progress button{align-items:flex-start;gap:var(--space-1);width:64px;min-height:2px;color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);letter-spacing:var(--letter-spacing-tight);text-align:left;touch-action:manipulation;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.project-detail-progress button i{background:var(--color-border-default);transform-origin:0;width:64px;height:2px;transition:transform var(--motion-duration-normal) var(--motion-ease-standard), background-color var(--motion-duration-normal) var(--motion-ease-standard);display:block;transform:scaleX(.5625)}.project-detail-progress button.is-active i{background:var(--color-text-primary);transform:scaleX(1)}.project-detail-gallery{z-index:1;gap:var(--space-3);flex-direction:column;width:min(930px,75% - 150px);margin-left:calc(25% + 54px);padding:98px 0;display:flex;position:relative}.project-detail-panel{aspect-ratio:1056/595;content-visibility:auto;border-radius:var(--radius-md);background:var(--color-bg-pressed);width:100%;box-shadow:var(--shadow-experience-card-rest);opacity:0;backface-visibility:hidden;scroll-margin-top:98px;position:relative;overflow:hidden;transform:translateY(-48px)scale(.8)}.project-detail-panel.is-transitioning{will-change:opacity, transform}.project-detail-panel:first-child{transform:translate(0,0)scale(1)}.project-detail-panel.is-visible{opacity:1;transform:translate(0,0)scale(1)}.project-detail-panel-image{object-fit:cover;width:100%;height:100%;display:block}.project-detail-hero-image{opacity:0}.project-detail-transition-frame{z-index:4;border-radius:var(--radius-md);background:var(--color-bg-pressed);box-shadow:var(--shadow-experience-card-rest);pointer-events:none;transform-origin:0 0;backface-visibility:hidden;will-change:transform;display:block;position:fixed;overflow:hidden}.project-detail-transition-image{object-fit:cover;transform-origin:50%;backface-visibility:hidden;will-change:transform;width:100%;height:100%;display:block}.project-detail-transition-copy{z-index:5;justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:10px var(--space-4);border-radius:0 0 var(--radius-md) var(--radius-md);color:var(--color-text-primary);background:var(--color-bg-hover);box-shadow:var(--shadow-experience-card-rest);clip-path:inset(0 -4px -4px);font-family:var(--font-family-sans);letter-spacing:var(--letter-spacing-tight);pointer-events:none;transform-origin:50% 0;opacity:0;will-change:opacity, transform;display:flex;position:fixed;overflow:hidden}.contact-section{height:100svh;min-height:100svh;position:relative;overflow:hidden}.contact-content{align-items:center;gap:var(--space-6);padding-inline:var(--space-24);grid-template-columns:repeat(8,minmax(0,1fr));display:grid;position:absolute;inset:0}.skill-reveal-overlay,.skill-icon-burst{visibility:hidden;pointer-events:none;position:fixed;inset:0}.skill-reveal-overlay{z-index:201;opacity:0;background:#ffffffd9;transition:opacity .24s,visibility 0s linear .24s}.skill-icon-burst{z-index:202;transition:visibility 0s linear .36s}.contact-section[data-skill-open] .skill-reveal-overlay,.contact-section[data-skill-open] .skill-icon-burst{visibility:visible;transition:visibility linear}.contact-section[data-skill-open] .skill-reveal-overlay{opacity:1;transition:opacity .36s var(--motion-ease-enter), visibility 0s linear 0s}.skill-icon-position{top:var(--skill-anchor-y);left:var(--skill-anchor-x);width:40px;height:40px;display:block;position:absolute;translate:-50% -50%}.skill-icon-motion{opacity:0;transform-origin:50%;will-change:opacity, transform;width:40px;height:40px;transition:opacity .2s ease-out,transform .36s;display:block;transform:translate(0,0)scale(.35)}.contact-section[data-skill-open] .skill-icon-motion{opacity:1;transform:translate3d(var(--skill-x), var(--skill-y), 0) scale(1);transition:opacity .38s cubic-bezier(.25, .1, .25, 1) var(--skill-delay), transform .44s cubic-bezier(.34, 1.45, .64, 1) var(--skill-delay)}.contact-section[data-skill-input=keyboard] .skill-reveal-overlay,.contact-section[data-skill-input=keyboard] .skill-icon-burst,.contact-section[data-skill-input=keyboard] .skill-icon-motion{transition:none}.skill-icon-motion img{filter:drop-shadow(0 6px 12px #00000029);object-fit:contain;width:40px;height:40px;transform:rotate(var(--skill-rotation));background:0 0;border:0;outline:none;display:block}.contact-name,.contact-summary h3,.contact-detail h3,.contact-detail a,.contact-detail span{margin:0}.contact-name{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-heading-md-size);font-weight:var(--text-heading-weight);letter-spacing:var(--letter-spacing-tight);line-height:var(--text-body-line-height);white-space:nowrap;grid-column:1}.contact-avatar{border-radius:var(--radius-full);object-fit:cover;grid-column:2/span 3;justify-self:center;width:72px;height:72px;display:block}.contact-summary{color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);letter-spacing:var(--letter-spacing-tight);text-align:right;align-self:center;line-height:normal;position:relative}.contact-summary h3,.contact-detail h3{font-size:inherit;font-weight:var(--font-weight-medium)}.contact-trigger{color:inherit;font:inherit;letter-spacing:inherit;text-underline-offset:2px;touch-action:manipulation;background:0 0;border:0;padding:0;text-decoration:underline;text-decoration-thickness:from-font;position:relative}.contact-trigger:before{content:"";width:max(100%,44px);height:44px;position:absolute;top:50%;left:50%;translate:-50% -50%}.contact-trigger:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}.contact-skill{z-index:203;grid-column:5}.contact-award{grid-column:6}.contact-award h3{text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:from-font}.contact-details{gap:var(--space-4);color:var(--color-text-primary);font-family:var(--font-family-sans);font-size:var(--text-body-md-size);letter-spacing:var(--letter-spacing-tight);text-align:right;flex-direction:column;grid-column:8;align-self:center;font-style:normal;line-height:normal;display:flex;position:relative;top:55px}.contact-detail{flex-direction:column;align-items:flex-end;min-width:158px;display:flex}.contact-detail a,.contact-detail span{color:var(--color-text-secondary);font-family:"Source Han Sans SC", "Noto Sans CJK SC", var(--font-family-sans);font-weight:var(--font-weight-regular);letter-spacing:var(--letter-spacing-normal);text-underline-offset:2px;white-space:nowrap;text-decoration:underline;text-decoration-thickness:from-font}.contact-detail a{transition:color var(--motion-duration-interaction) var(--motion-ease-standard)}.contact-detail a:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--color-focus-ring);outline-offset:var(--space-1)}@media (hover:hover) and (pointer:fine){.contact-detail a:hover{color:var(--color-text-primary)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=701px) and (width<=1100px){.experience-detail-gallery{width:min(640px,100% - 320px)}.experience-detail-meta{left:var(--space-6)}.experience-detail-navigation{right:var(--space-6)}}@media (width<=700px){.work-section{opacity:1;pointer-events:auto;transform:none}.home-header{padding:var(--space-4);font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug)}.home-header nav{gap:var(--space-4)}.home-screen{scroll-snap-type:y proximity}.portfolio-section{overflow:hidden}.about-chapter{height:100svh}.about-section,.work-section{opacity:1;pointer-events:auto;will-change:auto;height:auto;position:relative;inset:auto;transform:none}.about-section{height:100svh}.about-copy{width:calc(100% - 48px);top:29%}.about-copy h2{font-size:var(--text-heading-sm-size);letter-spacing:var(--letter-spacing-snug)}.about-meta{font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug);top:66%}.work-section{height:auto;min-height:100svh;position:relative;overflow:visible}.work-chapter{scroll-snap-align:start;scroll-snap-stop:normal;height:auto}.work-content{width:100%;height:auto;min-height:0;padding:104px 16px 64px;position:relative;top:auto;left:auto;transform:none}.work-intro{gap:var(--space-3);flex-direction:column;min-height:0;padding:0;display:flex}.work-intro h2{font-size:var(--text-heading-sm-size);letter-spacing:var(--letter-spacing-snug);text-align:left;flex-basis:auto}.work-intro p{font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug)}.experience-grid{gap:var(--space-4);grid-template-columns:minmax(0,1fr);height:auto}.experience-card{min-height:374px}.projects-chapter{scroll-snap-stop:normal;height:auto}.projects-section{height:auto;min-height:0;overflow:visible}.projects-content,.projects-content[data-active-index]{align-items:stretch;gap:var(--space-6);width:100%;padding:72px var(--space-4) var(--space-6);flex-direction:column;transition:none;display:flex;position:relative;top:auto;left:auto;transform:none}.projects-intro{gap:var(--space-3);padding:0}.projects-intro h2{font-size:var(--text-heading-sm-size);letter-spacing:var(--letter-spacing-snug)}.projects-intro p{max-width:42ch;font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug)}.projects-showcase,.projects-carousel{height:auto}.projects-showcase{width:auto;margin:0 var(--space-4) 64px;position:relative;inset:auto}.projects-carousel{gap:var(--space-4);cursor:default;touch-action:pan-y;flex-direction:column;display:flex;position:relative;inset:auto}.project-card,.project-card.is-active,.project-card[data-position]{aspect-ratio:612/316;opacity:1;width:100%;height:auto;position:relative;top:auto;left:auto;transform:none}.project-card-body{padding:10px var(--space-3);flex-basis:58px}.project-card-copy h3{font-size:var(--text-body-sm-size)}.project-card-copy p{font-size:var(--text-body-xs-size)}.projects-controls{display:none}.contact-section{height:auto;min-height:100svh}.contact-content{align-content:center;align-items:center;gap:var(--space-8) var(--space-4);min-height:100svh;padding:96px var(--space-4) 64px;grid-template-columns:minmax(0,1fr) auto;position:relative;inset:auto}.contact-name{font-size:var(--text-heading-sm-size);letter-spacing:var(--letter-spacing-snug);grid-column:1}.contact-avatar{grid-area:1/2;width:64px;height:64px}.contact-summary{font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug);text-align:left}.contact-skill{grid-column:1}.contact-award{text-align:right;grid-column:2;justify-self:end}.contact-details{gap:var(--space-5);font-size:var(--text-body-sm-size);letter-spacing:var(--letter-spacing-snug);text-align:left;grid-column:1/-1;align-self:auto;position:static;top:auto}.contact-detail{align-items:flex-start;min-width:0}.project-detail-header{padding-inline:var(--space-4);font-size:var(--text-body-sm-size)}.project-detail-close{min-width:96px;padding-inline:var(--space-4)}.project-detail-sidebar{width:100%;padding:96px var(--space-4) var(--space-6);position:relative;inset:auto}.project-detail-title{max-width:42ch;padding-right:0}.project-detail-title p{white-space:normal}.project-detail-progress{width:100%;margin-top:var(--space-6);gap:var(--space-3);flex-direction:row;position:static}.project-detail-progress button{width:auto;min-width:44px}.project-detail-progress button i,.project-detail-progress button.is-active i{width:44px}.project-detail-gallery{width:auto;padding:0 var(--space-4) 64px;margin:0}.project-detail-panel{scroll-margin-top:80px}.experience-detail-meta,.experience-detail-navigation{right:var(--space-4);left:var(--space-4);width:auto;transform:translateY(12px)}.experience-detail-meta{top:76px}.experience-detail-navigation{align-items:center;gap:var(--space-4);scrollbar-width:none;flex-direction:row;top:124px;overflow-x:auto}.experience-detail-navigation::-webkit-scrollbar{display:none}.experience-detail-navigation button{min-height:44px;font-size:var(--text-body-sm-size);text-align:left;flex:none}.experience-detail[data-entered=true] .experience-detail-meta,.experience-detail[data-entered=true] .experience-detail-navigation{transform:none}.experience-detail-gallery{width:auto;padding:180px var(--space-4) 48px;margin:0}.experience-detail-panel{flex-basis:560px;height:560px;scroll-margin-block:180px 48px}.experience-detail-notes{top:var(--space-6);right:var(--space-4);left:var(--space-4);font-size:var(--text-body-sm-size);transform:none}.experience-detail-device{width:142px;height:307px;top:118px}.experience-detail-gesture-swipe{top:458px;left:var(--space-4)}.experience-detail-gesture-swipe img{left:52px}.experience-detail-gesture-resize{top:510px;right:var(--space-4);left:auto}.experience-detail-gesture-resize img{right:calc(100% + 28px)}}@media (prefers-reduced-motion:reduce){.home-screen{scroll-behavior:auto}.home-about-scroll-layer{animation:none}.home-about-scroll-layer .home-about-content{opacity:1;transform:none}.experience-card{--experience-card-lift:0px;--experience-card-scale:1;transition:none;transform:translateY(0)}.experience-card-surface{box-shadow:var(--shadow-experience-card-rest);transition:none;transform:perspective(1100px)scale(1)rotateX(0)rotateY(0)}.experience-aura-layer,.home-sticker-mask,.home-header a,.home-header a:after,.language-toggle,.home-sticker-rail{transition:none}.experience-card:active{--experience-card-lift:0px;--experience-card-scale:1}.project-card,.project-card.is-active,.project-card:active,.project-card.is-active:active{--project-card-lift:0px;--project-card-scale:1;opacity:1;transition:none}.projects-content{transition:none}.project-card-surface{box-shadow:var(--shadow-experience-card-rest);transition:none;transform:perspective(1100px)scale(1)rotateX(0)rotateY(0)}.projects-controls button,.skill-reveal-overlay,.skill-icon-burst,.skill-icon-motion{transition:none}.project-detail,.experience-detail{scroll-behavior:auto}.project-detail-backdrop{transition:none}.project-detail-title,.project-detail-progress,.project-detail-panel,.project-detail-progress button i{opacity:1;transition:none;transform:none}.experience-detail-backdrop,.experience-detail-meta,.experience-detail-navigation,.experience-detail-panel,.experience-detail-navigation button{transition:none}.experience-detail-meta,.experience-detail-navigation,.experience-detail-panel,.experience-detail[data-entered=true] .experience-detail-meta,.experience-detail[data-entered=true] .experience-detail-navigation,.experience-detail[data-entered=true] .experience-detail-panel{opacity:1;transform:none}}@keyframes experience-interactive-loading{0%{background-position:100% 0,0 0}to{background-position:-100% 0,0 0}}@keyframes home-content-enter{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes loading-sticker-exit{0%{opacity:1;translate:0}to{opacity:0;translate:0 -24px}}@keyframes loading-sticker-enter{0%{opacity:0;translate:0 -24px}to{opacity:1;translate:0}}
