.icon[data-v-e9382c31]{fill:currentColor;height:1em;overflow:hidden;vertical-align:-.15em;width:1em}.font-icon[data-v-e9382c31]{position:relative}.skill-tag[data-v-62110a40]{--skill-pad-y:.62rem;--skill-pad-x:1.05rem;--skill-mark-w:3px;align-items:center;box-sizing:border-box;color:var(--text-color);cursor:pointer;display:inline-flex;font:inherit;font-size:var(--text-sm);font-weight:700;gap:.7rem;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin:0;min-height:var(--touch-target-min);padding:var(--skill-pad-y) var(--skill-pad-x) var(--skill-pad-y) calc(var(--skill-pad-x)*.72);text-align:left;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:color-mix(in oklch,var(--card-bg) 92%,var(--bg-color));border:1.5px solid var(--border-color);border-radius:10px;box-shadow:0 1px color-mix(in oklch,var(--text-color) 5%,transparent);transition:transform var(--duration-fast) var(--ease-out-quint),border-color var(--duration-normal) var(--ease-out-quint),background-color var(--duration-normal) var(--ease-out-quint),box-shadow var(--duration-normal) var(--ease-out-quint),color var(--duration-normal) var(--ease-out-quint)}.skill-tag[data-v-62110a40]:hover{border-color:color-mix(in oklch,var(--text-color) 28%,var(--border-color));box-shadow:var(--shadow-elevated-sm);transform:translate3d(0,-2px,0)}.skill-tag[data-v-62110a40]:active{transform:translateZ(0);transition-duration:var(--duration-instant)}.skill-tag[data-v-62110a40]:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}.skill-tag.is-active[data-v-62110a40]{background:var(--gradient-primary);border-color:var(--accent-deep);box-shadow:var(--shadow-elevated-md);color:var(--text-on-accent)}.skill-tag.is-active .skill-tag__mark[data-v-62110a40]{background:color-mix(in oklch,var(--text-on-accent) 88%,transparent);height:1.05em}.dark-theme{background:color-mix(in oklch,var(--card-bg) 94%,#000);box-shadow:0 1px color-mix(in oklch,#fff 6%,transparent)}.dark-theme{border-color:color-mix(in oklch,#fff 22%,var(--border-color))}.dark-theme{border-color:color-mix(in oklch,var(--accent-bright) 65%,transparent);color:var(--text-emphasis-ink)}.dark-theme{background:color-mix(in oklch,currentColor 55%,transparent)}.skill-tag__mark[data-v-62110a40]{background:color-mix(in oklch,var(--text-color) 42%,var(--border-color));border-radius:2px;flex-shrink:0;height:.72em;transition:height var(--duration-normal) var(--ease-out-expo),background-color var(--duration-normal) var(--ease-out-quint);width:var(--skill-mark-w)}.skill-tag__text[data-v-62110a40]{position:relative;top:.02em}@media(prefers-reduced-motion:reduce){.skill-tag[data-v-62110a40]{transition:border-color var(--duration-normal) var(--ease-out-quint),background-color var(--duration-normal) var(--ease-out-quint),box-shadow var(--duration-normal) var(--ease-out-quint),color var(--duration-normal) var(--ease-out-quint)}.skill-tag[data-v-62110a40]:active,.skill-tag[data-v-62110a40]:hover{transform:none}.skill-tag .skill-tag__mark[data-v-62110a40]{transition:background-color var(--duration-normal) var(--ease-out-quint)}}.tech-tag[data-v-af2cf9ee]{align-items:center;background:linear-gradient(135deg,rgba(var(--accent-rgb),.09),rgba(var(--accent-rgb),.14));border-radius:var(--radius-sm);color:var(--accent-deep);display:inline-flex;font-size:var(--text-xs);font-weight:500;justify-content:center;line-height:var(--leading-tight);line-height:1.2;padding:.35rem .75rem;transition:all .2s ease;white-space:nowrap}.dark-theme .tech-tag[data-v-af2cf9ee]{background:linear-gradient(135deg,rgba(var(--accent-rgb),.14),rgba(var(--accent-rgb),.2));color:var(--tech-tag-muted)}@media(max-width:768px){.tech-tag[data-v-af2cf9ee]{font-size:var(--text-xs);padding:.3rem .6rem}}.tech-tag[data-v-af2cf9ee]:hover{background:linear-gradient(135deg,rgba(var(--accent-rgb),.2),rgba(var(--accent-rgb),.26));transform:translateY(-1px)}.dark-theme .tech-tag[data-v-af2cf9ee]:hover{background:linear-gradient(135deg,rgba(var(--accent-rgb),.26),rgba(var(--accent-rgb),.34))}.project-card-wrapper[data-v-31638205]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-card);box-shadow:var(--shadow-elevated-sm);display:flex;flex-direction:column;height:auto;overflow:hidden;position:relative;transition:transform var(--duration-moderate) var(--ease-out-quint),box-shadow var(--duration-moderate) var(--ease-out-quint),border-color var(--duration-normal) var(--ease-out-quint)}.project-card-wrapper.is-hovering[data-v-31638205]{border-color:color-mix(in oklch,var(--text-color) 22%,var(--border-color));box-shadow:var(--shadow-section);transform:translate3d(0,-6px,0)}.dark-theme{border-color:color-mix(in oklch,#fff 16%,var(--border-color))}.iframe-wrapper[data-v-31638205]{aspect-ratio:16/9;background:color-mix(in oklch,var(--bg-color) 55%,var(--card-bg));border-bottom:1px solid var(--border-subtle);flex:0 0 auto;position:relative;width:100%}.iframe-wrapper iframe[data-v-31638205]{border:none;display:block;height:100%;transition:transform var(--duration-moderate) var(--ease-out-quint);width:100%}.project-card-wrapper.is-hovering .iframe-wrapper iframe[data-v-31638205]{transform:scale(1.02)}.iframe-wrapper .iframe-loading[data-v-31638205]{align-items:center;background:color-mix(in oklch,var(--card-bg) 94%,var(--bg-color));color:var(--secondary-text);display:flex;flex-direction:column;font-size:var(--text-sm);gap:.5rem;inset:0;justify-content:center;position:absolute;z-index:5}.iframe-wrapper .loading-spinner[data-v-31638205]{animation:spin-31638205 .85s linear infinite;border:2px solid color-mix(in oklch,var(--text-color) 10%,transparent);border-radius:50%;border-top-color:color-mix(in oklch,var(--text-color) 45%,transparent);height:36px;width:36px}.project-card[data-v-31638205]{display:flex;flex:1 1 auto;flex-direction:column}.project-card[data-v-31638205]:not(.has-iframe){border-top:1px solid transparent}.card-content[data-v-31638205]{box-sizing:border-box;color:inherit;cursor:default;display:flex;flex:0 1 auto;flex-direction:column;padding:1.5rem 1.5rem 1.35rem;text-decoration:none}.card-content--link[data-v-31638205]{cursor:pointer}@media(max-width:768px){.card-content[data-v-31638205]{padding:1.25rem 1.2rem 1.15rem}}.card-content[data-v-31638205]:focus-visible{box-shadow:inset 0 0 0 2px var(--accent-bright);outline:none}.card-body[data-v-31638205]{flex:0 1 auto}.card-body h3[data-v-31638205]{border-left:3px solid var(--text-color);color:var(--text-color);font-family:var(--font-display);font-size:clamp(1.15rem,2.4vw,1.4rem);font-weight:800;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin:0 0 .75rem;padding-left:.85rem;transition:border-color var(--duration-normal) var(--ease-out-quint)}.project-card-wrapper.is-hovering .card-body h3[data-v-31638205]{border-left-color:var(--accent-deep)}@media(max-width:768px){.card-body h3[data-v-31638205]{font-size:var(--text-lg);margin-bottom:.65rem;padding-left:.7rem}}.card-body p[data-v-31638205]{color:var(--secondary-text);font-size:var(--text-sm);line-height:var(--leading-body);margin:0}.project-tech-list[data-v-31638205]{align-items:center;display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.25rem}@media(max-width:768px){.project-tech-list[data-v-31638205]{gap:.4rem;margin-top:1rem}}.card-cta[data-v-31638205]{align-items:center;border-top:1px solid var(--border-subtle);color:var(--secondary-text);display:flex;font-size:var(--text-xs);font-weight:700;justify-content:space-between;letter-spacing:var(--tracking-wide);margin-top:1.35rem;padding-top:1rem;text-transform:uppercase;transition:color var(--duration-normal) var(--ease-out-quint)}.project-card-wrapper.is-hovering .card-cta[data-v-31638205]{color:var(--text-color)}.card-cta__arrow[data-v-31638205]{font-size:1.15rem;line-height:1;transition:transform var(--duration-normal) var(--ease-out-expo)}.project-card-wrapper.is-hovering .card-cta__arrow[data-v-31638205]{transform:translate3d(4px,0,0)}@keyframes spin-31638205{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.project-card-wrapper[data-v-31638205]{transition:box-shadow var(--duration-normal) var(--ease-out-quint),border-color var(--duration-normal) var(--ease-out-quint)}.project-card-wrapper.is-hovering[data-v-31638205]{transform:none}.iframe-wrapper iframe[data-v-31638205]{transition:none}.project-card-wrapper.is-hovering .iframe-wrapper iframe[data-v-31638205]{transform:none}.card-cta__arrow[data-v-31638205]{transition:none}.loading-spinner[data-v-31638205]{animation:none;border-top-color:color-mix(in oklch,var(--text-color) 35%,transparent)}}.scroll-reveal[data-v-11ead77f]{opacity:0;transform:translate3d(0,var(--distance),0);transition:opacity var(--duration) var(--easing) var(--delay),transform var(--duration) var(--easing) var(--delay);will-change:opacity,transform}.scroll-reveal.is-visible[data-v-11ead77f]{opacity:1;transform:translateZ(0);will-change:auto}.scroll-reveal[style*="--origin: top"][data-v-11ead77f]{transform:translate3d(0,calc(var(--distance)*-1),0)}.scroll-reveal[style*="--origin: right"][data-v-11ead77f]{transform:translate3d(var(--distance),0,0)}.scroll-reveal[style*="--origin: bottom"][data-v-11ead77f]{transform:translate3d(0,var(--distance),0)}.scroll-reveal[style*="--origin: left"][data-v-11ead77f]{transform:translate3d(calc(var(--distance)*-1),0,0)}@media(prefers-reduced-motion:reduce){.scroll-reveal[data-v-11ead77f]{opacity:1!important;transform:none!important;transition:none!important;will-change:auto!important}}.theme-toggle[data-v-311c2cf0]{--switch-track-w:52px;--switch-track-h:32px;--knob-size:26px;--knob-inset:3px;background-color:var(--theme-switch-track);border:none;border-radius:calc(var(--switch-track-h)/2);box-sizing:border-box;cursor:pointer;flex-shrink:0;height:var(--switch-track-h);min-height:var(--switch-track-h);min-width:var(--switch-track-w);outline:none;padding:0;position:relative;transition:background-color var(--duration-normal,.26s) var(--ease-out-quint,cubic-bezier(.22,1,.36,1));width:var(--switch-track-w)}.theme-toggle[data-v-311c2cf0]:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}.theme-toggle.dark[data-v-311c2cf0]{background-color:var(--theme-switch-track-active)}.theme-toggle.dark .icon-wrapper[data-v-311c2cf0]{background-color:var(--theme-switch-knob-on);transform:translate(calc(var(--switch-track-w) - var(--knob-inset)*2 - var(--knob-size)))}.theme-toggle.dark .sun[data-v-311c2cf0]{opacity:0}.theme-toggle.dark .moon[data-v-311c2cf0]{opacity:1}.icon-wrapper[data-v-311c2cf0]{align-items:center;background-color:var(--theme-switch-knob);border-radius:50%;box-shadow:var(--theme-switch-knob-shadow);display:flex;height:var(--knob-size);justify-content:center;left:var(--knob-inset);position:absolute;top:var(--knob-inset);transition:transform var(--duration-normal,.26s) var(--ease-out-quint,cubic-bezier(.22,1,.36,1));width:var(--knob-size)}.sun-moon[data-v-311c2cf0]{height:16px;position:relative;width:16px}.sun[data-v-311c2cf0]{background-color:var(--theme-sun-core);opacity:1}.moon[data-v-311c2cf0],.sun[data-v-311c2cf0]{border-radius:50%;height:16px;left:0;position:absolute;top:0;transition:opacity var(--duration-normal,.26s) var(--ease-out-quint,cubic-bezier(.22,1,.36,1));width:16px}.moon[data-v-311c2cf0]{background-color:transparent;box-shadow:3px -3px 0 var(--theme-moon-ring);opacity:0}@media(prefers-reduced-motion:reduce){.icon-wrapper[data-v-311c2cf0],.moon[data-v-311c2cf0],.sun[data-v-311c2cf0],.theme-toggle[data-v-311c2cf0]{transition-duration:.01ms!important}}.particle-canvas[data-v-1a4d12ce]{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.is-hidden[data-v-1a4d12ce]{visibility:hidden}.theme-toggle-container{align-items:center;background:transparent;border:none;box-shadow:none;box-sizing:border-box;display:flex;justify-content:center;line-height:unset;min-height:44px;min-width:44px;padding:6px;pointer-events:auto}@keyframes chevron-pulse{0%{opacity:.25}50%{opacity:1}to{opacity:.25}}.container[data-v-07bc2d33]{background-color:var(--bg-color);color:var(--text-color);font-family:var(--font-sans);min-height:100vh;opacity:0;transform:translate3d(0,16px,0);transition:opacity var(--duration-entrance) var(--ease-out-expo),transform var(--duration-entrance) var(--ease-out-expo),background-color var(--duration-normal) var(--ease-out-quint),color var(--duration-normal) var(--ease-out-quint);width:100%}.container.is-loaded[data-v-07bc2d33]{opacity:1;transform:translateZ(0)}.content-container[data-v-07bc2d33]{margin:0 auto;max-width:var(--layout-max-width);padding:clamp(3.5rem,8vw,5.5rem) max(2rem,env(safe-area-inset-right,0px)) 2rem max(2rem,env(safe-area-inset-left,0px))}.content-container[data-v-07bc2d33],.header[data-v-07bc2d33]{position:relative;z-index:10}.header[data-v-07bc2d33]{align-items:center;background:var(--header-bg);color:var(--text-color);display:flex;flex-direction:column;height:100vh;justify-content:center;margin-bottom:0;min-height:100dvh;overflow:hidden;padding:max(1rem,env(safe-area-inset-top,0px) + 3.75rem) 2rem 2rem;text-align:center;transition:background var(--transition-speed) ease}.header[data-v-07bc2d33]:before{background:radial-gradient(ellipse 72% 58% at 55% 42%,color-mix(in oklch,var(--text-on-dark-pure) 22%,transparent) 0,color-mix(in oklch,var(--text-on-dark-pure) 7%,transparent) 48%,transparent 72%);content:"";height:min(78vh,680px);opacity:.9;pointer-events:none;position:absolute;right:-12%;top:-18%;width:min(58vw,560px);z-index:2}.header.section-container[data-v-07bc2d33]{margin-bottom:0}.dark-theme .header[data-v-07bc2d33]{box-shadow:var(--shadow-header-underline);color:var(--text-on-dark-pure)}.dark-theme .header[data-v-07bc2d33]:before{opacity:.38}.name-card[data-v-07bc2d33]{align-items:center;display:flex;flex-direction:column;gap:10px;max-width:640px;position:relative;z-index:5}.name-card h1[data-v-07bc2d33]{animation:heroRise-07bc2d33 .78s var(--ease-out-expo) .05s both;font-family:var(--font-display);font-size:var(--text-hero);font-weight:800;letter-spacing:var(--tracking-tighter);line-height:var(--leading-none);text-shadow:var(--text-shadow-hero-on-light-title)}.dark-theme .name-card h1[data-v-07bc2d33]{text-shadow:var(--text-shadow-hero-title-strong)}.name-card h2[data-v-07bc2d33]{animation:heroRise-07bc2d33 .78s var(--ease-out-expo) .16s both;color:var(--secondary-text);font-size:clamp(var(--text-md),3.2vw,1.45rem);font-weight:200;letter-spacing:var(--tracking-wider);line-height:var(--leading-snug);margin-bottom:1rem;text-shadow:var(--text-shadow-hero-on-light-sub)}.dark-theme .name-card h2[data-v-07bc2d33]{color:color-mix(in oklch,var(--text-on-dark-pure) 90%,transparent);text-shadow:var(--text-shadow-hero-sub-strong)}.name-card p[data-v-07bc2d33]{animation:heroRise-07bc2d33 .78s var(--ease-out-expo) .28s both;color:var(--hero-body-text-on-light);font-size:var(--text-md);line-height:var(--leading-relaxed);margin-bottom:2rem;margin-left:auto;margin-right:auto;max-width:var(--measure-tight);text-shadow:var(--text-shadow-hero-on-light-body)}.dark-theme .name-card p[data-v-07bc2d33]{color:var(--hero-body-text-strong);text-shadow:var(--text-shadow-hero-body-strong)}@media(min-width:900px){.name-card[data-v-07bc2d33]{align-items:center;margin-left:auto;margin-right:auto;max-width:min(92vw,42rem);padding-left:clamp(1rem,3vw,2rem);padding-right:clamp(1rem,3vw,2rem);width:-moz-fit-content;width:fit-content}.name-card[data-v-07bc2d33],.name-card h1[data-v-07bc2d33],.name-card h2[data-v-07bc2d33],.name-card p[data-v-07bc2d33]{text-align:center}.name-card p[data-v-07bc2d33]{margin-left:auto;margin-right:auto;max-width:min(var(--measure-tight),44ch)}.name-card .explore-button[data-v-07bc2d33]{align-self:center}}.clickable[data-v-07bc2d33],a[data-v-07bc2d33],button[data-v-07bc2d33]{cursor:pointer}.explore-button[data-v-07bc2d33]{align-items:center;animation:heroRise-07bc2d33 .78s var(--ease-out-expo) .4s both;background:var(--explore-button-bg);border:2px solid var(--cta-glass-border);border-radius:50px;box-shadow:var(--shadow-elevated-lg);box-sizing:border-box;color:var(--text-color);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--text-md);font-weight:700;justify-content:center;letter-spacing:var(--tracking-wide);margin-top:clamp(1.25rem,2.5vw,2rem);max-width:100%;min-height:var(--touch-target-min);padding:.95rem 1.85rem;text-decoration:none;text-transform:none;transition:transform var(--duration-fast) var(--ease-out-quint),box-shadow var(--duration-normal) var(--ease-out-quint),background-color var(--duration-normal) var(--ease-out-quint),border-color var(--duration-normal) var(--ease-out-quint),opacity var(--duration-moderate) var(--ease-out-expo);width:-moz-fit-content;width:fit-content}.explore-button[data-v-07bc2d33]:hover{background:var(--cta-glass-hover-bg);box-shadow:var(--shadow-elevated-lg),0 0 0 1px color-mix(in oklch,var(--highlight) 35%,transparent);transform:translate3d(0,-4px,0)}.explore-button[data-v-07bc2d33]:active{transform:translateZ(0) scale(.98);transition-duration:var(--duration-instant)}.dark-theme .explore-button[data-v-07bc2d33]{background:var(--cta-glass-bg-on-dark);border-color:var(--cta-glass-border-on-dark);box-shadow:var(--shadow-elevated-sm);color:var(--text-on-accent)}.dark-theme .explore-button[data-v-07bc2d33]:hover{background:var(--cta-glass-hover-on-dark);box-shadow:var(--shadow-elevated-md)}.scroll-down-indicator[data-v-07bc2d33]{bottom:max(1.25rem,env(safe-area-inset-bottom,0px) + .75rem);left:50%;position:absolute;transform:translate(-50%);z-index:20}.scroll-down-indicator .chevron[data-v-07bc2d33]{animation:chevron-pulse 1.4s ease-in-out infinite;height:8px;opacity:.3;position:relative;width:28px}.scroll-down-indicator .chevron[data-v-07bc2d33]:first-child{animation-delay:0s}.scroll-down-indicator .chevron[data-v-07bc2d33]:nth-child(2){animation-delay:.28s}.scroll-down-indicator .chevron[data-v-07bc2d33]:nth-child(3){animation-delay:.56s}.scroll-down-indicator .chevron[data-v-07bc2d33]:after,.scroll-down-indicator .chevron[data-v-07bc2d33]:before{background:var(--scroll-indicator-color);box-shadow:0 2px 5px var(--scroll-indicator-shadow);content:" ";height:100%;position:absolute;top:0;width:51%}.scroll-down-indicator .chevron[data-v-07bc2d33]:before{left:0;transform:skew(0,30deg)}.scroll-down-indicator .chevron[data-v-07bc2d33]:after{right:0;transform:skew(0,-30deg);width:50%}.section[data-v-07bc2d33]{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--shadow-section);padding:2rem;transition:transform var(--duration-moderate) var(--ease-out-quint),box-shadow var(--duration-moderate) var(--ease-out-quint),background-color var(--duration-normal) var(--ease-out-quint);z-index:10}@media(max-width:768px){.section[data-v-07bc2d33]{margin-bottom:3rem;padding:1.5rem}}.section[data-v-07bc2d33]:hover{box-shadow:0 15px 30px var(--shadow-hover);transform:translate3d(0,-5px,0)}.dark-theme .section[data-v-07bc2d33]{border-color:var(--border-section-on-dark);box-shadow:var(--shadow-elevated-sm)}.dark-theme .section[data-v-07bc2d33]:hover{box-shadow:var(--shadow-elevated-md)}.section-title[data-v-07bc2d33]{color:var(--text-color);display:inline-block;font-family:var(--font-display);font-size:var(--text-3xl);font-weight:800;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin-bottom:2rem;padding-bottom:.5rem;position:relative}.section-title[data-v-07bc2d33]:after{background:var(--gradient-primary);border-radius:3px;bottom:0;content:"";height:8px;left:0;position:absolute;transform:scaleX(.24);transform-origin:left;transition:transform var(--duration-moderate) var(--ease-out-quint);width:100%}.section:hover .section-title[data-v-07bc2d33]:after{transform:scaleX(1)}.dark-theme .section-title[data-v-07bc2d33]{text-shadow:var(--text-shadow-ui-soft)}.section-container[data-v-07bc2d33]{margin-bottom:clamp(5rem,11vw,10rem)}.section-container[data-v-07bc2d33]:last-child{margin-bottom:0}.skills-container[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:1rem}.projects-container[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:2rem;width:100%}.projects-container .projects-masonry-item[data-v-07bc2d33]{box-sizing:border-box;flex:1 1 calc(33.33333% - 1.33333rem);max-width:calc(33.33333% - 1.33333rem);min-width:0}.articles-container[data-v-07bc2d33]{align-items:start;display:grid;gap:1.5rem;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}@supports (grid-template-rows:masonry){.articles-container[data-v-07bc2d33]{grid-template-rows:masonry}}.articles-masonry-item[data-v-07bc2d33]{box-sizing:border-box;min-width:0}.articles-container.is-masonry-js[data-v-07bc2d33]{display:block;position:relative}.articles-masonry-item .article-item[data-v-07bc2d33]{display:block}.article-item[data-v-07bc2d33]{background-color:var(--card-bg);border:1px solid var(--border-subtle);border-radius:var(--radius-card);color:var(--text-color);cursor:pointer;padding:1.5rem;text-decoration:none;transition:transform var(--duration-normal) var(--ease-out-quint),box-shadow var(--duration-normal) var(--ease-out-quint),border-color var(--duration-fast) var(--ease-out-quint)}.article-item[data-v-07bc2d33]:hover{border-color:var(--article-item-border-hover);box-shadow:0 8px 20px var(--shadow-hover);transform:translate3d(0,-3px,0)}.dark-theme .article-item[data-v-07bc2d33]{border-color:var(--border-subtle)}.dark-theme .article-item[data-v-07bc2d33]:hover{border-color:var(--article-item-border-hover)}.article-item-title[data-v-07bc2d33]{color:var(--text-color);font-size:var(--text-xl);font-weight:600;line-height:var(--leading-snug);margin-bottom:.8rem}.article-item-description[data-v-07bc2d33]{color:var(--secondary-text);font-size:var(--text-sm);line-height:var(--leading-body);margin-bottom:1rem}.article-item-tags[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:.5rem}.article-tag[data-v-07bc2d33]{background:var(--gradient-primary);border-radius:20px;color:var(--text-on-accent);display:inline-block;font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-normal);opacity:.9;padding:.3rem .8rem}.dark-theme .article-tag[data-v-07bc2d33]{opacity:.8}.footer[data-v-07bc2d33]{background:var(--footer-bg);border:1px solid color-mix(in oklch,var(--accent) 12%,transparent);border-radius:var(--border-radius);box-shadow:var(--shadow-elevated-sm);color:var(--text-color);margin-top:-2rem;overflow:hidden;padding:3rem 3rem 6rem;position:relative;text-align:center;transition:background var(--transition-speed) ease,color var(--transition-speed) ease,border-color var(--transition-speed) ease,box-shadow var(--transition-speed) ease;z-index:10}@media(max-width:768px){.footer[data-v-07bc2d33]{border-radius:8px;margin-top:-1rem;padding:2rem max(1.5rem,env(safe-area-inset-right,0px)) max(5rem,env(safe-area-inset-bottom,0px) + 3.5rem) max(1.5rem,env(safe-area-inset-left,0px))}}.dark-theme .footer[data-v-07bc2d33]{border-color:color-mix(in oklch,#fff 8%,transparent);box-shadow:var(--shadow-footer-block);color:var(--text-on-accent)}.footer .section-title[data-v-07bc2d33]{color:var(--text-color)}.footer .section-title[data-v-07bc2d33]:after{background:var(--gradient-primary);height:6px}.dark-theme .footer .section-title[data-v-07bc2d33]{color:color-mix(in oklch,var(--text-on-accent) 98%,transparent)}.footer-copyright[data-v-07bc2d33]{color:var(--secondary-text);font-size:var(--text-sm);margin-top:3rem;opacity:1}@media(max-width:768px){.footer-copyright[data-v-07bc2d33]{font-size:var(--text-xs);margin-top:2rem}}.dark-theme .footer-copyright[data-v-07bc2d33]{color:color-mix(in oklch,var(--text-on-accent) 82%,transparent)}.contacts-container[data-v-07bc2d33]{display:flex;gap:2rem;justify-content:center;margin-top:2rem}.contact-link[data-v-07bc2d33]{align-items:center;background-color:var(--contact-chip-bg);border:1px solid var(--contact-chip-border);border-radius:50px;color:var(--text-color);cursor:pointer;display:inline-flex;font-size:var(--text-sm);font-weight:600;gap:.8rem;letter-spacing:var(--tracking-normal);line-height:var(--leading-snug);overflow:hidden;padding:.8rem 2rem;position:relative;text-decoration:none;transition:transform var(--duration-normal) var(--ease-out-quint),box-shadow var(--duration-normal) var(--ease-out-quint),background-color var(--duration-normal) var(--ease-out-quint),color var(--duration-normal) var(--ease-out-quint)}.contact-link.is-hovering[data-v-07bc2d33],.contact-link[data-v-07bc2d33]:hover{background-color:var(--contact-chip-hover-bg);box-shadow:var(--contact-chip-shadow-hover);color:var(--accent-deep);transform:translate3d(0,-3px,0) scale(1.03)}.contact-link[data-v-07bc2d33]:active{transform:translate3d(0,-1px,0) scale(1.01);transition-duration:var(--duration-fast)}.dark-theme .contact-link[data-v-07bc2d33]{background-color:var(--contact-chip-bg-dark);color:var(--text-on-accent)}.dark-theme .contact-link.is-hovering[data-v-07bc2d33],.dark-theme .contact-link[data-v-07bc2d33]:hover{background-color:var(--contact-chip-hover-bg-dark);box-shadow:var(--contact-chip-shadow-hover-dark);color:var(--text-on-accent)}.contact-link[data-v-07bc2d33]:before{background:linear-gradient(90deg,transparent,var(--contact-chip-shimmer-mid),transparent);content:"";height:100%;left:0;position:absolute;top:0;transform:translate(-100%);width:100%}.contact-link.is-hovering[data-v-07bc2d33]:before,.contact-link[data-v-07bc2d33]:hover:before{animation:shimmer-07bc2d33 1.5s infinite}@keyframes shimmer-07bc2d33{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes heroRise-07bc2d33{0%{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translateZ(0)}}@media(max-width:768px){.header[data-v-07bc2d33]{height:auto;min-height:100svh;padding:4rem 1rem 1rem}.name-card h1[data-v-07bc2d33]{font-size:clamp(2.25rem,9.5vw,3.1rem);margin-bottom:.5rem}.name-card h2[data-v-07bc2d33]{font-size:clamp(var(--text-base),3.6vw,var(--text-md));margin-bottom:.5rem}.name-card p[data-v-07bc2d33]{font-size:var(--text-base);margin-bottom:1.5rem;max-width:min(var(--measure-tight),100%)}.projects-container[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:1.25rem;width:100%}.projects-container .projects-masonry-item[data-v-07bc2d33]{box-sizing:border-box;flex:1 1 100%;max-width:100%;min-width:0}.articles-container[data-v-07bc2d33]{align-items:start;display:grid;gap:1.25rem;grid-template-columns:repeat(1,minmax(0,1fr));width:100%}@supports (grid-template-rows:masonry){.articles-container[data-v-07bc2d33]{grid-template-rows:masonry}}}@media(max-width:768px)and (min-width:640px){.projects-container[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:1.25rem;width:100%}.projects-container .projects-masonry-item[data-v-07bc2d33]{box-sizing:border-box;flex:1 1 calc(50% - .625rem);max-width:calc(50% - .625rem);min-width:0}.articles-container[data-v-07bc2d33]{align-items:start;display:grid;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}@supports (grid-template-rows:masonry){.articles-container[data-v-07bc2d33]{grid-template-rows:masonry}}}@media(max-width:768px){.contacts-container[data-v-07bc2d33]{flex-direction:column;gap:1rem}.main-nav[data-v-07bc2d33],.main-nav.scrolled[data-v-07bc2d33]{padding:max(.5rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) .5rem max(1rem,env(safe-area-inset-left,0px))}.explore-button[data-v-07bc2d33]{font-size:var(--text-sm);margin-left:auto;margin-right:auto;margin-top:1rem;padding:.75rem 1.35rem}.content-container[data-v-07bc2d33]{padding:1rem max(1rem,env(safe-area-inset-right,0px)) 1rem max(1rem,env(safe-area-inset-left,0px))}.section[data-v-07bc2d33]{margin-bottom:2rem;padding:1.5rem}.skill-tag[data-v-07bc2d33]{font-size:var(--text-sm);padding:.5rem 1.2rem}.project-card[data-v-07bc2d33]{padding:1.2rem}.project-card h3[data-v-07bc2d33]{font-size:var(--text-lg)}.project-card p[data-v-07bc2d33]{font-size:var(--text-sm);margin-bottom:1rem}.contact-link[data-v-07bc2d33]{justify-content:center;min-height:48px;padding:.75rem 1.5rem;width:100%}.back-to-top-btn[data-v-07bc2d33]{bottom:max(1rem,env(safe-area-inset-bottom,0px) + 8px);height:48px;right:max(1rem,env(safe-area-inset-right,0px) + 8px);width:48px}}.main-nav[data-v-07bc2d33]{left:0;padding:max(1rem,env(safe-area-inset-top,0px)) max(2rem,env(safe-area-inset-right,0px)) 1rem max(2rem,env(safe-area-inset-left,0px));position:fixed;right:0;top:0;transition:padding var(--duration-normal) var(--ease-out-quint);z-index:1000}.main-nav[data-v-07bc2d33]:before{background-color:var(--nav-scrolled-surface);border-bottom:1px solid var(--nav-scrolled-divider);box-shadow:var(--nav-scrolled-shadow);content:"";inset:0;opacity:var(--nav-bg-opacity,0);pointer-events:none;position:absolute;transition:opacity .1s linear;z-index:-1}.main-nav.scrolled[data-v-07bc2d33]{padding:max(.5rem,env(safe-area-inset-top,0px)) max(2rem,env(safe-area-inset-right,0px)) .5rem max(2rem,env(safe-area-inset-left,0px))}.main-nav.scrolled .nav-links a[data-v-07bc2d33],.main-nav.scrolled .nav-logo[data-v-07bc2d33]{color:var(--text-color)}@media(max-width:768px){.main-nav[data-v-07bc2d33],.main-nav.scrolled[data-v-07bc2d33]{padding:max(.7rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) .7rem max(1rem,env(safe-area-inset-left,0px))}}.nav-content[data-v-07bc2d33]{gap:1rem;justify-content:space-between;margin:0 auto;max-width:var(--layout-max-width);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);position:relative}.nav-actions[data-v-07bc2d33],.nav-content[data-v-07bc2d33]{align-items:center;display:flex}.nav-actions[data-v-07bc2d33]{flex-shrink:0;gap:.5rem;justify-content:flex-end}.nav-logo[data-v-07bc2d33]{align-items:center;background:transparent;border:none;color:var(--text-color);cursor:pointer;display:flex;font:inherit;font-size:var(--text-nav-logo);font-weight:700;margin:0;padding:0;transition:opacity var(--transition-speed) ease}.nav-logo[data-v-07bc2d33]:hover{opacity:.9}.dark-theme .nav-logo[data-v-07bc2d33]{color:var(--text-on-dark-pure)}.nav-links[data-v-07bc2d33]{display:flex;gap:2rem}@media(min-width:769px){.nav-links[data-v-07bc2d33]{left:50%;pointer-events:auto;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}}.nav-links a[data-v-07bc2d33]{color:var(--text-color);font-size:var(--text-sm);font-weight:500;line-height:var(--leading-snug);padding-bottom:5px;position:relative;text-decoration:none}.dark-theme .nav-links a[data-v-07bc2d33]{color:var(--text-on-dark-pure)}.nav-links a[data-v-07bc2d33]:after{background:var(--gradient-primary);border-radius:1px;bottom:-3px;content:"";height:2px;left:0;position:absolute;transition:width var(--duration-moderate) var(--ease-out-expo);width:0}.nav-links a[data-v-07bc2d33]:hover:after{width:70%}.nav-links a.active[data-v-07bc2d33]:after{background:linear-gradient(90deg,#fff,#fff);height:3px;width:100%}.main-nav.scrolled .nav-links a.active[data-v-07bc2d33]:after{background:var(--gradient-primary)}.dark-theme .nav-links a.active[data-v-07bc2d33]:after{background:linear-gradient(90deg,#fff,#fff)}.dark-theme .main-nav.scrolled .nav-links a.active[data-v-07bc2d33]:after{background:var(--gradient-primary)}.nav-links a[data-v-07bc2d33]:hover{opacity:.9}.nav-links a.active[data-v-07bc2d33]{font-weight:700}.mobile-nav-toggle[data-v-07bc2d33]{align-items:center;background:transparent;border:none;box-sizing:border-box;cursor:pointer;display:none;justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:10px;z-index:1001}.hamburger[data-v-07bc2d33]{height:20px;position:relative;width:28px}.hamburger span[data-v-07bc2d33]{background-color:var(--text-color);display:block;height:2px;left:0;position:absolute;transition:transform var(--duration-moderate) var(--ease-out-quint),opacity var(--duration-fast) var(--ease-out-quint),background-color var(--duration-fast) var(--ease-out-quint);width:100%}.hamburger span[data-v-07bc2d33]:first-child{top:0}.hamburger span[data-v-07bc2d33]:nth-child(2){top:50%;transform:translateY(-50%)}.hamburger span[data-v-07bc2d33]:nth-child(3){bottom:0}.hamburger.open span[data-v-07bc2d33]:first-child{top:9px;transform:rotate(45deg)}.hamburger.open span[data-v-07bc2d33]:nth-child(2){opacity:0}.hamburger.open span[data-v-07bc2d33]:nth-child(3){bottom:9px;transform:rotate(-45deg)}.scrolled .hamburger span[data-v-07bc2d33]{background-color:var(--text-color)}.dark-theme{background-color:var(--text-on-dark-pure)}.back-to-top-btn[data-v-07bc2d33]{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--gradient-primary);border:none;border-radius:50%;bottom:max(30px,env(safe-area-inset-bottom,0px) + 12px);box-shadow:var(--shadow-elevated-md);color:var(--text-on-accent);cursor:pointer;display:flex;font:inherit;height:50px;justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);opacity:0;padding:0;position:fixed;right:max(30px,env(safe-area-inset-right,0px) + 12px);transform:translate3d(0,20px,0);transition:opacity var(--duration-moderate) var(--ease-out-expo),transform var(--duration-moderate) var(--ease-out-expo),box-shadow var(--duration-normal) var(--ease-out-quint);width:50px;z-index:9999}.back-to-top-btn .arrow-up[data-v-07bc2d33]{font-size:var(--text-xl);font-weight:700;line-height:1}.back-to-top-btn.visible[data-v-07bc2d33]{opacity:1;transform:translateZ(0)}.back-to-top-btn[data-v-07bc2d33]:hover{box-shadow:var(--shadow-elevated-lg);transform:translate3d(0,-5px,0)}.back-to-top-btn[data-v-07bc2d33]:active{transform:translate3d(0,-2px,0) scale(.96);transition-duration:var(--duration-fast)}@media(max-width:768px){.nav-links[data-v-07bc2d33]{flex-direction:column;height:100vh;height:100svh;height:100dvh;max-width:300px;padding:max(5rem,env(safe-area-inset-top,0px) + 4rem) max(1.25rem,env(safe-area-inset-right,0px)) max(2rem,env(safe-area-inset-bottom,0px) + 1rem) max(2rem,env(safe-area-inset-left,0px));position:fixed;right:0;top:0;transform:translate3d(100%,0,0);transition:transform var(--duration-moderate) var(--ease-out-expo);width:min(85vw,300px);z-index:999}.dark-theme .nav-links[data-v-07bc2d33],.nav-links[data-v-07bc2d33]{background-color:var(--surface-drawer);box-shadow:var(--surface-drawer-shadow)}.nav-links a[data-v-07bc2d33]{align-items:center;border-bottom:1px solid var(--border-color);color:var(--text-color);display:inline-flex;font-size:var(--text-lg);justify-content:center;min-height:48px;padding:.75rem 0;text-align:center;width:100%}.nav-links a[data-v-07bc2d33]:last-child{border-bottom:none}.nav-links a[data-v-07bc2d33]:after{bottom:0;height:2px;left:50%;transform:translate(-50%);width:0}.nav-links a.active[data-v-07bc2d33]:after{width:60%}.nav-links.open[data-v-07bc2d33]{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transform:translateZ(0)}.mobile-nav-toggle[data-v-07bc2d33]{display:flex}.nav-logo[data-v-07bc2d33]{font-size:1.5rem}}.scroll-down-indicator[data-v-07bc2d33]{cursor:pointer;padding:20px}.scroll-down-indicator:hover .chevron[data-v-07bc2d33]{animation-play-state:paused;opacity:.85!important}@media(max-width:768px){#projects[data-v-07bc2d33]{margin-bottom:3rem!important;min-height:auto!important}}.projects-section[data-v-07bc2d33]{margin-bottom:3.5rem}@media(max-width:768px){.projects-section[data-v-07bc2d33]{margin-bottom:3rem}}.footer[data-v-07bc2d33]{margin-top:-1rem}@media(max-width:768px){.footer[data-v-07bc2d33]{margin-top:-.5rem}.skills-section[data-v-07bc2d33]{margin-bottom:3rem}}.footer .beian-link[data-v-07bc2d33]{color:var(--accent-deep);text-decoration:none;transition:color var(--duration-normal) var(--ease-out-quint)}.footer .beian-link[data-v-07bc2d33]:focus-visible,.footer .beian-link[data-v-07bc2d33]:hover{color:var(--accent);text-decoration:underline}.dark-theme .footer .beian-link[data-v-07bc2d33]{color:color-mix(in oklch,var(--text-on-accent) 92%,transparent)}.dark-theme .footer .beian-link[data-v-07bc2d33]:focus-visible,.dark-theme .footer .beian-link[data-v-07bc2d33]:hover{color:var(--text-on-accent)}@media(max-width:380px){.content-container[data-v-07bc2d33]{padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px))}}@media(orientation:landscape)and (max-height:520px){.header[data-v-07bc2d33]{min-height:100svh;padding-bottom:.75rem;padding-top:max(.75rem,env(safe-area-inset-top,0px))}.name-card h1[data-v-07bc2d33]{font-size:clamp(1.65rem,5.5vw,2.35rem)}.name-card p[data-v-07bc2d33]{margin-bottom:1rem}.explore-button[data-v-07bc2d33]{margin-top:.65rem}.scroll-down-indicator[data-v-07bc2d33]{bottom:max(6px,env(safe-area-inset-bottom,0px))}}@media(min-width:769px)and (max-width:1200px){.projects-container[data-v-07bc2d33]{display:flex;flex-wrap:wrap;gap:1.5rem;width:100%}.projects-container .projects-masonry-item[data-v-07bc2d33]{box-sizing:border-box;flex:1 1 calc(50% - .75rem);max-width:calc(50% - .75rem);min-width:0}.articles-container[data-v-07bc2d33]{align-items:start;display:grid;gap:1.35rem;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}@supports (grid-template-rows:masonry){.articles-container[data-v-07bc2d33]{grid-template-rows:masonry}}}@media(prefers-reduced-motion:reduce){.container[data-v-07bc2d33]{opacity:1!important;transform:none!important;transition:none!important}.explore-button[data-v-07bc2d33],.name-card h1[data-v-07bc2d33],.name-card h2[data-v-07bc2d33],.name-card p[data-v-07bc2d33]{animation:none!important}.section[data-v-07bc2d33]:hover,.article-item[data-v-07bc2d33]:hover{transform:none!important}.contact-link.is-hovering[data-v-07bc2d33]:before,.contact-link[data-v-07bc2d33]:hover:before{animation:none!important}}
