.mobile-menu[data-astro-cid-xlat7obg]{display:none}.menu-toggle[data-astro-cid-xlat7obg]{min-width:3.25rem;min-height:2.75rem;color:var(--color-text-primary);font:inherit;background:0 0;border:0;padding:0}.menu-toggle[data-astro-cid-xlat7obg] i[data-astro-cid-xlat7obg],.menu-toggle[data-astro-cid-xlat7obg] i[data-astro-cid-xlat7obg]:before{content:"";background:currentColor;width:1.25rem;height:1px;margin:.25rem auto 0;display:block}.menu-panel[data-astro-cid-xlat7obg]{top:var(--header-height);border-bottom:1px solid var(--color-border);background:#070b10fa;padding:2rem max(1rem,6vw) 2.5rem;position:fixed;left:0;right:0}.menu-panel[data-astro-cid-xlat7obg] nav[data-astro-cid-xlat7obg]{gap:0;height:auto;display:grid}.menu-panel[data-astro-cid-xlat7obg] nav[data-astro-cid-xlat7obg] a[data-astro-cid-xlat7obg]{border-bottom:1px solid var(--color-border);align-items:center;min-height:3.5rem;display:flex}.menu-panel[data-astro-cid-xlat7obg] nav[data-astro-cid-xlat7obg] a[data-astro-cid-xlat7obg].active{color:var(--color-text-primary)}.menu-panel[data-astro-cid-xlat7obg] nav[data-astro-cid-xlat7obg] a[data-astro-cid-xlat7obg].active:before{content:"";background:var(--color-accent);width:.5rem;height:.5rem;margin-right:.75rem}.menu-contact[data-astro-cid-xlat7obg]{border:1px solid var(--color-accent);border-radius:var(--radius-md);justify-content:space-between;align-items:center;min-height:3rem;margin-top:1.5rem;padding-inline:1rem;display:flex}.menu-resume[data-astro-cid-xlat7obg]{min-height:2.75rem;color:var(--color-text-secondary);align-items:center;margin-top:.75rem;display:inline-flex}.menu-panel[data-astro-cid-xlat7obg] p[data-astro-cid-xlat7obg]{color:var(--color-text-secondary);margin:1rem 0 0;font-size:.8rem}@media (width<=48rem){.mobile-menu[data-astro-cid-xlat7obg]{display:block}}.desktop-nav[data-astro-cid-fzpbxy5g]{margin-left:clamp(1rem,5vw,6rem);margin-right:auto}.header-actions[data-astro-cid-fzpbxy5g]{gap:.75rem;display:flex}.button[data-astro-cid-fzpbxy5g]{border:1px solid var(--color-border);border-radius:var(--radius-md);min-height:2.65rem;transition:border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);justify-content:center;align-items:center;padding:0 1.15rem;font-size:.9rem;font-weight:600;display:inline-flex}.button[data-astro-cid-fzpbxy5g]:hover{border-color:#ffffff47}.button--primary[data-astro-cid-fzpbxy5g]{border-color:var(--color-accent)}.button--primary[data-astro-cid-fzpbxy5g]:hover{color:#fff;background:#e0443e1a}.is-disabled[data-astro-cid-fzpbxy5g]{color:#737980;cursor:not-allowed}.site-header--overlay[data-astro-cid-fzpbxy5g]{backdrop-filter:none;width:100%;transition:border-color var(--transition-fast), background var(--transition-fast), backdrop-filter var(--transition-fast);background:0 0;border-bottom-color:#0000;position:fixed;inset-inline:0}.site-header--overlay[data-astro-cid-fzpbxy5g].is-scrolled{backdrop-filter:blur(1rem);background:#080808d6;border-bottom-color:#ffffff14}.site-header--overlay[data-astro-cid-fzpbxy5g] .site-header__brand[data-astro-cid-fzpbxy5g]{letter-spacing:.22em;font-size:.88rem;font-weight:560}.site-header--overlay[data-astro-cid-fzpbxy5g] .desktop-nav[data-astro-cid-fzpbxy5g]{margin-right:0}.site-header--overlay[data-astro-cid-fzpbxy5g] .desktop-nav a{color:#f4f1eab8;white-space:nowrap;flex:none;font-size:.88rem}.site-header--overlay[data-astro-cid-fzpbxy5g] .desktop-nav a:hover,.site-header--overlay[data-astro-cid-fzpbxy5g] .desktop-nav a.active{color:#f4f1ea}.site-header--overlay[data-astro-cid-fzpbxy5g] .desktop-nav a.active:after{content:none}@media (width<=48rem){.desktop-nav[data-astro-cid-fzpbxy5g],.header-actions[data-astro-cid-fzpbxy5g]{display:none}}.site-footer__inner[data-astro-cid-nns7i3if]{grid-template-columns:1fr auto 1fr;display:grid}.site-footer[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{justify-self:end}@media (width<=40rem){.site-footer__inner[data-astro-cid-nns7i3if]{grid-template-columns:1fr}.site-footer[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{justify-self:start}}:root{color-scheme:dark;--color-background:#070b10;--color-background-alt:#11110f;--color-surface:#0d1319;--color-surface-hover:#141b23;--color-accent:#e0443e;--color-text-primary:#f4f1ea;--color-text-secondary:#a7abb0;--color-border:#ffffff1f;--color-focus:#f4f1ea;--color-danger:#e75a5a;--font-sans:Inter, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif;--font-size-caption:.8125rem;--font-size-body:clamp(.9375rem, .9rem + .15vw, 1.0625rem);--font-size-heading:clamp(1.5rem, 1.1rem + 1.3vw, 2.25rem);--font-size-display:clamp(3rem, 2.15rem + 2.4vw, 5.25rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--radius-sm:.1875rem;--radius-md:.375rem;--container-width:96rem;--header-height:4.5rem;--transition-fast:.16s ease;--transition-content:.42s cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--color-background);min-width:20rem}body{min-height:100vh;color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--font-size-body);background:var(--color-background);margin:0;line-height:1.65}body:before{z-index:-1;pointer-events:none;content:"";opacity:.17;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");position:fixed;inset:0}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}h1,h2,p{margin-top:0}h1,h2{letter-spacing:-.035em;line-height:1.14}.container{width:min(calc(100% - clamp(2rem, 6vw, 8rem)), var(--container-width));margin-inline:auto}.skip-link{top:var(--space-3);left:var(--space-3);z-index:100;padding:var(--space-2) var(--space-4);color:var(--color-background);background:var(--color-text-primary);position:fixed;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:20;height:var(--header-height);border-bottom:1px solid var(--color-border);backdrop-filter:blur(1rem);background:#070b10c7;position:sticky;top:0}.site-header__inner{width:min(calc(100% - clamp(2rem, 6vw, 8rem)), var(--container-width));justify-content:space-between;align-items:center;gap:var(--space-6);height:100%;margin-inline:auto;display:flex}.site-header__brand{letter-spacing:-.02em;font-size:1.125rem;font-weight:700}.site-header nav{height:100%;color:var(--color-text-secondary);align-items:center;gap:clamp(1.5rem,3vw,3.5rem);display:flex}.site-header nav a{height:100%;transition:color var(--transition-fast);place-items:center;display:grid;position:relative}.site-header nav a:hover,.site-header nav a.active{color:var(--color-text-primary)}.site-header nav a.active:after{content:"";background:var(--color-accent);width:1.5rem;height:4px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.eyebrow{margin-bottom:var(--space-4);color:var(--color-text-secondary);font-size:var(--font-size-caption);letter-spacing:.14em;text-transform:uppercase;font-weight:600}.section{padding-block:var(--space-8) var(--space-9);scroll-margin-top:var(--header-height)}.section-heading{margin-bottom:var(--space-6);align-items:center;gap:var(--space-5);grid-template-columns:auto 1fr;display:grid}.section-heading h2{align-items:center;gap:var(--space-3);margin:0;font-size:1.35rem;display:flex}.section-heading h2 span{background:var(--color-accent);width:.5rem;height:1rem}.section-heading>div{background:var(--color-border);height:1px}.stage-note{min-height:13rem;padding:var(--space-6);color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);background:linear-gradient(145deg,#ffffff08,#0000);margin:0}.prose-section{max-width:58rem;display:grid}.prose-section h2{margin-bottom:var(--space-5);font-size:var(--font-size-heading)}.prose-section>p:last-child{max-width:48rem;color:var(--color-text-secondary)}.project-shell,.not-found{min-height:calc(100vh - var(--header-height));padding-block:var(--space-9)}.project-shell h1,.not-found h1{margin-block:var(--space-6) var(--space-5);font-size:var(--font-size-display)}.text-link{color:var(--color-text-secondary);transition:color var(--transition-fast)}.text-link:hover{color:var(--color-accent)}.site-footer{border-top:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-caption)}.site-footer__inner{padding-block:var(--space-6);justify-content:space-between;display:flex}@media (width<=40rem){:root{--header-height:4rem}.site-header nav{gap:var(--space-4);font-size:.875rem}.site-header nav a:nth-child(2){display:none}.section{padding-block:var(--space-7) var(--space-8)}.site-footer__inner{gap:var(--space-2);flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.reveal-ready [data-reveal]{opacity:0;transition:opacity var(--transition-content), transform var(--transition-content);transform:translateY(1.25rem)}.reveal-ready [data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal-ready [data-reveal]{opacity:1;transition:none;transform:none}.project-card video,.showcase-card video{display:none}}:where(a,button,video):focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}[aria-disabled=true]{cursor:not-allowed}.project-card__media:after,.showcase-card__media:after{z-index:1;pointer-events:none;content:"";opacity:1;transition:opacity var(--transition-fast);background:linear-gradient(105deg,#0000 35%,#ffffff0d 50%,#0000 65%) 0 0/200% 100%;animation:1.6s linear infinite media-loading;position:absolute;inset:0}.project-card.is-image-loaded .project-card__media:after,.project-card.has-media-error .project-card__media:after,.showcase-card.is-image-loaded .showcase-card__media:after,.showcase-card.has-media-error .showcase-card__media:after{opacity:0;animation:none}.project-card.has-media-error .project-card__index{border:1px solid var(--color-danger)}.media-state{color:var(--color-text-secondary)}.media-state strong{color:var(--color-text-primary)}.unavailable-notice{border-left:2px solid var(--color-accent);color:var(--color-text-secondary);background:#ffffff08;padding:.85rem 1rem;font-size:.78rem}.unavailable-notice strong{color:var(--color-text-primary);margin-bottom:.2rem;display:block}@keyframes media-loading{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.project-card__media:after,.showcase-card__media:after{animation:none}}
