:root{color-scheme:light dark;--bg:#f7f7f9;--bg-elevated:#ffffffb3;--surface:#ffffffa8;--surface-solid:#fff;--surface-muted:#ececf1;--text:#111114;--secondary:#6d6d76;--tertiary:#70707a;--border:#14141c1a;--glass-border:#ffffffb8;--accent:#5856d6;--accent-2:#0a84ff;--accent-soft:#5856d61f;--shadow:0 30px 80px #1c1c281a;--shadow-soft:0 14px 40px #1c1c2812;--site-ui-surface:var(--bg-elevated);--site-ui-border:var(--glass-border);--site-ui-text:var(--text);--site-ui-muted:var(--secondary);--site-ui-accent:var(--accent);--site-ui-accent-soft:var(--accent-soft);--site-ui-shadow-color:#14141e;--site-ui-shadow-hover:var(--shadow)}@media (prefers-color-scheme:dark){:root{--bg:#09090b;--bg-elevated:#1a1a1ea8;--surface:#1c1c20ad;--surface-solid:#17171a;--surface-muted:#202024;--text:#f7f7f9;--secondary:#a6a6b0;--tertiary:#7a7a84;--border:#ffffff17;--glass-border:#ffffff21;--accent:#9c9aff;--accent-2:#64b5ff;--accent-soft:#9c9aff21;--shadow:0 30px 90px #00000061;--shadow-soft:0 14px 40px #0000003d}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{background:radial-gradient(circle at 12% 12%, #5856d612, transparent 34rem), radial-gradient(circle at 86% 22%, #0a84ff12, transparent 32rem), var(--bg);min-width:320px;color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5;overflow-x:hidden}::selection{background:var(--accent);color:#fff}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}.shell{width:min(1180px,100% - 48px);margin-inline:auto}.ambient{z-index:-1;pointer-events:none;aspect-ratio:1;filter:blur(90px);opacity:.2;border-radius:999px;width:32rem;position:fixed}.ambient-one{background:var(--accent-2);top:8rem;right:-12rem}.ambient-two{background:var(--accent);top:48rem;left:-15rem}.floating-header{top:calc(env(safe-area-inset-top) + var(--site-ui-header-offset));right:env(safe-area-inset-right);left:env(safe-area-inset-left);z-index:100;pointer-events:none;justify-content:center;display:flex;position:fixed}.hero{grid-template-columns:1fr;align-items:center;gap:0;min-height:100svh;padding-top:140px;padding-bottom:88px;display:grid}.hero-copy{z-index:2;width:min(920px,100%);max-width:none;position:relative}.eyebrow{color:var(--secondary);letter-spacing:var(--tracking-label);text-transform:uppercase;align-items:center;gap:9px;margin:0 0 22px;font-size:.78rem;font-weight:720;display:flex}.status-dot{background:#30d158;border-radius:999px;width:8px;height:8px;box-shadow:0 0 0 5px #30d1581c}.hero-eyebrow{flex-wrap:wrap}.hero-rotator{min-width:17ch;color:var(--text);text-transform:none;letter-spacing:.03em;grid-template-areas:"word";display:inline-grid}.hero-rotator>span{opacity:0;grid-area:word;animation:12s infinite both hero-word-cycle;transform:translateY(.28em)}.hero-rotator>span:first-child{animation-delay:0s}.hero-rotator>span:nth-child(2){animation-delay:-9s}.hero-rotator>span:nth-child(3){animation-delay:-6s}.hero-rotator>span:nth-child(4){animation-delay:-3s}@keyframes hero-word-cycle{0%,18%{opacity:1;transform:translateY(0)}24%,94%{opacity:0;transform:translateY(-.28em)}95%{opacity:0;transform:translateY(.28em)}to{opacity:1;transform:translateY(0)}}h1,h2,h3,p{margin-top:0}h1{letter-spacing:var(--tracking-display);margin-bottom:30px;font-size:clamp(5rem,9.3vw,9rem);font-weight:800;line-height:.88}.hero-lead{max-width:760px;color:var(--secondary);letter-spacing:var(--tracking-body);margin-bottom:34px;font-size:clamp(1.35rem,2.15vw,1.9rem);line-height:1.2}.hero-lead strong{color:var(--text);font-weight:700}.hero-actions,.contact-links{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.primary-action,.secondary-action{border-radius:999px;justify-content:center;align-items:center;gap:10px;min-height:48px;padding:0 18px;font-size:.94rem;font-weight:680;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.primary-action{background:var(--text);color:var(--bg);box-shadow:var(--shadow-soft)}.primary-action:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.secondary-action{border:1px solid var(--border);background:var(--surface);color:var(--secondary);-webkit-backdrop-filter:blur(20px)}.secondary-action:hover{color:var(--text);background:var(--surface-solid);transform:translateY(-2px)}.hero-socials{flex-wrap:wrap;gap:18px;margin-top:32px;display:flex}.hero-socials a,.project-links a{color:var(--secondary);font-size:.9rem;font-weight:650;transition:color .16s}.hero-socials a:hover,.project-links a:hover{color:var(--accent)}.work-section{padding:118px 0 70px}.section-intro{grid-template-columns:minmax(0,1fr) minmax(260px,.46fr);align-items:end;gap:24px 56px;margin-bottom:46px;display:grid}.section-intro .eyebrow{grid-column:1/-1;margin-bottom:-6px}.section-intro h2,.contact-panel h2{letter-spacing:var(--tracking-heading);margin-bottom:0;font-size:clamp(3.5rem,7vw,6.8rem);line-height:.92}.section-intro>p:last-child{color:var(--secondary);margin-bottom:7px;font-size:1rem}.projects-bento{grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;display:grid}.project-card{border:1px solid var(--border);background:var(--surface);min-width:0;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(18px);border-radius:34px;flex-direction:column;grid-column:span 6;display:flex;overflow:hidden}.project-card.featured{grid-column:1/-1;grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);display:grid}.project-media{background:var(--surface-muted);min-width:0;min-height:280px;position:relative;overflow:hidden}.project-card.featured .project-media{aspect-ratio:1353/1163;min-height:0}.project-card:not(.featured) .project-media{aspect-ratio:16/10}.project-card-geely .project-media{background:radial-gradient(circle at 50% 12%,#5a779e3d,#0000 52%),#111419}.project-card-geely .project-media img{object-fit:contain;padding:clamp(18px,2.6vw,34px)}.project-media img{object-fit:cover;object-position:50% 50%;width:100%;max-width:none;height:100%;transition:transform .5s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0}.project-card:hover .project-media img{transform:scale(1.018)}.project-info{flex-direction:column;flex:1;padding:clamp(26px,4vw,42px);display:flex}.project-kicker-row{justify-content:space-between;align-items:center;gap:12px;min-height:31px;margin-bottom:18px;display:flex}.project-eyebrow{color:var(--secondary);letter-spacing:var(--tracking-label);text-transform:uppercase;margin:0;font-size:.73rem;font-weight:720}.project-status{border:1px solid color-mix(in srgb, var(--accent) 24%, var(--border));background:var(--accent-soft);color:var(--secondary);letter-spacing:.045em;text-transform:uppercase;border-radius:999px;flex:none;padding:6px 9px;font-size:.66rem;font-weight:760}.project-title-row{justify-content:space-between;align-items:baseline;gap:18px;display:flex}.project-title-row h3{letter-spacing:var(--tracking-title);margin-bottom:16px;font-size:clamp(2.25rem,4vw,4.2rem);line-height:.98}.project-number{color:var(--tertiary);font-size:.74rem;font-weight:700}.project-description{max-width:34rem;color:var(--secondary);margin-bottom:22px;font-size:.98rem}.tags{flex-wrap:wrap;gap:7px;margin:0 0 28px;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--border);color:var(--secondary);background:#ffffff1f;border-radius:999px;padding:6px 10px;font-size:.72rem;font-weight:650}.project-links{flex-wrap:wrap;gap:18px;margin-top:auto;display:flex}.more-work{border:1px solid var(--border);color:var(--secondary);background:0 0;border-radius:24px;justify-content:space-between;align-items:center;gap:24px;margin-top:20px;padding:25px 28px;transition:background .18s,color .18s,transform .18s;display:flex}.more-work strong{font-size:1.2rem}.more-work:hover{color:var(--text);background:var(--surface);transform:translateY(-2px)}.contact-section{padding:110px 0 70px}.contact-panel{border:1px solid var(--glass-border);background:linear-gradient(135deg, #5856d621, #0a84ff0f 54%, transparent 80%), var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(24px)saturate(150%);border-radius:42px;padding:clamp(38px,7vw,84px);position:relative;overflow:hidden}.contact-panel:after{content:"";aspect-ratio:1;pointer-events:none;background:radial-gradient(circle,#0a84ff33,#0000 66%);border-radius:50%;width:26rem;position:absolute;bottom:-15rem;right:-9rem}.contact-panel .eyebrow{margin-bottom:24px}.contact-panel h2{z-index:1;max-width:900px;margin-bottom:28px;position:relative}.contact-panel>p:not(.eyebrow){z-index:1;max-width:620px;color:var(--secondary);margin-bottom:30px;font-size:1.05rem;position:relative}.contact-links{z-index:1;position:relative}.portfolio-header .nav-github{background:linear-gradient(180deg, #ffffff3d, #ffffff1a), var(--accent-soft);color:var(--text);border-color:#ffffff4d;box-shadow:inset 0 1px #ffffff5c}.not-found-page{align-items:center;min-height:100svh;padding-block:140px 80px;display:grid}.not-found-copy{max-width:860px}.not-found-copy h1{max-width:10ch}.not-found-copy>p:not(.eyebrow){max-width:620px;color:var(--secondary);margin-bottom:30px;font-size:1.08rem}@media (prefers-color-scheme:dark){.portfolio-header .nav-github{background-color:#fff1;border-color:#ffffff1a}}.site-footer{color:var(--tertiary);justify-content:space-between;align-items:center;gap:20px;padding:30px 0 42px;font-size:.8rem;display:flex}.site-footer-with-changelog{grid-template-columns:auto minmax(0,1fr) auto;gap:14px 28px;display:grid}.site-footer-changelog{text-align:center;justify-self:center;min-width:0}.site-footer-changelog strong{color:var(--secondary);font-weight:700}.site-footer-source{color:var(--secondary);font-weight:680;transition:color .16s}.site-footer-source:hover{color:var(--accent)}@media (width<=980px){.hero{gap:0;min-height:auto;padding-top:150px}.section-intro{grid-template-columns:minmax(0,1fr);min-width:0}.section-intro>*{min-width:0}.section-intro .eyebrow{grid-column:auto}.section-intro>p:last-child{max-width:580px}.project-card.featured{grid-template-columns:1fr}.project-card{grid-column:1/-1}.project-card:not(.featured){grid-template-columns:minmax(0,.9fr) minmax(320px,1.1fr);display:grid}}@media (width<=680px){.portfolio-header .nav-github,.portfolio-header .nav-resume{display:none}.shell{width:min(100% - 28px,1180px)}.hero{gap:0;padding-top:124px;padding-bottom:64px}h1{margin-bottom:26px;font-size:clamp(3.6rem,16vw + .5rem,6.5rem);line-height:.9}.hero-lead{font-size:1.3rem}.hero-actions,.contact-links{flex-direction:column;align-items:stretch}.primary-action,.secondary-action{width:100%}.work-section{padding-top:84px}.section-intro h2{font-size:clamp(3rem,9vw + 1rem,5rem)}.contact-panel h2{font-size:clamp(2.4rem,8vw + .75rem,5rem)}.projects-bento{gap:14px}.project-card,.contact-panel{border-radius:28px}.project-card:not(.featured){display:flex}.project-card:not(.featured) .project-media{aspect-ratio:16/10}.project-info{padding:25px}.project-title-row h3{font-size:2.35rem}.more-work{padding:21px 22px}.contact-section{padding-top:84px}.site-footer{flex-direction:column;align-items:flex-start}.site-footer-with-changelog{grid-template-columns:1fr;gap:8px;display:grid}.site-footer-changelog{text-align:left;justify-self:start}}@media (width<=900px) and (orientation:landscape) and (height<=520px){.hero{min-height:auto;padding-block:106px 54px}h1{font-size:clamp(3.4rem,10vw,5.2rem)}.hero-lead{max-width:680px;font-size:1.08rem}.project-card:not(.featured){display:flex}.project-card .project-media{aspect-ratio:16/9;min-height:0}.project-media img{display:block}}@media (width<=420px){.portfolio-header .nav-contact{display:none}.contact-panel{border-radius:24px;padding:28px 24px}.contact-panel h2{font-size:clamp(2.25rem,7vw + .9rem,3rem);line-height:.96}.not-found-page{padding-top:116px}}@media (prefers-reduced-motion:reduce){.hero-rotator>span{opacity:1;animation:none;display:none;transform:none}.hero-rotator>span:first-child{display:block}html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@supports (padding:env(safe-area-inset-left)){@media (orientation:landscape){body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}}}
