| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| .scene { |
| position: fixed; |
| inset: 0; |
| z-index: 0; |
| pointer-events: none; |
| overflow: hidden; |
| transform: translateZ(0); |
| will-change: transform; |
| |
| |
| |
| |
| |
| |
| |
| |
| background: transparent; |
| } |
|
|
| .layer { |
| position: absolute; |
| inset: 0; |
| will-change: transform; |
| } |
|
|
| |
| |
| |
| .layer-top { |
| position: fixed; |
| inset: 0; |
| z-index: 2; |
| pointer-events: none; |
| overflow: hidden; |
| will-change: transform; |
| } |
| .layer-top.layer-bubbles { z-index: 3; } |
|
|
| |
| |
| .layer-far-clouds { height: 200%; top: -50%; } |
| .layer-moon { height: 160%; top: -30%; } |
| .layer-mid-clouds { height: 180%; top: -40%; } |
|
|
|
|
| |
| .cloud-far { |
| position: absolute; |
| width: 340px; |
| opacity: 0.5; |
| filter: blur(6px); |
| color: var(--cloud); |
| } |
| .cloud-far.c1 { top: 12%; left: 8%; } |
| .cloud-far.c2 { top: 6%; left: 62%; transform: scale(1.3); } |
| .cloud-far.c3 { top: 38%; left: 78%; transform: scale(0.85); } |
| .cloud-far.c4 { top: 24%; left: 40%; transform: scale(1.1); opacity: 0.4; } |
|
|
| |
| @keyframes drift-far { |
| 0%, 100% { transform: translateX(0) scale(var(--s, 1)); } |
| 50% { transform: translateX(40px) scale(var(--s, 1)); } |
| } |
| .cloud-far { animation: drift-far 18s var(--ease-gentle) infinite; } |
| .cloud-far.c2 { --s: 1.3; animation-duration: 24s; } |
| .cloud-far.c3 { --s: 0.85; animation-duration: 20s; animation-delay: -6s; } |
| .cloud-far.c4 { --s: 1.1; animation-duration: 22s; animation-delay: -10s; } |
|
|
|
|
| |
| |
| |
| .moon { |
| position: absolute; |
| top: 8%; |
| right: 9%; |
| width: 96px; |
| height: 96px; |
| border-radius: 50%; |
| opacity: 0; |
| transition: opacity 1.2s var(--ease-soft); |
| } |
| .moon.is-visible { opacity: 0.9; } |
|
|
| .moon-disc { |
| position: absolute; |
| inset: 0; |
| border-radius: 50%; |
| |
| background: radial-gradient(circle at 34% 30%, |
| rgba(255, 251, 234, 0.78) 0%, |
| rgba(255, 233, 77, 0.66) 50%, |
| rgba(245, 178, 46, 0.58) 100%); |
| |
| -webkit-mask: radial-gradient(circle 50px at 30% 28%, transparent 96%, #000 100%); |
| mask: radial-gradient(circle 50px at 30% 28%, transparent 96%, #000 100%); |
| } |
|
|
|
|
| |
| .cloud-mid { |
| position: absolute; |
| width: 260px; |
| opacity: 0.78; |
| filter: blur(2px); |
| color: var(--cloud); |
| } |
| .cloud-mid.m1 { top: 22%; left: -10%; animation: drift-mid 38s linear infinite; } |
| .cloud-mid.m2 { top: 58%; left: 70%; animation: drift-mid 52s linear infinite; animation-delay: -18s; } |
| .cloud-mid.m3 { top: 44%; left: 30%; animation: drift-mid 46s linear infinite; animation-delay: -30s; transform: scale(0.7); } |
|
|
| @keyframes drift-mid { |
| from { transform: translateX(-30vw); } |
| to { transform: translateX(130vw); } |
| } |
|
|
|
|
| |
| .bubbles { |
| |
| } |
|
|
| .bubble { |
| position: absolute; |
| bottom: -110px; |
| border-radius: 50%; |
| |
| background: radial-gradient(circle at 30% 28%, |
| rgba(255, 255, 255, 0.5) 0%, |
| rgba(255, 255, 255, 0.12) 42%, |
| rgba(255, 143, 171, 0.06) 72%, |
| rgba(255, 143, 171, 0.02) 100%); |
| |
| border: 1px solid rgba(255, 255, 255, 0.42); |
| box-shadow: |
| inset -5px -7px 12px rgba(157, 170, 242, 0.22), |
| inset 4px 5px 10px rgba(255, 255, 255, 0.45), |
| 0 2px 10px rgba(157, 170, 242, 0.1); |
| animation: rise linear infinite; |
| will-change: transform, opacity; |
| } |
|
|
| |
| .bubble::after { |
| content: ""; |
| position: absolute; |
| top: 15%; |
| left: 19%; |
| width: 32%; |
| height: 32%; |
| border-radius: 50%; |
| background: radial-gradient(circle, rgba(255,255,255,0.95) 0%, rgba(255,255,255,0.25) 55%, transparent 75%); |
| } |
|
|
| @keyframes rise { |
| 0% { transform: translate(0, 0) rotate(0deg); opacity: 0; } |
| 8% { opacity: 0.75; } |
| 92% { opacity: 0.75; } |
| 100% { transform: translate(var(--sway, 24px), -115vh) rotate(var(--spin, 40deg)); opacity: 0; } |
| } |
|
|
| |
| main { |
| position: relative; |
| z-index: 1; |
| } |
|
|