@property --shift { syntax: ""; inherits: false; initial-value: 0; } :root { --labs-sys-color-background: #111; --labs-sys-color-on-background: white; --base-speed: 4s; --labs-sys-color-grid: #fac4ff; --labs-sys-color-grid-glow: #df7373; --labs-sys-color-sun-1: #fdb428; --labs-sys-color-sun-2: #f672ca; --labs-sys-color-sun-glow: #b9f; --labs-sys-color-star: #f6c0c0; --color-palm-trunk: #333; --color-palm-leaf: #333; --color-palm-leaf-2: #b9f; --labs-sys-color-triangle: #6eccee; --labs-sys-color-volume: var(--labs-sys-color-triangle); } @mixin sun-lines { $lines: ""; $end: 0; $lineCount: 8; @for $i from 1 to $lineCount { $start: $i + $end; $end: $start + $lineCount - $i; $lines: $lines + " #000 calc(#{$start}% + (3.5% * var(--shift))), 0%, #0000 calc(#{$end}% + (2.8% * var(--shift))), 0%,"; } $lines: $lines + "#000 calc(56% + (2.5% * var(--shift)))"; --shift: 1; mask: linear-gradient(to top, #{$lines}); mask-size: 100% 120%; animation: sun calc(var(--base-speed) / 4) linear infinite; } .delorean { position: absolute; bottom: 0; z-index: 11111; right: 0; left: 0; display: flex; justify-content: center; animation: delorean 30s ease infinite; perspective: 1000px; } @keyframes delorean { from { transform: translateY(0); } 9% { transform: translateX(-2vmin) ; } 20% { transform: translateX(0); } 50% { transform: translate(-.05vmin, 6vmin) scale(1.5); } to { transform: translateY(0); } } .sun { position: relative; width: min(40vmin, 40%); aspect-ratio: 1; border-radius: 50%; &:after { content: ""; position: absolute; inset: 0; @include sun-lines; border-radius: inherit; background-image: linear-gradient( to bottom, var(--labs-sys-color-sun-1), var(--labs-sys-color-sun-2) 60% ); } &:before { content: ""; position: absolute; inset: 0; background-image: linear-gradient( to top, var(--labs-sys-color-sun-1), var(--labs-sys-color-sun-2) 55%, var(--labs-sys-color-triangle) 65%, var(--labs-sys-color-sun-2) 69% ); border-radius: inherit; transform: translateY(100%) rotateX(40deg) scaleY(1.2); perspective: 6.25rem; filter: blur(20px); } filter: drop-shadow(0 0 4rem var(--labs-sys-color-sun-glow)); } @keyframes sun { from { --shift: 1; } to { --shift: 3.8; } } .top-lines { background: linear-gradient( to bottom, var(--labs-sys-color-sun-2) .2vmin, transparent .2vmin, ); background-size: 125rem .4vmin; position: absolute; inset: 0; mix-blend-mode: overlay; opacity: 0.06; pointer-events: none; } .top { padding-top: 4rem; display: flex; flex: 1; justify-content: center; align-items: flex-end; position: relative; &:after { content: ""; position: absolute; bottom: -0.5vmin; left: 0; right: 0; background: #222; height: 5vmin; clip-path: polygon( 0% 38%, 2.6% 40%, 5.4% 24%, 8.7% 59%, 13.6% 72%, 18.5% 22%, 21.7% 35%, 27.2% 8%, 34% 53%, 39.4% 81%, 49.1% 85%, 54.5% 64%, 60% 53%, 71.4% 80%, 73.4% 15%, 79.8% 29%, 86.5% 15%, 94.1% 36%, 100% 27%, 100% 100%, 0% 100% ); } &:before { content: ""; position: absolute; bottom: -1vmin; left: 0; right: 0; background: rgba(0, 0, 0, 0.2); mix-blend-mode: soft-light; height: 15vmin; backdrop-filter: blur(20px); clip-path: polygon( 0% 38%, 2.6% 40%, 5.4% 24%, 8.7% 59%, 13.6% 72%, 18.5% 22%, 21.7% 35%, 27.2% 8%, 34% 53%, 39.4% 81%, 49.1% 85%, 54.5% 64%, 60% 53%, 71.2% 70%, 76.6% 24%, 81.4% 0%, 87.1% 13%, 94.2% 27%, 100% 32%, 100% 100%, 0% 100% ); } } .bottom-overlay { perspective: 14.5rem; flex: 0 0 12.5rem; position: absolute; z-index: 10000; right: 0; left: 0; bottom: 0; height: 12.5rem; background: radial-gradient( ellipse at center, transparent 50%, rgba(30, 30, 30, 0.9) 70% ); } .bottom { background: inherit; perspective: 14.5rem; flex: 0 0 12.5rem; position: relative; &:before { content: ""; position: absolute; inset: 0; --line-width: 0.0635rem; background: linear-gradient( to right, var(--labs-sys-color-grid) var(--line-width), transparent var(--line-width) ), linear-gradient( to bottom, var(--labs-sys-color-grid) var(--line-width), transparent var(--line-width) ); background-size: 2rem 125rem, 125rem 2rem; transform: rotateX(53deg) scale(1.8) translateZ(43px); animation: grid calc(var(--base-speed) * 1) linear infinite; border-top: 1px solid var(--labs-sys-color-grid); filter: drop-shadow(0 0 2px var(--labs-sys-color-grid-glow)); } } @keyframes grid { from { background-position-y: -30rem; } to { background-position-y: 0%; } } #stars { position: absolute; top: 0; right: 0; bottom: 20rem; overflow: hidden; left: 0; z-index: -1; .star { position: absolute; background: var(--labs-sys-color-star); width: 0.15rem; height: 0.15rem; border-radius: 50%; transform: translate(var(--x), var(--y)); box-shadow: 0 0 0.25rem var(--labs-sys-color-sun-glow); } animation: stars 20s linear; } @keyframes stars{ from { transform: translateX(0); } 60%{ transform: translateX(3vmax) rotate(1deg); } to { transform: translateX(0); } } .palm { &:not(.small) { animation: palm-shaking 5s linear infinite; } &.small { animation: small-palm-shaking 4s linear inifinte; } } @keyframes palm-shaking { from { transform: translate(10vmin, 0vmin) rotate(6deg); } 50% { transform: translate(10.5vmin, 0vmin) rotate(9deg); } to { transform: translate(10vmin, 0vmin) rotate(6deg); } } @keyframes small-palm-shaking { from { transform: translate(9vmin, 9vmin) scale(0.4) rotate(344deg) skewX(5deg); } 50% { transform: translate(9vmin, 9vmin) scale(0.4) rotate(356deg) skewX(5deg); } to { transform: translate(9vmin, 9vmin) scale(0.4) rotate(344deg) skewX(5deg); } } .startails { position: absolute; inset: 0; overflow: hidden; mix-blend-mode: lighten; } .startail-r { position: absolute; left: 75vw; bottom: 0; background: linear-gradient( to right, var(--labs-sys-color-sun-glow) 10%, var(--labs-sys-color-triangle) 50%, transparent 80% ); height: 0.2vmin; width: 15vmin; border-radius: 50%; filter: drop-shadow(0 0 15px white); transform: translateY(-32vmin) rotate(-20deg); } .startail-l { position: absolute; left: 16vw; bottom: 0; background: linear-gradient( to right, var(--labs-sys-color-sun-glow) 10%, var(--labs-sys-color-triangle) 30%, transparent 60% ); height: 0.2vmin; width: 17vmin; border-radius: 50%; filter: drop-shadow(0 0 15px white); transform: translateY(-7vmin) rotate(-20deg); } .startail-m { position: absolute; left: 18vw; bottom: 0; background: linear-gradient( to right, var(--labs-sys-color-sun-glow) 10%, var(--labs-sys-color-triangle) 50%, transparent 80% ); height: 0.2vmin; width: 14vmin; border-radius: 50%; filter: drop-shadow(0 0 15px white); transform: translateY(-18vmin) rotate(-20deg); opacity: 0.5; } html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; } .scene { display: flex; flex-direction: column; width: 100%; height: 100%; position: relative; } .scene:after { content: ""; position: fixed; /* Fixed ensures it spans the viewport */ top: 0; left: 0; width: 100vw; /* Explicitly set width to viewport width */ height: 100vh; /* Explicitly set height to viewport height */ pointer-events: none; background: url(/noise.svg); opacity: 0.7; mix-blend-mode: overlay; filter: invert(1); z-index: 20000; } body { background-color: var(--labs-sys-color-background); color: var(--labs-sys-color-on-background); height: 100vh; width: 100vw; overflow: hidden; color: var(--labs-sys-color-triangle); } #volume { position: fixed; left: 2.5vmin; bottom: 2.5vmin; width: 4rem; height: 4rem; display: grid; place-items: center; transition: background .3s ease; cursor: pointer; background: transparent; border: none; z-index: 42000; @media(hover){ &:hover { background: rgba(0,0,0,.5); } } &.playing { .play { display: block; } .muted { display: none; } } &:not(.playing) { .play { display: none; } .muted { display: block; } } } a.labs-follow-me { right: unset; left: -0.5rem; } * { user-select: none; box-sizing: border-box; outline-color: var(--labs-sys-color-sun-2); } @layer mShadow, mGradientStroke; @layer mShadow { h1 { /* Gradient and other styles */ color: transparent; text-fill-color: transparent; -webkit-text-fill-color: transparent; background-clip: text; -webkit-background-clip: text; font-size: 40px; paint-order: stroke fill; text-shadow: 3px 3px 0px cyan, 5px 5px 0px darkcyan; transition: all 0.5s; position: absolute; /* Make the h1 tags absolute to prevent shifting */ right: 20px; /* Position the text on the right */ z-index: 10; white-space: nowrap; /* Prevent text wrapping */ margin: 0; } h1 { font-variation-settings: "wght" 100, "ital" 1, "rota" 20; /* Multiple Shadows */ text-shadow: 3px 3px 0px #07bcccdd, 3px 3px 0px #e601c099, 8px 8px 0px #e9019a88, 12px 12px 0px #f4046877, 15px 15px 10px #48289666; animation: hithere 1s ease infinite; } h1:hover { font-variation-settings: "wght" 800, "ital" 0, "rota" 0; /* Slightly bolder weight on hover */ text-shadow: 10px 6px 0px #e601c0; /* Keep the original pink shadow with a slight blur */ -webkit-text-stroke: 1px rgba(251, 251, 251, 0.9); /* Softer text stroke */ transform: scale(1.08); /* A bit more scale for emphasis */ animation-play-state: paused; } } @keyframes hithere { 30% { transform: scale(1.026); } 40%, 60% { transform: rotate(-1.02deg) scale(1.026); } 50% { transform: rotate(1.02deg) scale(1.026); } 70% { transform: rotate(0deg) scale(1.026); } 100% { transform: scale(1.0); } } #animated-header { position: absolute; /* Keeps it fixed in place without shifting the page */ top: 20%; /* Position the header at the top */ right: 20px; /* Right-aligned */ z-index: 10; } /* Add margin-top for spacing between h1 tags */ #animated-header h1:nth-child(1) { top: 0; /* First h1 at the top */ } #animated-header h1:nth-child(2) { top: 65px; /* Adjust spacing between h1 tags */ } #animated-header h1:nth-child(3) { top: 125px; /* Adjust spacing between h1 tags */ } #animated-header h1:nth-child(4) { top: 190px; /* Adjust spacing between h1 tags */ } #animated-header h1:nth-child(5) { top: 250px; /* Adjust spacing between h1 tags */ } #animated-header a { text-decoration: none; /* Removes the underline */ color: inherit; /* Makes the link inherit the color from the surrounding text */ }