Refactor app architecture and clean local artifacts

This commit is contained in:
AzuTear
2026-06-24 23:43:14 +02:00
parent 17134b3b82
commit fef1d36fe8
274 changed files with 37724 additions and 6065 deletions
@@ -0,0 +1,521 @@
.loader {
position: absolute;
inset: 0;
display: grid;
place-items: center;
overflow: hidden;
background:
radial-gradient(circle at 50% -10%, rgba(255, 255, 255, 0.22), transparent 36%),
linear-gradient(180deg, #160a26 0%, #25103c 38%, #38205f 68%, #1c0e2e 100%);
isolation: isolate;
}
.loader__nebula {
position: absolute;
border-radius: 50%;
filter: blur(48px);
opacity: 0.88;
mix-blend-mode: screen;
animation: nebulaDrift 16s ease-in-out infinite;
}
.loader__nebula--violet {
top: -6%;
left: -4%;
width: 520px;
height: 520px;
background: radial-gradient(circle, rgba(120, 88, 231, 0.72) 0%, rgba(120, 88, 231, 0.08) 46%, transparent 72%);
}
.loader__nebula--rose {
right: -8%;
top: 14%;
width: 440px;
height: 440px;
background: radial-gradient(circle, rgba(255, 162, 221, 0.56) 0%, rgba(255, 162, 221, 0.08) 48%, transparent 74%);
animation-delay: -5s;
}
.loader__nebula--gold {
left: 24%;
bottom: -18%;
width: 520px;
height: 420px;
background: radial-gradient(circle, rgba(238, 190, 98, 0.34) 0%, rgba(238, 190, 98, 0.06) 42%, transparent 72%);
animation-delay: -9s;
}
.loader__vignette {
position: absolute;
inset: 0;
pointer-events: none;
background: radial-gradient(circle at 50% 42%, transparent 0%, rgba(17, 7, 30, 0.08) 42%, rgba(12, 3, 20, 0.5) 100%);
}
.loader__starfield {
position: absolute;
inset: -20%;
background-repeat: repeat;
pointer-events: none;
}
.loader__starfield--far {
opacity: 0.38;
background-image:
radial-gradient(circle, rgba(255, 255, 255, 0.88) 0 1px, transparent 1.6px),
radial-gradient(circle, rgba(211, 194, 255, 0.66) 0 1px, transparent 1.8px);
background-size: 180px 180px, 240px 240px;
background-position: 0 0, 60px 100px;
animation: starDriftFar 44s linear infinite;
}
.loader__starfield--mid {
opacity: 0.56;
background-image:
radial-gradient(circle, rgba(255, 247, 232, 0.9) 0 1.3px, transparent 2px),
radial-gradient(circle, rgba(193, 167, 255, 0.9) 0 1px, transparent 1.9px);
background-size: 130px 130px, 190px 190px;
background-position: 20px 30px, 90px 120px;
animation: starDriftMid 28s linear infinite;
}
.loader__starfield--near {
opacity: 0.72;
background-image:
radial-gradient(circle, rgba(255, 255, 255, 0.98) 0 1.6px, transparent 2.3px),
radial-gradient(circle, rgba(255, 216, 165, 0.92) 0 1.2px, transparent 2px);
background-size: 110px 110px, 170px 170px;
background-position: 0 0, 55px 85px;
animation: starDriftNear 18s linear infinite;
}
.loader__constellation {
position: absolute;
inset: 0;
pointer-events: none;
}
.constellation-star {
position: absolute;
color: #fbe9ff;
text-shadow:
0 0 10px rgba(255, 240, 255, 0.65),
0 0 28px rgba(184, 143, 255, 0.42);
animation: constellationTwinkle 3.8s ease-in-out infinite;
}
.constellation-star--1 { top: 15%; left: 22%; font-size: 18px; animation-delay: 0s; }
.constellation-star--2 { top: 24%; right: 24%; font-size: 24px; animation-delay: .6s; }
.constellation-star--3 { top: 32%; left: 72%; font-size: 15px; animation-delay: 1.1s; }
.constellation-star--4 { bottom: 23%; left: 18%; font-size: 20px; animation-delay: 1.5s; }
.constellation-star--5 { bottom: 18%; right: 21%; font-size: 17px; animation-delay: 2s; }
.constellation-star--6 { top: 48%; left: 11%; font-size: 13px; animation-delay: 2.4s; }
.loader__scene {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
align-items: center;
width: min(640px, calc(100% - 40px));
text-align: center;
}
.loader__tableau {
position: relative;
width: 340px;
height: 230px;
margin-bottom: 26px;
animation: tableauFloat 6s ease-in-out infinite;
}
.loader__aurora {
position: absolute;
top: 34px;
width: 210px;
height: 118px;
border-radius: 999px;
filter: blur(22px);
opacity: 0.82;
mix-blend-mode: screen;
}
.loader__aurora--violet {
left: 24px;
background: linear-gradient(90deg, rgba(148, 118, 248, 0.08) 0%, rgba(196, 160, 255, 0.6) 46%, rgba(255, 205, 233, 0.3) 100%);
animation: auroraDrift 7s ease-in-out infinite;
}
.loader__aurora--peach {
position: absolute;
right: 18px;
top: 56px;
width: 190px;
background: linear-gradient(90deg, rgba(255, 216, 179, 0.08) 0%, rgba(255, 212, 171, 0.42) 42%, rgba(255, 170, 218, 0.28) 100%);
animation: auroraDrift 7s ease-in-out infinite -2.4s;
}
.loader__hanger {
position: absolute;
top: 0;
width: 58px;
display: flex;
flex-direction: column;
align-items: center;
animation: hangerSwing 4.6s ease-in-out infinite;
}
.loader__hanger--left {
left: 62px;
animation-delay: -0.4s;
}
.loader__hanger--center {
left: 142px;
}
.loader__hanger--right {
right: 58px;
animation-delay: -0.9s;
}
.loader__thread {
position: absolute;
top: 0;
width: 1px;
height: 72px;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.32) 0%, rgba(215, 193, 255, 0.62) 100%);
}
.loader__charm {
position: absolute;
top: 62px;
width: 42px;
height: 42px;
display: grid;
place-items: center;
border-radius: 16px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 239, 255, 0.98) 100%);
color: #fffdf7;
font-size: 23px;
box-shadow:
0 0 18px rgba(255, 233, 195, 0.32),
0 14px 28px rgba(26, 10, 45, 0.18);
}
.loader__charm--star {
color: #d39aff;
}
.loader__charm--moon {
color: #f6c56d;
font-size: 25px;
}
.loader__charm--spark {
color: #ffd8ec;
}
.loader__mist {
position: absolute;
bottom: 38px;
height: 66px;
border-radius: 999px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 239, 255, 0.98) 72%, rgba(232, 214, 255, 0.96) 100%);
box-shadow:
inset 0 -10px 14px rgba(190, 166, 237, 0.22),
0 18px 34px rgba(18, 7, 33, 0.2);
}
.loader__mist::before,
.loader__mist::after {
content: '';
position: absolute;
border-radius: 50%;
background: inherit;
}
.loader__mist--left {
left: 22px;
width: 126px;
}
.loader__mist--left::before {
width: 54px;
height: 54px;
left: 14px;
top: -18px;
}
.loader__mist--left::after {
width: 68px;
height: 68px;
right: 12px;
top: -26px;
}
.loader__mist--center {
left: 90px;
bottom: 24px;
width: 164px;
z-index: 1;
}
.loader__mist--center::before {
width: 82px;
height: 82px;
left: 16px;
top: -34px;
}
.loader__mist--center::after {
width: 72px;
height: 72px;
right: 18px;
top: -24px;
}
.loader__mist--right {
right: 18px;
width: 118px;
}
.loader__mist--right::before {
width: 54px;
height: 54px;
left: 10px;
top: -18px;
}
.loader__mist--right::after {
width: 48px;
height: 48px;
right: 12px;
top: -12px;
}
.loader__dissolve {
position: absolute;
inset: 0;
z-index: 8;
pointer-events: none;
}
.loader__dissolve-dot {
position: absolute;
opacity: 0;
}
.loader__dissolve-lines {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
overflow: visible;
opacity: 1;
}
.loader__dissolve-line {
opacity: 0;
stroke: rgba(255, 245, 226, 0.92);
stroke-width: 2;
stroke-linecap: round;
filter: drop-shadow(0 0 10px rgba(255, 233, 202, 0.45));
stroke-dasharray: 1;
stroke-dashoffset: 1;
vector-effect: non-scaling-stroke;
}
.loader__dissolve-dot {
width: 10px;
height: 10px;
border-radius: 50%;
background: rgba(255, 248, 236, 0.96);
box-shadow:
0 0 16px rgba(255, 238, 206, 0.95),
0 0 34px rgba(198, 166, 255, 0.55);
transform: scale(0.4);
}
.loader__dissolve-dot--one { left: 50px; top: 58px; }
.loader__dissolve-dot--two { left: 155px; top: 35px; }
.loader__dissolve-dot--three { left: 285px; top: 75px; }
.loader__dissolve-dot--four { left: 82px; top: 150px; }
.loader__dissolve-dot--five { left: 190px; top: 132px; }
.loader__dissolve-dot--six { left: 292px; top: 188px; }
.loader__dissolve-dot--seven { left: 218px; top: 208px; }
.loader__dissolve-dot--eight { left: 36px; top: 200px; }
.loader__copy {
max-width: 620px;
padding: 0 18px;
}
.loader__eyebrow {
margin-bottom: 10px;
color: #b693ff;
font-family: 'Outfit', sans-serif;
font-size: 12px;
font-weight: 800;
letter-spacing: 0.28em;
text-transform: uppercase;
}
.loader__title {
max-width: 600px;
margin: -4px auto 12px;
padding: 6px 0 10px;
color: #fff8fd;
font-family: 'Cormorant Garamond', serif;
font-size: clamp(42px, 5.4vw, 66px);
line-height: 1.08;
font-weight: 700;
overflow: visible;
text-wrap: balance;
text-shadow: 0 8px 34px rgba(19, 7, 37, 0.52);
}
.loader__text {
max-width: 500px;
margin: 0 auto;
color: rgba(240, 231, 255, 0.82);
font-family: 'Outfit', sans-serif;
font-size: 17px;
line-height: 1.8;
text-shadow: 0 4px 18px rgba(15, 5, 28, 0.28);
}
.loader__outro-text {
max-width: 520px;
margin: 0 auto;
color: rgba(255, 248, 235, 0.96);
font-family: 'Outfit', sans-serif;
font-size: 17px;
font-weight: 700;
line-height: 1.7;
opacity: 0;
transform: translateY(10px) scale(0.98);
text-shadow: 0 2px 10px rgba(15, 5, 28, 0.24);
}
@keyframes nebulaDrift {
0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
50% { transform: translate3d(26px, -20px, 0) scale(1.08); }
}
@keyframes starDriftFar {
from { transform: translate3d(0, 0, 0); }
to { transform: translate3d(-120px, 80px, 0); }
}
@keyframes starDriftMid {
from { transform: translate3d(0, 0, 0); }
to { transform: translate3d(-180px, 120px, 0); }
}
@keyframes starDriftNear {
from { transform: translate3d(0, 0, 0); }
to { transform: translate3d(-220px, 160px, 0); }
}
@keyframes constellationTwinkle {
0%, 100% { opacity: 0.26; transform: translateY(0) scale(0.9); }
50% { opacity: 1; transform: translateY(-8px) scale(1.16); }
}
@keyframes tableauFloat {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-7px); }
}
@keyframes auroraDrift {
0%, 100% { transform: translate3d(0, 0, 0) scale(1); opacity: 0.78; }
50% { transform: translate3d(10px, -8px, 0) scale(1.04); opacity: 1; }
}
@keyframes hangerSwing {
0%, 100% { transform: rotate(-3deg); }
50% { transform: rotate(3deg); }
}
@media (max-width: 640px) {
.loader__scene {
width: min(100%, calc(100% - 24px));
}
.loader__tableau {
width: 250px;
height: 182px;
margin-bottom: 14px;
}
.loader__aurora {
width: 150px;
height: 90px;
}
.loader__hanger--left {
left: 38px;
}
.loader__hanger--center {
left: 104px;
}
.loader__hanger--right {
right: 36px;
}
.loader__thread {
height: 58px;
}
.loader__charm {
top: 48px;
width: 34px;
height: 34px;
font-size: 18px;
}
.loader__charm--moon {
font-size: 20px;
}
.loader__mist {
height: 52px;
}
.loader__mist--left {
left: 12px;
width: 90px;
}
.loader__mist--center {
left: 62px;
width: 122px;
bottom: 18px;
}
.loader__mist--right {
right: 12px;
width: 84px;
}
.loader__dissolve {
transform: scale(0.74);
transform-origin: top left;
}
.loader__text {
font-size: 15px;
line-height: 1.6;
}
.loader__title {
font-size: clamp(34px, 9vw, 48px);
line-height: 1.1;
padding-bottom: 8px;
}
}