@@ -26,15 +26,11 @@ const flyRoundTrip = keyframes`
2626 12% { transform: translateX(-15vw) translateY(-20px) scaleX(1); }
2727 25% { transform: translateX(-50vw) translateY(-40px) scaleX(1); }
2828 37% { transform: translateX(-85vw) translateY(-10px) scaleX(1); }
29-
3029 49.9% { transform: translateX(-120vw) translateY(60px) scaleX(1); }
31-
3230 50% { transform: translateX(-120vw) translateY(60px) scaleX(-1); }
33-
3431 62% { transform: translateX(-85vw) translateY(-10px) scaleX(-1); }
3532 75% { transform: translateX(-50vw) translateY(-40px) scaleX(-1); }
3633 87% { transform: translateX(-15vw) translateY(-20px) scaleX(-1); }
37-
3834 100% { transform: translateX(20vw) translateY(20px) scaleX(-1); }
3935` ;
4036
@@ -73,7 +69,6 @@ const DragonWrapper = styled.div`
7369 width: 250px;
7470 height: 180px;
7571 animation: ${ flyRoundTrip } 40s linear infinite;
76- will-change: transform;
7772
7873 @media (max-width: ${ MobileBreakpoint } ) {
7974 width: 100px;
@@ -104,33 +99,20 @@ const BaseCloud = styled.div`
10499 opacity: 0.9;
105100 animation: ${ float } 6s ease-in-out infinite;
106101 pointer-events: none;
107-
108- img {
109- object-fit: contain;
110- }
111102` ;
112103
113104const LeftCloud = styled ( BaseCloud ) `
114105 top: 33%;
115106 left: 2%;
116107 width: 180px;
117108 height: 100px;
118-
119- @media (max-width: ${ MobileBreakpoint } ) {
120- top: 20%;
121- left: 3%;
122- }
123109` ;
124110
125111const RightCloud = styled ( BaseCloud ) `
126112 top: 38%;
127113 right: 4%;
128114 width: 200px;
129115 height: 110px;
130-
131- @media (max-width: ${ MobileBreakpoint } ) {
132- right: 1%;
133- }
134116` ;
135117
136118const CenterCloudLeft = styled ( BaseCloud ) `
@@ -198,62 +180,87 @@ const RibbonContainer = styled.div`
198180 width: 100%;
199181 display: flex;
200182 justify-content: center;
201-
202- @media (max-width: ${ MobileBreakpoint } ) {
203- top: -60px;
204- }
205183` ;
206184
207185const RibbonImageWrapper = styled . div `
208186 position: relative;
209- width: clamp(280px, 90vw, 480px );
187+ width: clamp(320px, 95vw, 620px );
210188 aspect-ratio: 45 / 8;
211189` ;
212190
213191const CharacterGrid = styled . div `
214192 display: flex;
215- gap: 150px ;
193+ gap: 75px ;
216194 margin-top: 100px;
217- width: 100%;
218195 justify-content: center;
219- align-items: flex-end;
220196
221197 @media (max-width: ${ MobileBreakpoint } ) {
222198 gap: 70px;
223199 margin-top: 220px;
224200 }
225201` ;
226202
227- const CharacterCard = styled . a `
203+ const CharacterCard = styled . div `
228204 position: relative;
229205 display: flex;
230206 flex-direction: column;
231207 align-items: center;
232- text-decoration: none;
208+ width: 220px;
209+ cursor: not-allowed;
233210 transition: transform 0.2s ease;
234- width: 180px;
235211
236212 &:hover {
237213 transform: translateY(-5px);
238214 }
239215
216+ &:hover div[data-coming-soon] {
217+ opacity: 1;
218+ }
219+
240220 @media (max-width: ${ MobileBreakpoint } ) {
241221 width: 42%;
242222 max-width: 150px;
243223 }
244224` ;
245225
226+ const ComingSoon = styled . div `
227+ position: absolute;
228+ inset: 0;
229+ background: rgba(255, 255, 255, 0.7);
230+ backdrop-filter: blur(1px);
231+ color: ${ Colors . Black } ;
232+ display: flex;
233+ align-items: center;
234+ justify-content: center;
235+ font-family: ${ montserrat . style . fontFamily } ;
236+ font-weight: 700;
237+ letter-spacing: 2px;
238+ text-transform: uppercase;
239+ opacity: 0;
240+ transition: opacity 0.25s ease;
241+ z-index: 5;
242+
243+ border-top-left-radius: 160px;
244+ border-top-right-radius: 160px;
245+
246+ clip-path: polygon(
247+ 0% 100%,
248+ 100% 100%,
249+ 90% 12%,
250+ 75% 0%,
251+ 50% -4%,
252+ 25% 0%,
253+ 10% 12%
254+ );
255+ ` ;
256+
246257const StackedImages = styled . div `
247258 position: relative;
248259 width: 100%;
249- height: 190px ;
260+ height: 230px ;
250261 display: flex;
251262 justify-content: center;
252263 align-items: flex-end;
253-
254- @media (max-width: ${ MobileBreakpoint } ) {
255- height: 140px;
256- }
257264` ;
258265
259266const ArchBg = styled ( Image ) `
@@ -268,13 +275,8 @@ const CharacterImg = styled(Image)`
268275 position: relative;
269276 z-index: 2;
270277 width: 70%;
271- height: auto;
272278 margin-bottom: 30px;
273279 filter: drop-shadow(0 5px 5px rgba(0, 0, 0, 0.2));
274-
275- @media (max-width: ${ MobileBreakpoint } ) {
276- margin-bottom: 20px;
277- }
278280` ;
279281
280282const CharacterLabel = styled . div `
@@ -337,7 +339,6 @@ export default function Hero() {
337339 width = { 700 }
338340 height = { 260 }
339341 alt = "Hack UPC"
340- priority
341342 />
342343 </ DesktopLogo >
343344
@@ -347,7 +348,6 @@ export default function Hero() {
347348 width = { 374 }
348349 height = { 170 }
349350 alt = "Hack UPC"
350- priority
351351 />
352352 </ MobileLogo >
353353 </ LogoContainer >
@@ -360,7 +360,7 @@ export default function Hero() {
360360 </ RibbonContainer >
361361
362362 < CharacterGrid >
363- < CharacterCard href = "#" target = "_blank" >
363+ < CharacterCard >
364364 < StackedImages >
365365 < ArchBg src = "/arch.svg" fill alt = "Arch" />
366366 < CharacterImg
@@ -371,9 +371,10 @@ export default function Hero() {
371371 />
372372 </ StackedImages >
373373 < CharacterLabel > HACKER</ CharacterLabel >
374+ < ComingSoon data-coming-soon > Coming soon</ ComingSoon >
374375 </ CharacterCard >
375376
376- < CharacterCard href = "#" target = "_blank" >
377+ < CharacterCard >
377378 < StackedImages >
378379 < ArchBg src = "/arch.svg" fill alt = "Arch" />
379380 < CharacterImg
@@ -384,6 +385,7 @@ export default function Hero() {
384385 />
385386 </ StackedImages >
386387 < CharacterLabel > VOLUNTEER</ CharacterLabel >
388+ < ComingSoon data-coming-soon > Coming soon</ ComingSoon >
387389 </ CharacterCard >
388390 </ CharacterGrid >
389391 </ CharactersSection >
0 commit comments