:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fafafa;--bg-soft:#f2f2f0;--text:#111;--text-muted:#6b6b6b;--text-faint:#9a9a9a;--primary:#1a1a1a;--accent:#c0a060;--accent-soft:#c0a0601f;--surface:#fffffff5;--surface-solid:#fff;--border:#11111114;--border-strong:#11111129;--track:#11111114;--shadow-sm:0 2px 8px #1111110d;--shadow-md:0 10px 30px #11111112;--shadow-lg:0 20px 50px #11111121;--nav-bg:#fafafab8;--hero-text:#111;--hero-muted:#11111194;--hero-faint:#1111116b;--hero-line:#1111110e;--hero-border:#11111124;--hero-border-strong:#1111113d;--hero-fill:#111;--hero-fill-text:#fff;--hero-glow-opacity:.55}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0d0d;--bg-soft:#131313;--text:#e5e5e5;--text-muted:#9c9c9c;--text-faint:#6e6e6e;--primary:#e5e5e5;--accent:#c0a060;--accent-soft:#c0a06029;--surface:#fff1;--surface-solid:#161616;--border:#ffffff17;--border-strong:#fff3;--track:#ffffff1a;--shadow-sm:0 2px 10px #0006;--shadow-md:0 12px 34px #00000080;--shadow-lg:0 24px 60px #000000a6;--nav-bg:#0d0d0dad;--hero-text:#fff;--hero-muted:#ffffff9e;--hero-faint:#ffffff73;--hero-line:#ffffff0b;--hero-border:#fff3;--hero-border-strong:#ffffff59;--hero-fill:#fff;--hero-fill-text:#0d0d0d;--hero-glow-opacity:.5}:root{--container:1160px;--nav-height:76px;--radius:16px;--radius-sm:10px;--radius-pill:999px;--blur:14px;--ease:cubic-bezier(.4, 0, .2, 1);--dur:.3s;--theme-dur:.3s}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 28px)}body{color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--theme-dur) var(--ease), color var(--theme-dur) var(--ease);margin:0;font-family:Inter,Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.7}h1,h2,h3,h4{color:var(--text);letter-spacing:-.015em;transition:color var(--theme-dur) var(--ease);margin:0;font-weight:700;line-height:1.25}p{margin:0 0 1em}p:last-child{margin-bottom:0}a{color:var(--accent);transition:color var(--dur) var(--ease), opacity var(--dur) var(--ease);text-decoration:none}a:hover{color:var(--accent);opacity:.75}ul{margin:0;padding:0;list-style:none}img{max-width:100%;display:block}strong{color:var(--text);font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{z-index:999;background:var(--primary);color:var(--bg);border-radius:0 0 var(--radius-sm) 0;padding:12px 20px;position:absolute;top:0;left:-9999px}.skip-link:focus{opacity:1;left:0}.card{background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:background-color var(--theme-dur) var(--ease), border-color var(--theme-dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease)}.section{padding:110px 0;position:relative}.section__inner{max-width:var(--container);margin:0 auto;padding:0 40px}.section__header{text-align:center;margin-bottom:60px}.section__eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0 0 14px;font-size:12px;font-weight:600}.section__title{letter-spacing:-.01em;font-family:Playfair Display,Noto Sans SC,serif;font-size:44px;font-weight:700}.section__subtitle{color:var(--text-muted);margin:14px 0 0;font-size:16px;font-weight:300}.section--skills,.section--contact{background-color:var(--bg-soft);transition:background-color var(--theme-dur) var(--ease)}.btn{border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform .15s var(--ease), opacity var(--dur) var(--ease);border:none;justify-content:center;align-items:center;gap:10px;padding:14px 32px;font-family:inherit;font-size:15px;font-weight:500;line-height:1;display:inline-flex}.btn:hover{opacity:1}.btn:active{transform:scale(.97)}.btn--primary{background-color:var(--primary);color:var(--bg);box-shadow:var(--shadow-sm)}.btn--primary:hover{background-color:var(--accent);color:#fff;box-shadow:0 8px 24px var(--accent-soft)}.btn--ghost{color:var(--hero-text);box-shadow:inset 0 0 0 1px var(--hero-border-strong);background-color:#0000}.btn--ghost:hover{background-color:var(--hero-fill);color:var(--hero-fill-text);box-shadow:inset 0 0 0 1px var(--hero-fill)}.btn--soft{background-color:var(--accent-soft);color:var(--accent)}.btn--soft:hover{background-color:var(--accent);color:#fff}.btn--sm{padding:11px 24px;font-size:14px}.btn__arrow{transition:transform var(--dur) var(--ease);font-size:12px}.btn:hover .btn__arrow{transform:translate(4px)}.site-header{z-index:100;height:var(--nav-height);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);background-color:#0000;border-bottom:1px solid #0000;position:fixed;top:0;left:0;right:0}.site-header.is-scrolled{background-color:var(--surface-solid);border-bottom-color:var(--border);box-shadow:var(--shadow-sm)}.nav{height:100%;max-width:var(--container);grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;margin:0 auto;padding:0 40px;display:grid}.nav__logo{letter-spacing:.06em;color:var(--text);justify-self:start;font-family:Playfair Display,serif;font-size:22px;font-weight:700}.nav__logo:hover{color:var(--accent);opacity:1}.nav__menu{align-items:center;gap:6px;display:flex}.nav__link{color:var(--text-muted);padding:8px 16px;font-size:14.5px;font-weight:400;display:block;position:relative}.nav__link:hover,.nav__link.active{color:var(--text);opacity:1}.nav__link:after{content:"";background-color:var(--accent);height:1.5px;transition:transform var(--dur) var(--ease);border-radius:1px;position:absolute;bottom:2px;left:16px;right:16px;transform:scaleX(0)}.nav__link:hover:after,.nav__link.active:after{transform:scaleX(1)}.site-header:not(.is-scrolled) .nav__logo{color:var(--hero-text)}.site-header:not(.is-scrolled) .nav__link{color:var(--hero-muted)}.site-header:not(.is-scrolled) .nav__link:hover,.site-header:not(.is-scrolled) .nav__link.active{color:var(--hero-text)}.site-header:not(.is-scrolled) .theme-toggle{color:var(--hero-muted);border-color:var(--hero-border)}.site-header:not(.is-scrolled) .theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle{border:1px solid var(--border);width:40px;height:40px;color:var(--text-muted);cursor:pointer;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease), background-color var(--dur) var(--ease), transform .15s var(--ease);background-color:#0000;border-radius:50%;flex:none;justify-self:end;place-items:center;padding:0;display:grid}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle:active{transform:scale(.92)}.theme-toggle__track{place-items:center;width:16px;height:16px;display:grid;position:relative}.theme-toggle__icon{transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);grid-area:1/1;font-size:15px}[data-theme=light] .theme-toggle__icon--sun{opacity:1;transform:rotate(0)scale(1)}[data-theme=light] .theme-toggle__icon--moon{opacity:0;transform:rotate(-90deg)scale(.4)}[data-theme=dark] .theme-toggle__icon--sun{opacity:0;transform:rotate(90deg)scale(.4)}[data-theme=dark] .theme-toggle__icon--moon{opacity:1;transform:rotate(0)scale(1)}.hero{isolation:isolate;min-height:100vh;min-height:100svh;padding:calc(var(--nav-height) + 60px) 0 100px;background-color:var(--bg);color:var(--hero-text);transition:color var(--theme-dur) var(--ease);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.hero:before,.hero:after{content:"";z-index:-2;pointer-events:none;transition:opacity var(--theme-dur) var(--ease);position:absolute;top:0;bottom:0;left:0;right:0}.hero:before{background:linear-gradient(160deg,#fff 0%,#f3f1ec 55%,#fafafa 100%)}.hero:after{background:linear-gradient(160deg,#0f0f0f 0%,#1a1a1a 55%,#121212 100%)}[data-theme=light] .hero:before{opacity:1}[data-theme=light] .hero:after,[data-theme=dark] .hero:before{opacity:0}[data-theme=dark] .hero:after{opacity:1}.hero__decor{z-index:-1;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.hero__grid{background-image:repeating-linear-gradient(0deg, var(--hero-line) 0 1px, transparent 1px 72px), repeating-linear-gradient(90deg, var(--hero-line) 0 1px, transparent 1px 72px);position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:radial-gradient(75% 65% at 50% 45%,#000 20%,#0000 78%);mask-image:radial-gradient(75% 65% at 50% 45%,#000 20%,#0000 78%)}.hero__glow{opacity:var(--hero-glow-opacity);transition:opacity var(--theme-dur) var(--ease);border-radius:50%;position:absolute}.hero__glow--a{background:radial-gradient(circle,#c0a06057 0%,#0000 68%);width:560px;height:560px;top:-180px;left:4%}.hero__glow--b{background:radial-gradient(circle,#5078be3d 0%,#0000 68%);width:500px;height:500px;bottom:-190px;right:2%}.hero__inner{z-index:1;text-align:center;max-width:900px;padding:0 40px;position:relative}.hero__hello{letter-spacing:.3em;text-transform:uppercase;color:var(--hero-faint);transition:color var(--theme-dur) var(--ease);margin:0 0 18px;font-size:14px;font-weight:300}.hero__display{letter-spacing:.06em;color:var(--hero-text);transition:color var(--theme-dur) var(--ease);margin:0 0 26px;font-family:Playfair Display,serif;font-size:max(4rem,min(8vw,5.5rem));font-weight:900;line-height:1.02}.hero__subtitle{min-height:34px;color:var(--hero-muted);transition:color var(--theme-dur) var(--ease);margin:0 0 44px;font-size:19px;font-weight:300}.hero__cursor{vertical-align:text-bottom;background-color:var(--accent);width:2px;height:1.05em;margin-left:3px;animation:1s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.hero__actions{justify-content:center;gap:16px;display:flex}.hero__scroll{border:1px solid var(--hero-border);width:42px;height:42px;color:var(--hero-muted);animation:scroll-bob 2.2s var(--ease) infinite;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);border-radius:50%;place-items:center;font-size:13px;display:grid;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.hero__scroll:hover{color:var(--hero-text);border-color:var(--hero-border-strong);opacity:1}@keyframes scroll-bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,8px)}}.about__card{max-width:820px;margin:0 auto;padding:44px}.about__text p{color:var(--text-muted);margin-bottom:18px;font-weight:300;line-height:1.85}.about__side{border-top:1px solid var(--border);margin-top:34px;padding-top:34px}.about__stats{grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:32px;display:grid}.stat{text-align:center;background-color:var(--accent-soft);border-radius:var(--radius-sm);transition:transform var(--dur) var(--ease);padding:20px 12px}.stat:hover{transform:translateY(-3px)}.stat__num{color:var(--accent);font-family:Playfair Display,serif;font-size:38px;font-weight:700;line-height:1.1;display:block}.stat__plus{vertical-align:super;font-size:22px}.stat__label{color:var(--text-muted);margin-top:6px;font-size:13px;display:block}.about__hobbies-title{margin-bottom:14px;font-size:16px;font-weight:600}.tag-list{flex-wrap:wrap;gap:10px;display:flex}.tag{color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-pill);transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);background-color:#0000;padding:5px 14px;font-size:12.5px;font-weight:400}.tag:hover{color:var(--accent);border-color:var(--accent)}.skills__grid{flex-direction:column;gap:30px;max-width:860px;margin:0 auto;padding:44px;display:flex}.skill{grid-template-columns:210px 1fr 54px;align-items:center;gap:8px 22px;display:grid}.skill__head{display:contents}.skill__name{color:var(--text);grid-area:1/1;font-size:15px;font-weight:500}.skill__pct{text-align:right;font-variant-numeric:tabular-nums;color:var(--accent);grid-area:1/3;font-size:14px;font-weight:500}.skill__bar{background-color:var(--track);border-radius:var(--radius-pill);height:6px;transition:background-color var(--theme-dur) var(--ease);grid-area:1/2;overflow:hidden}.skill__fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--accent) 0%, var(--text) 160%);width:100%;height:100%;transform:scaleX(var(--skill-progress,0));transform-origin:0;transition:transform .8s var(--ease);display:block}.skill__note{color:var(--text-faint);grid-area:2/2/auto/-1;margin:0;font-size:12.5px;font-weight:300}.projects__grid{grid-template-rows:repeat(5,auto);grid-template-columns:repeat(3,1fr);gap:0 30px;margin-bottom:-30px;display:grid}.project-card{grid-row:span 5;grid-template-rows:subgrid;box-shadow:var(--shadow-md);border:none;margin-bottom:30px;display:grid;overflow:hidden}@media (hover:hover) and (pointer:fine){.project-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-6px)}}.project-card__media{background-color:var(--bg-soft);overflow:hidden}.project-card__img{aspect-ratio:16/10;object-fit:cover;object-position:center top;width:100%;transition:transform .6s var(--ease)}@media (hover:hover) and (pointer:fine){.project-card:hover .project-card__img{transform:scale(1.04)}}.project-card__body{grid-row:span 3;grid-template-rows:subgrid;padding:26px 26px 0;display:grid}.project-card__title{margin-bottom:12px;font-size:19px;font-weight:600;line-height:1.25}.project-card__desc{color:var(--text-muted);margin-bottom:20px;font-size:14px;font-weight:300;line-height:1.8}.project-card__tags{flex-wrap:wrap;gap:8px;display:flex}.project-card__footer{padding:22px 26px 26px}.project-card__footer .btn{width:100%}@supports not (grid-template-rows:subgrid){.projects__grid{row-gap:30px;margin-bottom:0}.project-card{flex-direction:column;margin-bottom:0;display:flex}.project-card__body{flex:1;display:block}.project-card__title{min-height:2.5em}}.contact-list{flex-direction:column;gap:14px;max-width:560px;margin:0 auto 24px;display:flex}.contact-item{align-items:center;gap:16px;padding:18px 22px;display:flex}.contact-item:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.contact-item__icon{background-color:var(--accent-soft);width:42px;height:42px;color:var(--accent);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:50%;flex:none;place-items:center;font-size:16px;display:grid}.contact-item:hover .contact-item__icon{background-color:var(--accent);color:#fff}.contact-item__label{width:50px;color:var(--text-faint);flex:none;font-size:12.5px}.contact-item__value{color:var(--text);word-break:break-all;font-size:14.5px;font-weight:500}a.contact-item__value:hover{color:var(--accent);opacity:1}.contact-item__value--masked{letter-spacing:.06em;color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;font-weight:400}.contact__note{text-align:center;color:var(--text-faint);font-size:13.5px;font-weight:300}.site-footer{border-top:1px solid var(--border);background-color:var(--bg);transition:background-color var(--theme-dur) var(--ease), border-color var(--theme-dur) var(--ease)}.site-footer__inner{max-width:var(--container);justify-content:space-between;align-items:center;margin:0 auto;padding:34px 40px;display:flex}.site-footer__copy{color:var(--text-faint);margin:0;font-size:13.5px;font-weight:300}.site-footer__links{gap:26px;display:flex}.site-footer__links a{color:var(--text-muted);font-size:13.5px;font-weight:400}.site-footer__links a:hover{color:var(--accent);opacity:1}.back-to-top{z-index:90;background-color:var(--surface-solid);border:1px solid var(--border);width:46px;height:46px;box-shadow:var(--shadow-md);color:var(--text-muted);cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), background-color var(--theme-dur) var(--ease);border-radius:50%;place-items:center;padding:0;font-size:15px;display:grid;position:fixed;bottom:40px;right:40px;transform:translateY(14px)}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:none}.back-to-top:hover{color:var(--accent);border-color:var(--accent);box-shadow:var(--shadow-lg)}.back-to-top.is-visible:active{transform:scale(.92)}.reveal{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:none}.lightbox[hidden]{display:none}.lightbox{z-index:200;opacity:0;transition:opacity var(--dur) var(--ease);place-items:center;padding:40px 20px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.lightbox.is-open{opacity:1}.lightbox__backdrop{cursor:zoom-out;background-color:#000000d1;position:absolute;top:0;bottom:0;left:0;right:0}.lightbox__panel{background-color:var(--surface-solid);border-radius:var(--radius);width:min(920px,100%);max-height:100%;box-shadow:var(--shadow-lg);transition:transform var(--dur) var(--ease);flex-direction:column;display:flex;position:relative;overflow:auto;transform:translateY(16px)scale(.98)}.lightbox.is-open .lightbox__panel{transform:none}.lightbox__img{object-fit:contain;background-color:var(--bg-soft);width:100%;max-height:62vh}.lightbox__meta{padding:24px 28px 28px}.lightbox__title{margin-bottom:10px;font-size:20px;font-weight:600}.lightbox__desc{color:var(--text-muted);margin:0;font-size:14.5px;font-weight:300;line-height:1.85}.lightbox__close{color:#fff;cursor:pointer;width:38px;height:38px;transition:background-color var(--dur) var(--ease);background-color:#00000073;border:none;border-radius:50%;place-items:center;padding:0;font-size:15px;display:grid;position:absolute;top:14px;right:14px}.lightbox__close:hover{background-color:var(--accent)}.has-lightbox{overflow:hidden}@media (max-width:1080px){.nav,.section__inner,.hero__inner{padding-left:28px;padding-right:28px}.section{padding:88px 0}.projects__grid{grid-template-columns:repeat(2,1fr)}.back-to-top{bottom:24px;right:24px}}@media (max-width:820px){:root{--nav-height:64px}.section{padding:72px 0}.section__header{margin-bottom:44px}.section__title{font-size:34px}.nav{gap:16px}.nav__menu{gap:2px}.nav__link{padding:8px 10px;font-size:13.5px}.hero__display{font-size:max(2.6rem,min(9vw,4rem))}.hero__subtitle{font-size:15px}.about__card,.skills__grid{padding:30px 24px}.skill{grid-template-columns:1fr auto;gap:10px 12px}.skill__name{grid-area:1/1}.skill__pct{grid-area:1/2}.skill__bar{grid-area:2/1/auto/-1}.skill__note{grid-area:3/1/auto/-1}.projects__grid{grid-template-columns:1fr}.site-footer__inner{text-align:center;flex-direction:column;gap:14px;padding:28px}.lightbox{padding:20px 14px}.lightbox__img{max-height:52vh}.lightbox__meta{padding:20px 22px 24px}}@media (max-width:560px){.nav{gap:10px;padding-left:18px;padding-right:18px}.nav__logo{font-size:17px}.nav__menu{gap:0}.nav__link{padding:8px 6px;font-size:12.5px}.nav__link:after{left:6px;right:6px}.theme-toggle{width:34px;height:34px}.section__inner,.hero__inner{padding-left:18px;padding-right:18px}.section{padding:60px 0}.section__title{font-size:28px}.section__subtitle{font-size:14.5px}.hero__actions{flex-direction:column;align-items:stretch}.hero__actions .btn{width:100%}.about__card,.skills__grid{padding:24px 18px}.about__stats{gap:10px}.stat{padding:14px 6px}.stat__num{font-size:26px}.stat__label{font-size:12px}.contact-item{flex-wrap:wrap;gap:12px;padding:16px 18px}.contact-item__label{width:auto}.contact-item__value{flex:100%}.back-to-top{width:42px;height:42px;bottom:16px;right:16px}}@media (forced-colors:active){.card,.site-header.is-scrolled,.back-to-top,.lightbox__panel{box-shadow:none;border:1px solid canvastext}.skill__fill{background:highlight}.hero__grid,.hero__glow{display:none}}@media (prefers-reduced-transparency:reduce){.card,.site-header.is-scrolled{background-color:var(--surface-solid)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}@media print{.site-header,.back-to-top,.lightbox,.hero__decor,.hero__scroll,.hero__actions,.project-card__footer{display:none}body{color:#000;background:#fff}.hero{color:#000;background:0 0;min-height:auto}.hero:before,.hero:after{display:none}.hero__display{color:#000}.hero__hello,.hero__subtitle{color:#333}}
