4141 --mobile-row-inline : clamp (52px , 11.8vw , 60px );
4242 --mobile-menu-inline : clamp (36px , 8.4vw , 46px );
4343 --page-top-offset : calc (env (safe-area-inset-top, 0px ) + 12px + var (--nav-pill-height-desktop ) + 28px );
44+ --home-ui-shift : 0px ;
45+ --home-ui-opacity : 1 ;
46+ --home-image-scroll-scale : 1 ;
47+ --home-image-presence : 1 ;
48+ --home-image-base-opacity : 1 ;
49+ --home-image-base-brightness : 1 ;
50+ --home-image-base-contrast : 1 ;
51+ --home-image-silhouette-opacity : 0 ;
52+ --home-image-silhouette-brightness : 1.36 ;
53+ --home-image-silhouette-contrast : 1.12 ;
54+ --home-backdrop-opacity : 1 ;
55+ --home-content-layer-lift : 0px ;
4456}
4557
4658* {
88100 z-index : 1 ;
89101}
90102
103+ .page-content-layer ,
104+ .site-footer {
105+ position : relative;
106+ z-index : 1 ;
107+ transform : translate3d (0 , calc (-1 * var (--home-content-layer-lift )), 0 );
108+ will-change : transform;
109+ }
110+
91111.site-nav {
92112 position : relative;
93113 inset : auto;
@@ -1000,8 +1020,8 @@ a {
10001020.hero {
10011021 --hero-top-pad : calc (var (--page-top-offset ) + clamp (0.75rem , 1.15vw , 1.3rem ));
10021022 --hero-content-bottom-gap : clamp (3rem , 4.1vw , 4.2rem );
1003- --hero-extra-tail : 0px ;
10041023 --hero-stage-min : 0px ;
1024+ --home-transition-span : clamp (7rem , 14vh , 11rem );
10051025 --hero-stage-height : calc (var (--hero-initial-viewport-height , 100svh ) - var (--hero-top-pad ) - var (--hero-content-bottom-gap ));
10061026 --hero-stage-reference : max (var (--hero-stage-height ), var (--hero-stage-min ));
10071027 --hero-image-size : clamp (30rem , calc (var (--hero-stage-reference ) * 1.06 ), 60rem );
@@ -1013,28 +1033,48 @@ a {
10131033 position : relative;
10141034 margin-top : calc (var (--page-top-offset ) * -1 );
10151035 min-height : max (
1016- calc (var (--hero-initial-viewport-height , 100svh ) + var (--hero-extra-tail )),
1017- calc (var (--hero-top-pad ) + var (--hero-stage-min ) + var (--hero-content-bottom-gap ) + var (--hero-extra-tail ))
1036+ calc (var (--hero-initial-viewport-height , 100svh ) + var (--home-transition-span )),
1037+ calc (var (--hero-top-pad ) + var (--hero-stage-min ) + var (--hero-content-bottom-gap ) + var (--home-transition-span ))
10181038 );
10191039 padding-top : var (--hero-top-pad );
1020- padding-bottom : calc (var (--hero-content-bottom-gap ) + var (--hero-extra-tail ));
1021- background : # 000 ;
1040+ padding-bottom : calc (var (--hero-content-bottom-gap ) + var (--home-transition-span ));
1041+ background : transparent ;
10221042 overflow : clip;
10231043 isolation : isolate;
10241044}
10251045
10261046.hero-layout {
10271047 position : relative;
1048+ position : sticky;
1049+ top : var (--hero-top-pad );
10281050 min-height : var (--hero-stage-reference );
1051+ z-index : 2 ;
1052+ isolation : isolate;
1053+ }
1054+
1055+ .hero-layout ::before {
1056+ content : "" ;
1057+ position : absolute;
1058+ left : 50% ;
1059+ top : calc (-1 * var (--hero-top-pad ));
1060+ width : 100vw ;
1061+ height : calc (var (--hero-stage-reference ) + var (--hero-top-pad ) + var (--hero-content-bottom-gap ));
1062+ transform : translateX (-50% );
1063+ background : # 000 ;
1064+ opacity : var (--home-backdrop-opacity );
1065+ pointer-events : none;
1066+ z-index : 0 ;
1067+ will-change : opacity;
10291068}
10301069
10311070.hero-stage {
10321071 position : relative;
10331072 min-height : inherit;
1073+ z-index : 1 ;
10341074 isolation : isolate;
10351075}
10361076
1037- .hero-image-wrap ::after {
1077+ .hero-image-frame ::after {
10381078 content : "" ;
10391079 position : absolute;
10401080 left : -3% ;
@@ -1054,9 +1094,18 @@ a {
10541094 display : grid;
10551095 place-items : center;
10561096 width : min (var (--hero-image-size ), var (--hero-image-max-inline ));
1057- transform : translate (-50% , -50% );
1097+ transform : translate (-50% , -50% ) scale ( var ( --home-image-scroll-scale )) ;
10581098 overflow : visible;
10591099 pointer-events : none;
1100+ opacity : var (--home-image-presence );
1101+ will-change : transform, opacity;
1102+ }
1103+
1104+ .hero-image-frame {
1105+ position : relative;
1106+ display : grid;
1107+ place-items : center;
1108+ width : 100% ;
10601109 will-change : transform, opacity;
10611110}
10621111
@@ -1073,6 +1122,21 @@ a {
10731122.hero-home-image--base {
10741123 position : relative;
10751124 z-index : 1 ;
1125+ opacity : var (--home-image-base-opacity );
1126+ filter :
1127+ brightness (var (--home-image-base-brightness ))
1128+ contrast (var (--home-image-base-contrast ));
1129+ }
1130+
1131+ .hero-home-image--silhouette {
1132+ position : relative;
1133+ z-index : 2 ;
1134+ opacity : var (--home-image-silhouette-opacity );
1135+ mix-blend-mode : screen;
1136+ filter :
1137+ brightness (var (--home-image-silhouette-brightness ))
1138+ contrast (var (--home-image-silhouette-contrast ))
1139+ saturate (0.86 );
10761140}
10771141
10781142.hero-kicker {
@@ -1084,6 +1148,9 @@ a {
10841148 justify-content : space-between;
10851149 gap : 1rem ;
10861150 padding : 0 ;
1151+ transform : translate3d (0 , calc (-1 * var (--home-ui-shift )), 0 );
1152+ opacity : var (--home-ui-opacity );
1153+ will-change : transform, opacity;
10871154}
10881155
10891156.hero-meta {
@@ -1212,18 +1279,22 @@ a {
12121279 opacity : 1 ;
12131280}
12141281
1215- .js .hero-image-wrap {
1216- transform : translate ( -50 % , calc ( -50 % + 1.2rem ) ) scale (1.055 );
1282+ .js .hero-image-frame {
1283+ transform : translate3d ( 0 , 1.2rem , 0 ) scale (1.055 );
12171284}
12181285
1219- .js .hero-image-wrap ::after {
1286+ .js .hero-image-frame ::after {
12201287 opacity : 0 ;
12211288}
12221289
12231290.js .hero-home-image--base {
12241291 opacity : 0 ;
12251292}
12261293
1294+ .js .hero-home-image--silhouette {
1295+ opacity : 0 ;
1296+ }
1297+
12271298.js body .hero-ready .hero-shape-fill {
12281299 animation :
12291300 hero-mask-reveal-script 860ms cubic-bezier (0.18 , 0.92 , 0.24 , 1 ) 90ms forwards,
@@ -1250,11 +1321,11 @@ a {
12501321 hero-glow-pass 1120ms cubic-bezier (0.22 , 0.88 , 0.24 , 1 ) 970ms forwards;
12511322}
12521323
1253- .js body .hero-ready .hero-image-wrap {
1324+ .js body .hero-ready .hero-image-frame {
12541325 animation : hero-image-entrance 2480ms cubic-bezier (0.18 , 0.9 , 0.22 , 1 ) 120ms forwards;
12551326}
12561327
1257- .js body .hero-ready .hero-image-wrap ::after {
1328+ .js body .hero-ready .hero-image-frame ::after {
12581329 animation : hero-image-gradient-settle 2480ms cubic-bezier (0.18 , 0.9 , 0.22 , 1 ) 120ms forwards;
12591330}
12601331
@@ -1327,11 +1398,11 @@ a {
13271398
13281399@keyframes hero-image-entrance {
13291400 0% {
1330- transform : translate ( -50 % , calc ( -50 % + 1.2rem ) ) scale (1.055 );
1401+ transform : translate3d ( 0 , 1.2rem , 0 ) scale (1.055 );
13311402 }
13321403
13331404 100% {
1334- transform : translate ( -50 % , -50 % ) scale (1 );
1405+ transform : translate3d ( 0 , 0 , 0 ) scale (1 );
13351406 }
13361407}
13371408
@@ -1368,6 +1439,9 @@ a {
13681439 justify-content : space-between;
13691440 gap : clamp (1.6rem , 3vw , 3.4rem );
13701441 padding : 0 ;
1442+ transform : translate3d (0 , calc (-1 * var (--home-ui-shift )), 0 );
1443+ opacity : var (--home-ui-opacity );
1444+ will-change : transform, opacity;
13711445}
13721446
13731447.hero-actions {
@@ -1396,13 +1470,7 @@ a {
13961470}
13971471
13981472# about ::after {
1399- content : "" ;
1400- position : absolute;
1401- inset : 0 0 auto;
1402- z-index : 0 ;
1403- height : clamp (6rem , 11vw , 9rem );
1404- pointer-events : none;
1405- background : linear-gradient (180deg , # 000 0% , rgba (0 , 0 , 0 , 0.96 ) 18% , rgba (0 , 0 , 0 , 0.72 ) 52% , rgba (0 , 0 , 0 , 0 ) 100% );
1473+ content : none;
14061474}
14071475
14081476# about > .container {
@@ -1690,6 +1758,7 @@ a {
16901758 position : relative;
16911759 width : 100vw ;
16921760 margin-left : calc (50% - 50vw );
1761+ isolation : isolate;
16931762 overflow-x : hidden;
16941763 padding-inline :
16951764 max (env (safe-area-inset-left, 0px ), 0px )
@@ -1700,6 +1769,7 @@ a {
17001769
17011770.discipline-stack-stage {
17021771 position : relative;
1772+ z-index : 1 ;
17031773 width : min (calc (100% - 1.5rem ), 1380px );
17041774 margin : 0 auto;
17051775 padding :
@@ -1711,14 +1781,13 @@ a {
17111781
17121782.stack-loading-overlay {
17131783 position : absolute;
1714- inset :
1715- var ( --discipline-stack-pad-top )
1716- var ( --discipline-stack-pad-inline )
1717- var ( --discipline-stack-pad-bottom );
1784+ inset : 0 ;
1785+ left : 50 % ;
1786+ width : 100 vw ;
1787+ transform : translateX ( -50 % );
17181788 z-index : 24 ;
17191789 display : grid;
17201790 place-items : center;
1721- border-radius : 40px ;
17221791 opacity : 1 ;
17231792 visibility : visible;
17241793 pointer-events : none;
@@ -1731,13 +1800,12 @@ a {
17311800 content : "" ;
17321801 position : absolute;
17331802 inset : 0 ;
1734- border-radius : inherit;
17351803 background :
1736- linear-gradient (180deg , rgba (11 , 11 , 15 , 0.64 ) 0% , rgba (7 , 7 , 10 , 0.76 ) 100% );
1737- border : 1px solid rgba (243 , 242 , 238 , 0.08 );
1804+ linear-gradient (180deg , rgba (10 , 10 , 14 , 0.48 ) 0% , rgba (8 , 8 , 11 , 0.72 ) 100% );
17381805 backdrop-filter : blur (18px ) saturate (0.82 );
17391806 -webkit-backdrop-filter : blur (18px ) saturate (0.82 );
1740- box-shadow : inset 0 0 0 1px rgba (255 , 255 , 255 , 0.02 );
1807+ -webkit-mask : linear-gradient (90deg , transparent 0% , # 000 8% , # 000 92% , transparent 100% );
1808+ mask : linear-gradient (90deg , transparent 0% , # 000 8% , # 000 92% , transparent 100% );
17411809}
17421810
17431811.stack-loading-spinner {
@@ -2367,7 +2435,7 @@ a {
23672435 .hero {
23682436 --hero-top-pad : calc (var (--page-top-offset ) + 0.45rem );
23692437 --hero-content-bottom-gap : 2.12rem ;
2370- --hero-extra-tail : clamp (1.45 rem , 5.4 vw , 2.1 rem );
2438+ --home-transition-span : clamp (8 rem , 15 vh , 10.5 rem );
23712439 --hero-image-size : clamp (29rem , calc (var (--hero-stage-reference ) * 0.96 ), 52rem );
23722440 --hero-image-max-inline : 110vw ;
23732441 --hero-tagline-base-size : clamp (2.25rem , min (calc (var (--hero-stage-reference ) * 0.1 ), 11.2cqi ), 3.35rem );
@@ -2532,6 +2600,7 @@ a {
25322600
25332601 .hero {
25342602 --hero-stage-min : 20.75rem ;
2603+ --home-transition-span : clamp (6rem , 11vh , 8rem );
25352604 }
25362605
25372606 .discipline-stack-shell {
@@ -2583,6 +2652,15 @@ a {
25832652 scroll-behavior : auto;
25842653 }
25852654
2655+ .hero {
2656+ --home-transition-span : 0px !important ;
2657+ }
2658+
2659+ .page-content-layer ,
2660+ .site-footer {
2661+ transform : none !important ;
2662+ }
2663+
25862664 .button ,
25872665 .project-stack-card ,
25882666 .project-stack-card__surface ,
@@ -2633,6 +2711,14 @@ a {
26332711 transform : translate (-50% , -50% ) scale (1 ) !important ;
26342712 }
26352713
2714+ .hero-image-frame {
2715+ opacity : 1 !important ;
2716+ filter : none !important ;
2717+ animation : none !important ;
2718+ transition : none !important ;
2719+ transform : none !important ;
2720+ }
2721+
26362722 .hero-home-image--base {
26372723 opacity : 1 !important ;
26382724 filter : none !important ;
@@ -2641,7 +2727,14 @@ a {
26412727 transform : none !important ;
26422728 }
26432729
2644- .hero-image-wrap ::after {
2730+ .hero-home-image--silhouette {
2731+ opacity : 0 !important ;
2732+ filter : none !important ;
2733+ animation : none !important ;
2734+ transition : none !important ;
2735+ }
2736+
2737+ .hero-image-frame ::after {
26452738 opacity : 1 !important ;
26462739 animation : none !important ;
26472740 transition : none !important ;
0 commit comments