@font-face { font-family:'Stretch Pro'; src:url('assets/fonts/StretchPro.otf') format('opentype'); font-style:normal; font-weight:400; font-display:swap; }
@font-face { font-family:'Alimama FangYuan'; src:url('assets/fonts/AlimamaFangYuanTiVF.ttf') format('truetype'); font-style:normal; font-weight:100 900; font-display:swap; }
:root { color-scheme: dark; background: #050505; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: #050505; overflow-x: hidden; }
.portfolio { width: 100%; }
.board { position:relative; width:100%; overflow:hidden; background:#050505; container-type:inline-size; }
.board-cover { aspect-ratio: 8 / 5; }
.cover-stage { position: absolute; inset: 0; overflow: hidden; background: #151e4a; color: #fff; }
.cover-layer { position: absolute; inset: 0; pointer-events: none; }
.cover-background { inset:0; z-index:1; }
.cover-background img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; }
.cover-title { z-index:2; left:4.270833%; top:9.666667%; width:91.458333%; height:25.666667%; right:auto; bottom:auto; display:flex; align-items:flex-start; overflow:visible; color:#fff; font:400 16.041667cqw/normal 'Stretch Pro',sans-serif; letter-spacing:-.018em; white-space:nowrap; pointer-events:auto; }
.cover-title.variable-proximity,
.about-title .variable-proximity,
.projects-title .variable-proximity,
.contact-title .variable-proximity { font-family:'Stretch Pro',sans-serif; }
.variable-proximity-letter { --proximity:0; display:inline-block; flex:none; pointer-events:auto; transform:scaleX(calc(1 + var(--proximity) * .055)); transform-origin:center 62%; -webkit-text-stroke:calc(var(--proximity) * .018em) currentColor; text-shadow:0 0 calc(var(--proximity) * .035em) currentColor; transition:transform 90ms linear,-webkit-text-stroke-width 90ms linear,text-shadow 90ms linear; will-change:transform,font-variation-settings,filter,opacity; }
.variable-proximity.blur-text .variable-proximity-letter { opacity:0; filter:blur(clamp(6px,.520833cqw,10px)); transition:filter 700ms cubic-bezier(.2,.75,.2,1) var(--blur-delay,0ms),opacity 620ms ease var(--blur-delay,0ms); }
.variable-proximity.blur-text.is-blur-text-visible .variable-proximity-letter { opacity:1; filter:blur(0); }
.cover-title .variable-proximity-letter,
.about-title .variable-proximity-letter,
.projects-title .variable-proximity-letter,
.contact-title .variable-proximity-letter { background-color:currentColor; background-image:url('assets/textures/title-frost.webp'),linear-gradient(112deg,rgba(255,255,255,.1),transparent 38%,rgba(0,0,0,.045) 72%,rgba(255,255,255,.07)),linear-gradient(currentColor,currentColor); background-size:clamp(280px,33.333333cqw,640px) auto,100% 100%,100% 100%; background-position:center,center,center; background-repeat:repeat,no-repeat,no-repeat; background-blend-mode:multiply,soft-light,normal; background-clip:text; -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.cover-person { z-index:3; left:22.2917%; top:22.9167%; width:55.4167%; height:77.0833%; right:auto; bottom:auto; overflow:hidden; pointer-events:none; }
.cover-person-media { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; object-position:center bottom; background:transparent; }
.cover-copy,.cover-material,.cover-footer-asset { z-index:4; }
@media (hover:hover) and (pointer:fine) {
  .cover-material:hover { animation:cover-hover-wobble 680ms ease-in-out infinite alternate; }
}
@keyframes cover-hover-wobble {
  0% { transform:translate3d(-.10cqw,.04cqw,0) rotate(-.16deg); }
  50% { transform:translate3d(.08cqw,-.08cqw,0) rotate(.12deg); }
  100% { transform:translate3d(.12cqw,.06cqw,0) rotate(.18deg); }
}
.cover-copy { font-family:'Alimama FangYuan','PingFang SC',sans-serif; }
.portfolio-word { position:absolute; left:5.208333%; top:36.5%; font:400 2.083333cqw/.8 'Stretch Pro',sans-serif; text-transform:uppercase; }
.intro { position:absolute; left:5.208333%; width:13.958333%; margin:0; font:400 .625cqw/1.666667 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 400; text-transform:uppercase; }
.cover-fade-text { opacity:.025; filter:blur(.52cqw); transform:translateY(calc(var(--reveal-y,1) * 2.604167cqw)); transition:opacity 1050ms cubic-bezier(.2,.7,.2,1),filter 1100ms ease,transform 1100ms cubic-bezier(.16,.8,.2,1); }
.cover-stage.is-cover-copy-visible .cover-fade-text { opacity:1; filter:blur(0); transform:translateY(0); }
.portfolio-word.cover-fade-text { transition-delay:120ms; }
.intro-one.cover-fade-text { transition-delay:300ms; }
.intro-two.cover-fade-text { transition-delay:500ms; }
.edition strong.cover-fade-text { transition-delay:700ms; }
.edition span.cover-fade-text { transition-delay:900ms; }
.intro.cover-fade-text { white-space:nowrap; }
.intro-one { top:41.1667%; }
.intro-two { top:48%; }
.edition { position:absolute; right:5.208333%; top:74.333333%; text-align:right; }
.edition strong { display:block; font:700 1.5625cqw/1.066667 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 700; text-transform:uppercase; }
.edition span { display:block; margin-top:.9375cqw; font:400 1.041667cqw/1 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 400; text-transform:uppercase; }
.cover-material { right: auto; bottom: auto; pointer-events: auto; }
.cover-material img { display:block; width:100%; height:100%; object-fit:cover; border:.104167cqw solid #050505; pointer-events:none; }
.detail-one { left: 21.7708%; top: 44.6667%; width: 8.75%; height: 14%; transform-origin: 20% 80%; }
.detail-two { left: 11.6146%; top: 64.75%; width: 12.9167%; height: 20.6667%; transform-origin: 80% 20%; }
.detail-three { left: 73.4375%; top: 41.5%; width: 21.3542%; height: 30%; transform-origin: 20% 80%; }
.detail-three img { filter: grayscale(1); }
.cover-footer-asset { position:absolute; z-index:10; left:5.2083%; top:90.3333%; width:89.5834%; height:4%; object-fit:fill; pointer-events:none; }
.board-tall { aspect-ratio: 1920 / 1709; }
.board > img { display: block; width: 100%; height: 100%; object-fit: fill; user-select: none; }
.about-background { position: absolute; inset: 0; background: url('assets/about/background.webp') center/cover no-repeat #080909; }
.section-header-ui { position:absolute; z-index:8; left:5.208333%; width:89.583333%; height:1.666667cqw; display:flex; align-items:center; justify-content:space-between; color:#fff; pointer-events:none; }
.about-header-ui { top:4.681100%; }
.contact-header-ui { top:6.666667%; }
.section-header-brand { display:flex; align-items:center; gap:.625cqw; height:1.666667cqw; }
.section-header-brand > img { display:block; width:.833333cqw; height:.833333cqw; flex:none; object-fit:contain; }
.section-header-brand > span { display:block; color:#fff; font:600 .9375cqw/1.6 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 600; white-space:nowrap; }
.section-header-actions { display:block; width:4.84375cqw; height:1.666667cqw; flex:none; object-fit:contain; }
.about-title { position:absolute; left:5.2083%; top:14.0433%; color:#fff; font-family:'Stretch Pro',sans-serif; line-height:1.05; }
.about-title h2,.about-title strong { display:block; margin:0; font-size:8.333333cqw; letter-spacing:.1em; }
.about-title .variable-proximity,.projects-title .variable-proximity,.contact-title .variable-proximity { white-space:nowrap; }
.about-title strong { color: #9e5dfe; }
.about-role { position:absolute; right:5.2083%; top:23.9906%; display:flex; flex-direction:column; align-items:flex-end; color:#fff; font-family:'Alimama FangYuan','PingFang SC',sans-serif; }
.about-role > span { padding:.104167cqw .625cqw; background:rgba(255,255,255,.4); color:#191919; font-size:2.083333cqw; line-height:normal; font-weight:700; font-variation-settings:'wght' 700; }
.about-role > strong { margin-top:1.875cqw; color:#fff; font-size:2.5cqw; line-height:.833333; font-weight:700; font-variation-settings:'wght' 700; }
.photo-card { position:absolute; z-index:3; left:-3.9167%; top:42.547%; width:41.2708%; height:45.7417%; margin:0; transform:rotate(-2deg); transform-origin:4% 3%; transition:transform 600ms cubic-bezier(.16,.8,.2,1),filter 400ms ease; filter:drop-shadow(0 1.2cqw 2cqw rgba(0,0,0,.2)); }
.photo-card:hover { transform:rotate(-6deg); filter:drop-shadow(0 1.4cqw 2.2cqw rgba(0,0,0,.3)); }
.photo-card img { display: block; width: 100%; height: 100%; object-fit: contain; }
.profile-panel { position: absolute; left: 4.8958%; top: 40.5501%; width: 90.2084%; height: 50.9069%; }
.profile-frame-asset { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:fill; pointer-events:none; }
.profile-panel span,.profile-panel p,.profile-panel h3,.profile-panel time { margin:0; }
.profile-name,.profile-age { position:absolute; top:2.7586%; display:flex; flex-direction:column; align-items:flex-start; color:#fff; }
.profile-name { left:41.8014%; }
.profile-age { left:71.2471%; }
.profile-name > span,.profile-age > span { color:rgba(255,255,255,.6); font:400 1.25cqw/1.666667 'Alimama FangYuan','PingFang SC',sans-serif; }
.profile-name > strong,.profile-age > strong { color:#fff; font:700 4.583333cqw/1.136364 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 700; }
.profile-contact,.profile-education { position:absolute; top:22.7586%; color:rgba(255,255,255,.89); font:400 1.25cqw/1.666667 'Alimama FangYuan','PingFang SC',sans-serif; white-space:nowrap; }
.profile-contact { left:41.8014%; }
.profile-education { left:71.2471%; }
.profile-contact > span,.profile-education > span { color:rgba(255,255,255,.6); }
.experience { position:absolute; left:41.8014%; width:55.8891%; color:#fff; font-family:'Alimama FangYuan','PingFang SC',sans-serif; }
.experience-one { top:34.2529%; }
.experience-two { top:68.9655%; }
.experience > img { position:absolute; left:-5.2686%; top:.5747%; width:3.719%; height:auto; }
.experience time { display:block; color:rgba(255,255,255,.6); font:400 1.25cqw/1.25 'Alimama FangYuan','PingFang SC',sans-serif; }
.experience h3 { margin-top:1.041667cqw; color:#fff; font:700 1.458333cqw/1.4286 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 700; white-space:nowrap; }
.experience p { margin-top:1.041667cqw; color:rgba(255,255,255,.8); font:400 .9375cqw/2.1111 'Alimama FangYuan','PingFang SC',sans-serif; }
.profile-photo-caption { position:absolute; left:1.6166%; top:91.2644%; color:rgba(255,255,255,.4); font:400 .625cqw/1.3333 'Alimama FangYuan','PingFang SC',sans-serif; }
.profile-panel.reveal { opacity:1; filter:none; transform:none; transition:none; }
.reveal { opacity:.04; filter:blur(.52cqw); transform:translateY(calc(var(--reveal-y,1) * 3.125cqw)); transition:opacity 1050ms cubic-bezier(.2,.7,.2,1),filter 1100ms ease,transform 1100ms cubic-bezier(.16,.8,.2,1); }
.reveal.is-visible { opacity:1; filter:blur(0); transform:translateY(0); }
.about-header-ui.reveal { transition-delay:0ms; }
.about-title.reveal { transition-delay:180ms; }
.about-role.reveal { transition-delay:360ms; }
.profile-panel.reveal { transition-delay:560ms; }
.next { position: absolute; inset: auto 0 0; height: 13%; cursor: s-resize; }
.projects-background { position:absolute; inset:0; background:url('assets/projects/background.webp') center/cover no-repeat #080909; }
.projects-ticker { position:absolute; z-index:10; left:0; top:0; width:100%; height:4.6811%; overflow:hidden; background:#050505; color:#fff; }
.ticker-track { display:flex; width:max-content; height:100%; align-items:center; animation:ticker-scroll 16s linear infinite; }
.ticker-group { display:flex; flex:none; width:auto; height:100%; align-items:center; gap:3.541667cqw; padding-left:1.822917cqw; padding-right:1.71875cqw; color:rgba(255,255,255,.4); font:400 2.291667cqw/1 'Stretch Pro',sans-serif; font-kerning:none; letter-spacing:.04em; text-transform:uppercase; white-space:nowrap; }
.ticker-group span { display:block; flex:none; }
.ticker-group img { display:block; width:1.875cqw; height:1.875cqw; flex:none; opacity:.4; }
@keyframes ticker-scroll { to { transform:translateX(-33.333333%); } }
.projects-title { position:absolute; top:14.0433%; left:50%; width:max-content; transform:translateX(-50%); text-align:center; font-family:'Stretch Pro',sans-serif; line-height:1.0946; }
.projects-title h2,.projects-title strong { display:block; margin:0; color:#fff; font-size:7.708333cqw; letter-spacing:.1em; }
.projects-title strong { color:#9e5dfe; }
.project-prompt { position:absolute; top:35.1083%; left:50%; width:max-content; transform:translateX(-50%); display:flex; align-items:center; justify-content:center; gap:clamp(24px,2.604167cqw,50px); margin:0; color:#fff; white-space:nowrap; font:700 2.1875cqw/1 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 700; }
.project-prompt > img { display:block; width:1.145833cqw; height:1.875cqw; flex:none; opacity:.72; transform-origin:center; animation:project-arrow-float-left 1.6s ease-in-out infinite alternate; }
.project-prompt > img:last-child { animation-name:project-arrow-float-right; animation-delay:0s; }
.project-prompt > span { display:inline-block; width:max-content; min-width:0; flex:none; text-align:center; }
@keyframes project-arrow-float-left { from { transform:translateX(.3125cqw) scale(.96); opacity:.58; } to { transform:translateX(-.416667cqw) scale(1.08); opacity:.9; } }
@keyframes project-arrow-float-right { from { transform:translateX(-.3125cqw) scale(.96); opacity:.58; } to { transform:translateX(.416667cqw) scale(1.08); opacity:.9; } }
.project-grid { position:absolute; left:12.8125%; top:43.8853%; width:74.375%; height:45.5237%; display:grid; grid-template-columns:repeat(3,1fr); grid-template-rows:repeat(2,1fr); column-gap:1.6807%; row-gap:2.3136%; }
.project-grid button { --card-reveal-progress:var(--scroll-reveal-progress,1); --card-reveal-direction:var(--scroll-reveal-direction,1); position:relative; z-index:1; min-width:0; min-height:0; padding:0; overflow:hidden; border:0; background:transparent; cursor:pointer; transform:perspective(41.666667cqw) translateY(calc(var(--card-reveal-direction) * (1 - var(--card-reveal-progress)) * 2.604167cqw)) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) scale(var(--tilt-scale,1)) scaleY(calc(1.42 - var(--card-reveal-progress) * .42)); transform-style:preserve-3d; transform-origin:center; will-change:transform,opacity; transition:box-shadow 300ms ease; }
.project-grid button:hover,.project-grid button:focus-visible { z-index:5; outline:none; box-shadow:0 1.2cqw 1.5cqw rgba(0,0,0,.45); }
.project-cover { position:absolute; z-index:1; left:0; top:15.3439%; width:100%; height:84.6561%; box-sizing:border-box; overflow:hidden; border-left:1px solid rgba(255,255,255,.2); border-right:1px solid rgba(255,255,255,.2); pointer-events:none; transform:translateZ(0); }
.project-cover img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:cover; object-position:center; pointer-events:none; }
.project-grid button::after { content:''; position:absolute; z-index:2; left:var(--cursor-x,85%); top:var(--cursor-y,10%); width:50%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,color-mix(in srgb,var(--accent) 76%,white 12%) 0%,color-mix(in srgb,var(--accent) 40%,transparent) 30%,transparent 70%); opacity:0; filter:blur:.9375cqw; transform:translate(-50%,-50%) scale(.7); transition:opacity 220ms ease,transform 320ms ease; pointer-events:none; mix-blend-mode:screen; }
.project-grid button:hover::after,.project-grid button:focus-visible::after { opacity:.72; transform:translate(-50%,-50%) scale(1); }
.card-glass { position:absolute; z-index:3; left:0; top:2.6455%; width:100%; height:12.6984%; display:block; overflow:hidden; border-top:.052083cqw solid rgba(255,255,255,.2); border-right:.052083cqw solid rgba(255,255,255,.2); border-left:.052083cqw solid rgba(255,255,255,.2); border-bottom:0; background:rgba(34,36,39,.5); -webkit-backdrop-filter:blur(5.208333cqw); backdrop-filter:blur(5.208333cqw); color:#f7f7f7; font:700 .833333cqw/1 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 700; pointer-events:none; transform:translateZ(1.5625cqw); }
.project-grid button:hover .card-glass,.project-grid button:focus-visible .card-glass { -webkit-backdrop-filter:blur(5.208333cqw); backdrop-filter:blur(5.208333cqw); }
.card-glass b { position:absolute; left:3.913%; top:0; width:72%; height:100%; display:flex; align-items:center; gap:.5em; overflow:hidden; white-space:nowrap; font-style:normal; font-weight:700; text-align:left; }
.card-glass b > img { width:1em; height:1em; flex:none; object-fit:contain; }
.card-glass b > span { overflow:hidden; text-overflow:ellipsis; }
.project-tag { position:absolute; z-index:4; right:0; top:0; width:23.0435%; height:15.3439%; background:var(--tag-image) center/100% 100% no-repeat; pointer-events:none; transform:translateZ(1.5625cqw); }
.reveal-project { opacity:.025; filter:blur(.625cqw); transition:opacity 1050ms cubic-bezier(.2,.7,.2,1),filter 1150ms ease,transform 1150ms cubic-bezier(.16,.8,.2,1); }
.project-grid.reveal-project { filter:none; }
.projects.is-visible .reveal-project { opacity:1; filter:blur(0); }
.projects.is-visible .projects-title,.projects.is-visible .project-prompt { transform:translateX(-50%) translateY(0); }
.projects-title { transform:translateX(-50%) translateY(calc(var(--reveal-y,1) * 3.645833cqw)); transition-delay:0ms; }
.project-prompt { transform:translateX(-50%) translateY(calc(var(--reveal-y,1) * 3.125cqw)); transition-delay:420ms; }
.project-grid { transform:translateY(calc(var(--reveal-y,1) * 3.645833cqw)); transition-delay:860ms; }
.projects.is-visible .project-grid { transform:translateY(0); }
.contact { color:#fff; background:#000; }
.contact-background { position:absolute; inset:0; overflow:hidden; background:url('assets/contact/background.webp') center/cover no-repeat #000; }
.contact-title { position:absolute; left:5.2083%; top:15.1667%; font:400 7.708333cqw/1.0946 'Stretch Pro',sans-serif; color:#fff; text-transform:uppercase; }
.contact-title h2,.contact-title strong { display:block; margin:0; font:inherit; letter-spacing:0; }
.contact-copy { position:absolute; left:5.2083%; top:43.5%; width:24.9479%; margin:0; color:#fff; font:400 1.041667cqw/1.8 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 400; }
.contact-actions { position:absolute; left:5.2083%; top:79.6667%; display:flex; align-items:center; gap:2.5cqw; }
.contact-reveal { opacity:.025; filter:blur(.625cqw); transform:translateY(calc(var(--reveal-y,1) * 3.645833cqw)); transition:opacity 1050ms cubic-bezier(.2,.7,.2,1),filter 1150ms ease,transform 1150ms cubic-bezier(.16,.8,.2,1); }
.contact.is-visible .contact-reveal { opacity:1; filter:blur(0); transform:translateY(0); }
.contact-reveal-header { transition-delay:0ms; }
.contact-reveal-title { transition-delay:200ms; }
.contact-reveal-copy { transition-delay:460ms; }
.contact-reveal-actions { transition-delay:760ms; }
.contact-email,.contact-projects { display:flex; align-items:center; gap:1.458333cqw; padding:1.458333cqw 2.083333cqw; border:0; border-radius:1.458333cqw; white-space:nowrap; font:600 1.666667cqw/1.5 'Alimama FangYuan','PingFang SC',sans-serif; font-variation-settings:'wght' 600; text-decoration:none; cursor:pointer; }
.contact-email { width:auto; color:#000; background:#fff; overflow:hidden; transition:width 320ms cubic-bezier(.2,.75,.2,1),transform 180ms ease; }
.contact-email > span:last-child { display:block; transition:opacity 140ms ease,transform 180ms ease; }
.contact-email.is-changing > span:last-child { opacity:.55; transform:translateY(.104167cqw); }
.contact-icon-stack,.contact-projects img { position:relative; display:block; width:2.083333cqw; height:2.083333cqw; flex:none; }
.contact-email-icon { position:absolute; inset:0; display:block; width:100%; height:100%; opacity:0; transform:scale(.72); transition:opacity 180ms ease,transform 220ms cubic-bezier(.2,.75,.2,1); }
.contact-email .icon-mail { opacity:1; transform:scale(1); }
.contact-email:is(:hover,:focus-visible) .icon-mail { opacity:0; transform:scale(.72); }
.contact-email:is(:hover,:focus-visible) .icon-copy { opacity:1; transform:scale(1); }
.contact-email.is-copied .icon-mail,.contact-email.is-copied .icon-copy { opacity:0; transform:scale(.72); }
.contact-email.is-copied .icon-check { opacity:1; transform:scale(1); }
.contact-email:focus-visible,.contact-projects:focus-visible { outline:.104167cqw solid rgba(255,255,255,.8); outline-offset:.208333cqw; }
.contact-projects { color:#fff; background:rgba(255,255,255,.1); -webkit-backdrop-filter:blur(.520833cqw); backdrop-filter:blur(.520833cqw); transition:background 180ms ease,transform 180ms ease; }
.contact-projects:hover { background:rgba(255,255,255,.16); transform:translateX(.208333cqw); }
.shiny-hover-text { display:inline; color:inherit; font:inherit; letter-spacing:inherit; line-height:inherit; }
.target-shiny-text { cursor:default; }
@media (hover:hover) {
  .shiny-hover-text:hover { background-image:linear-gradient(120deg,color-mix(in srgb,currentColor 78%,#777 22%) 0%,color-mix(in srgb,currentColor 78%,#777 22%) 35%,#fff 50%,color-mix(in srgb,currentColor 78%,#777 22%) 65%,color-mix(in srgb,currentColor 78%,#777 22%) 100%); background-size:200% auto; background-position:150% center; background-clip:text; -webkit-background-clip:text; -webkit-text-fill-color:transparent; animation:shiny-text-sweep 2s linear infinite; }
  .target-shiny-text:hover,.target-shiny-text:hover > span { background-image:linear-gradient(120deg,color-mix(in srgb,currentColor 78%,#777 22%) 0%,color-mix(in srgb,currentColor 78%,#777 22%) 35%,#fff 50%,color-mix(in srgb,currentColor 78%,#777 22%) 65%,color-mix(in srgb,currentColor 78%,#777 22%) 100%); background-size:200% auto; background-position:150% center; background-clip:text; -webkit-background-clip:text; -webkit-text-fill-color:transparent; animation:shiny-text-sweep 2s linear infinite; }
}
@keyframes shiny-text-sweep { from { background-position:150% center; } to { background-position:-50% center; } }
.scroll-progress-reveal { --scroll-reveal-progress:0; --scroll-reveal-direction:1; opacity:var(--scroll-reveal-progress)!important; filter:none!important; transition:none!important; transform-origin:center; }
.scroll-progress-reveal:not(.projects-title):not(.project-prompt):not(.project-grid):not(.project-card-scroll-reveal):not(.media-scroll-reveal):not(.profile-text-scroll-reveal) { transform:translateY(calc(var(--scroll-reveal-direction) * (1 - var(--scroll-reveal-progress)) * 3.125cqw)) scaleY(calc(1.42 - var(--scroll-reveal-progress) * .42))!important; }
.projects-title.scroll-progress-reveal,.project-prompt.scroll-progress-reveal { transform:translateX(-50%) translateY(calc(var(--scroll-reveal-direction) * (1 - var(--scroll-reveal-progress)) * 3.125cqw)) scaleY(calc(1.42 - var(--scroll-reveal-progress) * .42))!important; }
.project-grid.scroll-progress-reveal { transform:translateY(calc(var(--scroll-reveal-direction) * (1 - var(--scroll-reveal-progress)) * 3.645833cqw)) scaleY(calc(1.18 - var(--scroll-reveal-progress) * .18))!important; }
.project-card-scroll-reveal { opacity:var(--scroll-reveal-progress)!important; filter:none!important; }
.media-scroll-reveal { transform:translateY(calc(var(--scroll-reveal-direction) * (1 - var(--scroll-reveal-progress)) * 2.604167cqw)) scaleY(calc(1.42 - var(--scroll-reveal-progress) * .42))!important; transform-origin:center; }
.profile-text-scroll-reveal { opacity:var(--scroll-reveal-progress)!important; transform:translateY(calc((1 - var(--scroll-reveal-progress)) * 1.25cqw)) scaleY(calc(1.18 - var(--scroll-reveal-progress) * .18))!important; transform-origin:left top; }
.scroll-progress-reveal.variable-proximity .variable-proximity-letter,.scroll-progress-reveal .variable-proximity-letter { opacity:1!important; filter:none!important; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } .ticker-track,.shiny-hover-text,.target-shiny-text,.cover-person-media,.cover-material,.project-prompt > img { animation:none!important; } .project-grid button,.photo-card,.reveal,.reveal-project,.cover-fade-text,.contact-reveal,.variable-proximity.blur-text .variable-proximity-letter { transition:none; } .reveal,.reveal-project,.cover-fade-text,.contact-reveal,.variable-proximity.blur-text .variable-proximity-letter { opacity:1; filter:none; transform:none; } .scroll-progress-reveal { opacity:1!important; filter:none!important; transform:none!important; } .projects-title.scroll-progress-reveal,.project-prompt.scroll-progress-reveal { transform:translateX(-50%)!important; } }
