1+ * {
2+ margin : 0 ;
3+ padding : 0 ;
4+ box-sizing : border-box;
5+ }
6+
7+ body {
8+ background : linear-gradient (to bottom, # 1e3a5f 0% , # 2c5f7f 100% );
9+ height : 100vh ;
10+ display : flex;
11+ justify-content : center;
12+ align-items : center;
13+ overflow : hidden;
14+ }
15+
16+ .scene {
17+ position : relative;
18+ width : 600px ;
19+ height : 500px ;
20+ }
21+
22+ .waterfall {
23+ position : absolute;
24+ top : 0 ;
25+ left : 50% ;
26+ transform : translateX (-50% );
27+ width : 200px ;
28+ height : 350px ;
29+ display : flex;
30+ justify-content : space-around;
31+ }
32+
33+ .stream {
34+ width : 20px ;
35+ height : 100% ;
36+ background : linear-gradient (to bottom,
37+ rgba (173 , 216 , 230 , 0.8 ) 0% ,
38+ rgba (135 , 206 , 250 , 0.9 ) 50% ,
39+ rgba (100 , 180 , 220 , 1 ) 100% );
40+ border-radius : 10px ;
41+ animation : flow 1.5s linear infinite;
42+ opacity : 0.7 ;
43+ box-shadow : 0 0 10px rgba (135 , 206 , 250 , 0.5 );
44+ }
45+
46+ .stream1 { animation-delay : 0s ; }
47+ .stream2 { animation-delay : 0.1s ; }
48+ .stream3 { animation-delay : 0.2s ; }
49+ .stream4 { animation-delay : 0.3s ; }
50+ .stream5 { animation-delay : 0.4s ; }
51+ .stream6 { animation-delay : 0.5s ; }
52+ .stream7 { animation-delay : 0.6s ; }
53+ .stream8 { animation-delay : 0.7s ; }
54+
55+ .pool {
56+ position : absolute;
57+ bottom : 50px ;
58+ left : 50% ;
59+ transform : translateX (-50% );
60+ width : 300px ;
61+ height : 60px ;
62+ background : linear-gradient (to bottom,
63+ rgba (100 , 180 , 220 , 0.8 ) 0% ,
64+ rgba (70 , 130 , 180 , 0.9 ) 100% );
65+ border-radius : 50% ;
66+ box-shadow : 0 0 30px rgba (135 , 206 , 250 , 0.6 ),
67+ inset 0 -10px 20px rgba (0 , 0 , 0 , 0.2 );
68+ }
69+
70+ .ripple {
71+ position : absolute;
72+ top : 50% ;
73+ left : 50% ;
74+ transform : translate (-50% , -50% );
75+ width : 50px ;
76+ height : 10px ;
77+ border : 2px solid rgba (173 , 216 , 230 , 0.6 );
78+ border-radius : 50% ;
79+ animation : rippleEffect 2s ease-out infinite;
80+ }
81+
82+ .ripple1 { animation-delay : 0s ; }
83+ .ripple2 { animation-delay : 0.7s ; }
84+ .ripple3 { animation-delay : 1.4s ; }
85+
86+ .splash-container {
87+ position : absolute;
88+ bottom : 110px ;
89+ left : 50% ;
90+ transform : translateX (-50% );
91+ width : 100px ;
92+ height : 50px ;
93+ }
94+
95+ .drop {
96+ position : absolute;
97+ width : 8px ;
98+ height : 8px ;
99+ background : radial-gradient (circle, rgba (173 , 216 , 230 , 0.9 ) 0% , rgba (135 , 206 , 250 , 0.6 ) 100% );
100+ border-radius : 50% ;
101+ animation : splash 1.5s ease-out infinite;
102+ }
103+
104+ .drop1 {
105+ left : 30% ;
106+ animation-delay : 0s ;
107+ }
108+
109+ .drop2 {
110+ left : 50% ;
111+ animation-delay : 0.2s ;
112+ }
113+
114+ .drop3 {
115+ left : 70% ;
116+ animation-delay : 0.4s ;
117+ }
118+
119+ .drop4 {
120+ left : 40% ;
121+ animation-delay : 0.6s ;
122+ }
123+
124+ .drop5 {
125+ left : 60% ;
126+ animation-delay : 0.8s ;
127+ }
128+
129+ @keyframes flow {
130+ 0% {
131+ transform : translateY (-100% ) scaleY (0.8 );
132+ opacity : 0 ;
133+ }
134+ 10% {
135+ opacity : 0.7 ;
136+ }
137+ 100% {
138+ transform : translateY (100% ) scaleY (1.2 );
139+ opacity : 0.9 ;
140+ }
141+ }
142+
143+ @keyframes rippleEffect {
144+ 0% {
145+ width : 50px ;
146+ height : 10px ;
147+ opacity : 1 ;
148+ }
149+ 100% {
150+ width : 250px ;
151+ height : 50px ;
152+ opacity : 0 ;
153+ }
154+ }
155+
156+ @keyframes splash {
157+ 0% {
158+ transform : translate (0 , 0 ) scale (1 );
159+ opacity : 1 ;
160+ }
161+ 50% {
162+ transform : translate (var (--x , 20px ), -30px ) scale (0.8 );
163+ opacity : 0.8 ;
164+ }
165+ 100% {
166+ transform : translate (var (--x , 40px ), 10px ) scale (0.3 );
167+ opacity : 0 ;
168+ }
169+ }
170+
171+ .drop1 { --x : -25px ; }
172+ .drop2 { --x : 0px ; }
173+ .drop3 { --x : 25px ; }
174+ .drop4 { --x : -15px ; }
175+ .drop5 { --x : 15px ; }
0 commit comments