-
setInputValue(e.target.value)}
+
setInputValue(e.target.value)}
onKeyPress={(e) => e.key === 'Enter' && handleSendMessage()}
placeholder="Gib eine Nachricht ein..."
/>
diff --git a/client/src/pages/Game/components/MusicSlider/MusicSlider.jsx b/client/src/pages/Game/components/MusicSlider/MusicSlider.jsx
index e377b1c..d54b4d9 100644
--- a/client/src/pages/Game/components/MusicSlider/MusicSlider.jsx
+++ b/client/src/pages/Game/components/MusicSlider/MusicSlider.jsx
@@ -32,7 +32,7 @@ export const MusicSlider = () => {
useEffect(() => {
const handleMouseMove = (e) => dragging && handleFrequencyChange(e);
const handleMouseUpGlobal = () => dragging && handleMouseUp();
-
+
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('mouseup', handleMouseUpGlobal);
@@ -83,25 +83,22 @@ export const MusicSlider = () => {
return (
)
diff --git a/client/src/pages/Game/components/MusicSlider/styles.sass b/client/src/pages/Game/components/MusicSlider/styles.sass
index 6372dbc..6333a4e 100644
--- a/client/src/pages/Game/components/MusicSlider/styles.sass
+++ b/client/src/pages/Game/components/MusicSlider/styles.sass
@@ -8,77 +8,169 @@
left: 0
right: 0
bottom: 0
- padding: 20px
- background-color: rgba(30, 30, 30, 0.5)
- backdrop-filter: blur(10px)
- border-radius: 20px
- margin: 20px
- z-index: 1
+ padding: 20px 30px 30px 30px
+ background: rgba(20, 20, 30, 0.75)
+ backdrop-filter: blur(15px)
+ border-radius: 30px 30px 0 0
+ margin: 0
+ z-index: 10
+ box-shadow: 0 -5px 30px rgba(0, 0, 0, 0.3), 0 -2px 10px rgba(255, 255, 255, 0.1)
+ border-top: 1px solid rgba(255, 255, 255, 0.3)
+ border-left: 1px solid rgba(255, 255, 255, 0.2)
+ border-right: 1px solid rgba(255, 255, 255, 0.2)
+ transition: transform 0.3s ease
+ width: 100%
.otamatone
display: flex
flex-direction: row
align-items: center
cursor: pointer
- padding: 10px
+ padding: 15px
width: 100%
+ max-width: 1200px
+ margin: 0 auto
.otamatone-neck
flex: 1
- height: 20px
- background: linear-gradient(135deg, #000, #444)
- border-radius: 10px
+ height: 40px
+ background: linear-gradient(135deg, #2c2c3a, #444455)
+ border-radius: 20px
position: relative
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5), inset 0 -2px 10px rgba(255, 255, 255, 0.15)
+ margin: 0 20px
+
+ &:before
+ content: ""
+ position: absolute
+ left: 0
+ right: 0
+ top: 0
+ height: 50%
+ border-radius: 20px 20px 0 0
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), transparent)
+ pointer-events: none
+
+ &:after
+ content: ""
+ position: absolute
+ left: 5%
+ right: 5%
+ top: 50%
+ height: 1px
+ background: rgba(255, 255, 255, 0.2)
+ pointer-events: none
.frequency-indicator
position: absolute
- top: -10px
- width: 20px
- height: 20px
- background-color: #ff0000
+ top: -20px
+ width: 40px
+ height: 40px
+ background: linear-gradient(135deg, $pink, darken($pink, 15%))
border-radius: 50%
transform: translateX(-50%)
+ box-shadow: 0 0 20px rgba(255, 107, 179, 0.7)
+ border: 2px solid rgba(255, 255, 255, 0.8)
+ z-index: 1
+ transition: transform 0.1s ease
+ cursor: grab
+
+ &:hover
+ transform: translateX(-50%) scale(1.1)
+
+ &:active
+ cursor: grabbing
+ transform: translateX(-50%) scale(0.95)
.note-marker
position: absolute
- top: -30px
- font-size: 24pt
+ top: -50px
+ font-size: 32pt
color: $white
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.7)
+ font-weight: bold
.otamatone-face
- width: 100px
- height: 100px
- background: radial-gradient(circle, #fff, #ddd)
+ width: 140px
+ height: 140px
+ background: radial-gradient(circle at 30% 30%, #fff, #f0f0f0)
border-radius: 50%
display: flex
flex-direction: column
align-items: center
justify-content: center
- position: absolute
+ position: relative
left: 0
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2)
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5), inset 0 -3px 10px rgba(0, 0, 0, 0.2), inset 0 3px 10px rgba(255, 255, 255, 0.8)
+ border: 1px solid rgba(255, 255, 255, 0.9)
+ margin-right: 15px
+
+ &:before
+ content: ""
+ position: absolute
+ width: 80%
+ height: 80%
+ border-radius: 50%
+ background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.9), transparent)
+ pointer-events: none
.otamatone-eyes
display: flex
justify-content: space-between
width: 60%
position: absolute
- top: 30px
+ top: 40px
.eye
- width: 15px
- height: 15px
+ width: 22px
+ height: 22px
background-color: #000
border-radius: 50%
+ position: relative
+ animation: blink 4s infinite ease-in-out
+
+ &:before
+ content: ""
+ position: absolute
+ width: 30%
+ height: 30%
+ background-color: #fff
+ border-radius: 50%
+ top: 15%
+ left: 15%
.left-eye
- margin-right: 10px
+ margin-right: 20px
.right-eye
- margin-left: 10px
+ margin-left: 20px
.otamatone-mouth
background-color: #000
border-radius: 50%
position: absolute
- bottom: 10px
\ No newline at end of file
+ bottom: 30px
+ width: 30px
+ height: 30px
+ transition: all 0.3s ease
+ animation: mouth-pulse 5s infinite alternate ease-in-out
+
+@keyframes blink
+ 0%, 90%, 100%
+ transform: scaleY(1)
+ 95%
+ transform: scaleY(0.1)
+
+@keyframes mouth-pulse
+ 0%, 100%
+ transform: scale(1)
+ 50%
+ transform: scale(1.2)
+
+@keyframes slider-enter
+ 0%
+ transform: translateY(100%)
+ opacity: 0
+ 100%
+ transform: translateY(0)
+ opacity: 1
\ No newline at end of file
diff --git a/client/src/pages/Game/styles.sass b/client/src/pages/Game/styles.sass
index 432c3d1..8925e12 100644
--- a/client/src/pages/Game/styles.sass
+++ b/client/src/pages/Game/styles.sass
@@ -6,7 +6,10 @@
align-items: center
justify-content: center
height: 100vh
+ width: 100vw
padding: 20px
+ position: relative
+ animation: page-fade-in 1s ease-in-out
.main-content
display: flex
@@ -15,7 +18,9 @@
justify-content: center
width: 100%
padding: 20px
- z-index: 1
+ z-index: 2
+ position: relative
+ animation: float-up 1.5s ease-out
.song-display
display: flex
@@ -28,27 +33,70 @@
text-align: center
h2
- font-size: 36pt
+ font-size: 52pt
color: $white
- margin-bottom: 20px
+ margin-bottom: 25px
+ position: relative
+ z-index: 2
+ background: linear-gradient(135deg, $pink, $blue 45%, $mint-green 65%, $yellow 85%, $pink)
+ background-size: 300% 100%
+ animation: title-shimmer 10s infinite alternate ease-in-out, title-float 6s infinite ease-in-out
+ -webkit-background-clip: text
+ background-clip: text
+ -webkit-text-fill-color: transparent
+ filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.7))
+ letter-spacing: 0.1em
+ font-weight: bold
+
+ &:before
+ content: "ToneGuessr"
+ position: absolute
+ z-index: -1
+ left: 0
+ top: 0
+ background: none
+ -webkit-text-fill-color: transparent
+ filter: blur(15px) brightness(1.3)
+ opacity: 0.6
+ width: 100%
+ height: 100%
.song-card
display: flex
flex-direction: row
align-items: center
- background-color: rgba(255, 255, 255, 0.1)
- padding: 20px
+ background: rgba(255, 255, 255, 0.08)
+ padding: 25px
border-radius: 20px
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5)
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.2), 0 0 20px rgba(255, 255, 255, 0.1)
backdrop-filter: blur(10px)
border: 1px solid rgba(255, 255, 255, 0.2)
max-width: 500px
+ transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ will-change: transform, box-shadow
+ transform: translateZ(0)
+ backface-visibility: hidden
+ animation: card-pulse 6s infinite alternate ease-in-out
+
+ &:hover
+ transform: translateY(-10px) scale(1.02)
+ box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(255, 255, 255, 0.15)
+ border: 1px solid rgba(255, 255, 255, 0.4)
img
- width: 100px
- height: 100px
- border-radius: 10px
- margin-right: 20px
+ width: 120px
+ height: 120px
+ border-radius: 15px
+ margin-right: 25px
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4)
+ transition: transform 0.3s ease
+ will-change: transform
+ transform: translateZ(0)
+ animation: album-rotate 10s infinite alternate ease-in-out
+
+ &:hover
+ transform: scale(1.1) rotate(5deg)
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5), 0 0 40px rgba(102, 204, 255, 0.3)
.song-info
display: flex
@@ -56,76 +104,227 @@
align-items: flex-start
.song-names
- font-size: 24pt
+ font-size: 28pt
color: $white
margin-bottom: 10px
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5)
+ animation: text-shimmer 5s infinite alternate ease-in-out
.song-description
- font-size: 14pt
+ font-size: 16pt
color: $border
+ opacity: 0.8
+ position: relative
+
+ &:after
+ content: ""
+ position: absolute
+ bottom: -5px
+ left: 0
+ width: 0%
+ height: 1px
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.7), transparent)
+ transition: all 0.4s ease
+
+ &:hover:after
+ width: 100%
.chat-window
width: 50%
- height: 400px
- background: rgba(255, 255, 255, 0.1)
+ height: 450px
+ background: rgba(255, 255, 255, 0.08)
backdrop-filter: blur(10px)
- border-radius: 10px
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1)
+ border-radius: 20px
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.2), 0 0 20px rgba(255, 255, 255, 0.1)
border: 1px solid rgba(255, 255, 255, 0.2)
display: flex
flex-direction: column
overflow: hidden
+ transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ will-change: box-shadow, border
+ transform: translateZ(0)
+ backface-visibility: hidden
+ animation: card-float 6s infinite ease-in-out alternate 0.5s
+
+ &:hover
+ box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(255, 255, 255, 0.15)
+ border: 1px solid rgba(255, 255, 255, 0.4)
.chat-header
display: flex
align-items: center
- padding: 10px
+ padding: 15px
background: rgba(30, 30, 30, 0.5)
border-bottom: 1px solid rgba(255, 255, 255, 0.2)
+
+ svg
+ font-size: 18pt
+ color: $white
+ filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5))
+ animation: icon-pulse 3s infinite alternate ease-in-out
.chat-title
- margin-left: 10px
- font-size: 16pt
+ margin-left: 15px
+ font-size: 18pt
color: $white
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5)
.chat-messages
flex: 1
padding: 10px
overflow-y: auto
color: $white
+ position: relative
+
+ &::-webkit-scrollbar
+ width: 8px
+ background: rgba(0, 0, 0, 0.2)
+ border-radius: 4px
+
+ &::-webkit-scrollbar-thumb
+ background: rgba(255, 255, 255, 0.2)
+ border-radius: 4px
+
+ &:hover
+ background: rgba(255, 255, 255, 0.3)
.message
margin-bottom: 10px
+ padding: 8px 12px
+ border-radius: 12px
+ background: rgba(255, 255, 255, 0.05)
+ backdrop-filter: blur(5px)
+ border: 1px solid rgba(255, 255, 255, 0.1)
+ transition: all 0.3s ease
+ animation: message-fade-in 0.5s ease-out
+
+ &:hover
+ background: rgba(255, 255, 255, 0.1)
+ transform: translateY(-2px)
.message-sender
font-weight: bold
+ color: $yellow
+ margin-right: 5px
.message-text
- margin-left: 10px
+ margin-left: 5px
.chat-input
display: flex
- padding: 10px
+ padding: 15px
background: rgba(30, 30, 30, 0.5)
border-top: 1px solid rgba(255, 255, 255, 0.2)
input
flex: 1
- padding: 10px
+ padding: 12px 15px
border: none
- border-radius: 5px
+ border-radius: 10px
outline: none
- background: $background
+ background: rgba(0, 0, 0, 0.3)
color: $white
+ font-family: 'Bangers', sans-serif
+ letter-spacing: 0.1rem
+ backdrop-filter: blur(5px)
+ transition: all 0.3s ease
+ will-change: box-shadow
+
+ &:focus
+ box-shadow: 0 0 20px rgba(255, 255, 255, 0.3)
+ background: rgba(0, 0, 0, 0.4)
button
- margin-left: 10px
- padding: 10px
- background-color: #203a43
- color: #fff
+ margin-left: 15px
+ padding: 12px 20px
+ background: linear-gradient(135deg, $purple, $blue)
+ color: $white
border: none
- border-radius: 5px
+ border-radius: 10px
cursor: pointer
-
+ font-family: 'Bangers', sans-serif
+ letter-spacing: 0.1rem
+ transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5)
+ will-change: transform, background, box-shadow
+ transform: translateZ(0)
+ position: relative
+ overflow: hidden
+
+ &:before
+ content: ""
+ position: absolute
+ top: -50%
+ left: -50%
+ width: 200%
+ height: 200%
+ background: radial-gradient(circle, rgba(255, 255, 255, 0.3) 0%, transparent 70%)
+ opacity: 0
+ transition: opacity 0.5s ease
+
&:hover
- background-color: #1e1e1e
\ No newline at end of file
+ transform: translateY(-3px) scale(1.05)
+ background: linear-gradient(135deg, lighten($purple, 5%), lighten($blue, 5%))
+ box-shadow: 0 0 20px rgba(102, 204, 255, 0.7)
+
+ &:before
+ opacity: 1
+ animation: rotate-background 5s linear infinite
+
+@keyframes subtle-text-glow
+ 0%, 100%
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.4)
+ 50%
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.6), 0 0 25px rgba(255, 255, 255, 0.3)
+
+@keyframes title-glow
+ 0%, 100%
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5), 0 0 30px rgba(102, 204, 255, 0.4)
+ 50%
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.7), 0 0 40px rgba(102, 204, 255, 0.6), 0 0 60px rgba(102, 204, 255, 0.3)
+
+@keyframes text-shimmer
+ 0%, 100%
+ opacity: 0.95
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5)
+ 50%
+ opacity: 1
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.7), 0 0 25px rgba(133, 255, 189, 0.5)
+
+@keyframes album-rotate
+ 0%, 100%
+ transform: rotate(-2deg)
+ 50%
+ transform: rotate(2deg)
+
+@keyframes icon-pulse
+ 0%, 100%
+ filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5))
+ transform: scale(1)
+ 50%
+ filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.8))
+ transform: scale(1.1)
+
+@keyframes message-fade-in
+ 0%
+ opacity: 0
+ transform: translateY(10px)
+ 100%
+ opacity: 1
+ transform: translateY(0)
+
+@keyframes title-shimmer
+ 0%
+ background-position: 0% 50%
+ 50%
+ background-position: 100% 50%
+ 100%
+ background-position: 0% 50%
+
+@keyframes title-float
+ 0%, 100%
+ transform: translateY(0) scale(1) rotate(-1deg)
+ filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.7))
+ 50%
+ transform: translateY(-10px) scale(1.05) rotate(1deg)
+ filter: drop-shadow(0 0 25px rgba(255, 255, 255, 0.9)) drop-shadow(0 0 50px rgba(102, 204, 255, 0.6))
\ No newline at end of file
diff --git a/client/src/pages/Home/Home.jsx b/client/src/pages/Home/Home.jsx
index 2c7a5ff..269db92 100644
--- a/client/src/pages/Home/Home.jsx
+++ b/client/src/pages/Home/Home.jsx
@@ -9,9 +9,18 @@ export const Home = () => {
return (
+
+
+
+
ToneGuessr
+
Das Frequenzspiel für Marco :3
+
+
-
{}} />
- setCurrentState("Game")} />
+ {}} />
+ setCurrentState("Game")} />
);
diff --git a/client/src/pages/Home/components/ActionCard/ActionCard.jsx b/client/src/pages/Home/components/ActionCard/ActionCard.jsx
index 4f1aa68..75691e5 100644
--- a/client/src/pages/Home/components/ActionCard/ActionCard.jsx
+++ b/client/src/pages/Home/components/ActionCard/ActionCard.jsx
@@ -1,11 +1,11 @@
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import "./styles.sass";
+import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-export const ActionCard = ({ title, icon, onClick }) => {
- return (
-
-
-
{title}
-
- );
-}
\ No newline at end of file
+export const ActionCard = ({title, icon, onClick}) => {
+ return (
+
+
+
{title}
+
+ );
+};
\ No newline at end of file
diff --git a/client/src/pages/Home/components/ActionCard/styles.sass b/client/src/pages/Home/components/ActionCard/styles.sass
index 44aa13d..1d1e61e 100644
--- a/client/src/pages/Home/components/ActionCard/styles.sass
+++ b/client/src/pages/Home/components/ActionCard/styles.sass
@@ -3,21 +3,94 @@
.action-card
display: flex
flex-direction: column
- padding: 2rem 0
- width: 13rem
+ padding: 2.5rem 1.5rem
+ width: 15rem
text-align: center
gap: 2rem
- transition: all 0.3s ease-in-out
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275)
cursor: pointer
user-select: none
+ background: rgba(255, 255, 255, 0.07)
+ backdrop-filter: blur(10px)
+ border: 1px solid rgba(255, 255, 255, 0.2)
+ border-radius: 20px
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1), 0 0 20px rgba(255, 255, 255, 0.1)
+ position: relative
+ overflow: hidden
+ transform: translateZ(0)
+ backface-visibility: hidden
+ animation: card-pulse 6s infinite alternate ease-in-out
+
+ &:nth-child(odd)
+ animation-delay: 1s
+
+ &:before
+ content: ""
+ position: absolute
+ top: -50%
+ left: -50%
+ width: 200%
+ height: 200%
+ background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, transparent 70%)
+ opacity: 0
+ transition: opacity 0.5s ease
svg
- font-size: 52pt
+ font-size: 62pt
color: $white
+ filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.3))
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ transform: translateZ(0)
+ animation: icon-glow 5s infinite alternate ease-in-out
h1
margin: 0
color: $white
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.5)
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ transform: translateZ(0)
+ position: relative
+
+ &:after
+ content: ""
+ position: absolute
+ bottom: -5px
+ left: 25%
+ width: 0%
+ height: 2px
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.7), transparent)
+ transition: all 0.4s ease
&:hover
- transform: scale(1.1) translate(0, -0.5rem) rotate(0.5deg)
\ No newline at end of file
+ transform: scale(1.05) translate(0, -0.5rem) rotate(0.5deg)
+ border: 1px solid rgba(255, 255, 255, 0.5)
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2), 0 0 30px rgba(255, 255, 255, 0.15), 0 0 0 2px rgba(255, 255, 255, 0.3)
+
+ &:before
+ opacity: 1
+ animation: rotate-background 15s linear infinite
+
+ svg
+ transform: scale(1.2)
+ filter: drop-shadow(0 0 25px rgba(255, 255, 255, 0.8))
+
+ h1
+ transform: scale(1.05)
+
+ &:after
+ width: 50%
+ left: 25%
+
+@keyframes card-pulse
+ 0%, 100%
+ transform: scale(1)
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1), 0 0 20px rgba(255, 255, 255, 0.1)
+ 50%
+ transform: scale(1.02)
+ box-shadow: 0 6px 35px rgba(0, 0, 0, 0.15), 0 0 25px rgba(255, 255, 255, 0.15)
+
+@keyframes icon-glow
+ 0%, 100%
+ filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.3))
+ 50%
+ filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.6))
\ No newline at end of file
diff --git a/client/src/pages/Home/styles.sass b/client/src/pages/Home/styles.sass
index 49e186f..cbc97c4 100644
--- a/client/src/pages/Home/styles.sass
+++ b/client/src/pages/Home/styles.sass
@@ -5,13 +5,116 @@
flex-direction: column
align-items: center
justify-content: center
- height: 100%
- width: 100%
+ height: 100vh
+ width: 100vw
+ position: relative
+ z-index: 1
+ animation: page-fade-in 1s ease-in-out
+.logo-container
+ text-align: center
+ margin-bottom: 2rem
+ animation: logo-entrance 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ position: relative
+
+ .logo
+ font-size: 80pt
+ line-height: 1.1
+ margin: 0
+ padding: 0 15px
+ background: linear-gradient(135deg, $pink, $blue 45%, $mint-green 65%, $yellow 85%, $pink)
+ background-size: 300% 100%
+ animation: logo-shimmer 10s infinite alternate ease-in-out, logo-glow 5s infinite alternate ease-in-out
+ -webkit-background-clip: text
+ background-clip: text
+ -webkit-text-fill-color: transparent
+ filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.6))
+ position: relative
+ letter-spacing: 0.1em
+ font-weight: bold
+
+ &:before
+ content: "ToneGuessr"
+ position: absolute
+ z-index: -1
+ left: 0
+ top: 0
+ background: none
+ -webkit-text-fill-color: transparent
+ filter: blur(15px) brightness(1.2)
+ opacity: 0.7
+ width: 100%
+ height: 100%
+ animation: text-pulse 5s infinite alternate ease-in-out
+
+ .tagline
+ font-size: 24pt
+ margin: 5px 0 0 0
+ color: rgba(255, 255, 255, 0.9)
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.4)
+ animation: tagline-fade 2s ease-in-out
+ letter-spacing: 0.1em
.action-area
- margin-top: 5rem
+ margin-top: 2rem
display: flex
gap: 3rem
flex-wrap: wrap
- justify-content: center
\ No newline at end of file
+ justify-content: center
+ position: relative
+ z-index: 2
+ animation: float-up 1.5s ease-out
+
+@keyframes logo-entrance
+ 0%
+ opacity: 0
+ transform: scale(0.8) translateY(-50px)
+ 100%
+ opacity: 1
+ transform: scale(1) translateY(0)
+
+@keyframes logo-glow
+ 0%, 100%
+ filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.6))
+ transform: scale(1) rotate(-1deg)
+ 50%
+ filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.9)) drop-shadow(0 0 40px rgba(102, 204, 255, 0.5))
+ transform: scale(1.05) rotate(1deg)
+
+@keyframes tagline-fade
+ 0%
+ opacity: 0
+ transform: translateY(10px)
+ 100%
+ opacity: 1
+ transform: translateY(0)
+
+@keyframes page-fade-in
+ 0%
+ opacity: 0
+ 100%
+ opacity: 1
+
+@keyframes float-up
+ 0%
+ opacity: 0
+ transform: translateY(50px)
+ 100%
+ opacity: 1
+ transform: translateY(0)
+
+@keyframes logo-shimmer
+ 0%
+ background-position: 0% 50%
+ 50%
+ background-position: 100% 50%
+ 100%
+ background-position: 0% 50%
+
+@keyframes text-pulse
+ 0%, 100%
+ opacity: 0.5
+ filter: blur(15px) brightness(1.2)
+ 50%
+ opacity: 0.8
+ filter: blur(20px) brightness(1.5)
\ No newline at end of file