style: left-to-right fade animations on sovereign phases + match close button to film modal
- NAH! text now slides in from the left with a scale punch and glow - Own your privacy phase slides in from the left with a smooth fade - Close button restyled to match ContentDetailModal (circular, glassmorphism, blur) Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -20,7 +20,7 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
CACHEBUST: "24"
|
CACHEBUST: "25"
|
||||||
VITE_USE_MOCK_DATA: "false"
|
VITE_USE_MOCK_DATA: "false"
|
||||||
VITE_CONTENT_ORIGIN: ${FRONTEND_URL}
|
VITE_CONTENT_ORIGIN: ${FRONTEND_URL}
|
||||||
VITE_INDEEHUB_API_URL: /api
|
VITE_INDEEHUB_API_URL: /api
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<div v-if="isOpen" class="auth-modal-overlay" @click.self="closeModal">
|
<div v-if="isOpen" class="auth-modal-overlay" @click.self="closeModal">
|
||||||
<div class="auth-modal-container">
|
<div class="auth-modal-container">
|
||||||
<div class="auth-modal-content">
|
<div class="auth-modal-content">
|
||||||
<!-- Close Button -->
|
<!-- Close Button — matches film detail modal -->
|
||||||
<button @click="closeModal" class="absolute top-4 right-4 text-white/60 hover:text-white transition-colors">
|
<button @click="closeModal" class="auth-close-btn">
|
||||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
@@ -645,13 +645,36 @@ declare global {
|
|||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── NAH! Phase ── */
|
/* ── Close Button — matches film detail modal ── */
|
||||||
|
.auth-close-btn {
|
||||||
|
position: absolute;
|
||||||
|
top: 16px;
|
||||||
|
right: 16px;
|
||||||
|
z-index: 20;
|
||||||
|
padding: 8px;
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
-webkit-backdrop-filter: blur(20px);
|
||||||
|
border-radius: 9999px;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.auth-close-btn:hover {
|
||||||
|
color: white;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
border-color: rgba(255, 255, 255, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── NAH! Phase — left-to-right reveal ── */
|
||||||
.sovereign-nah {
|
.sovereign-nah {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
min-height: 280px;
|
min-height: 280px;
|
||||||
animation: nahEntrance 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nah-text {
|
.nah-text {
|
||||||
@@ -664,36 +687,46 @@ declare global {
|
|||||||
color: transparent;
|
color: transparent;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
filter: drop-shadow(0 0 40px rgba(255, 0, 0, 0.3));
|
filter: drop-shadow(0 0 40px rgba(255, 0, 0, 0.3));
|
||||||
animation: nahPulse 0.8s ease-in-out;
|
|
||||||
|
/* Left-to-right fade-slide with a slight scale punch */
|
||||||
|
animation:
|
||||||
|
nahSlideIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards,
|
||||||
|
nahGlow 0.9s ease-in-out 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes nahEntrance {
|
@keyframes nahSlideIn {
|
||||||
0% {
|
0% {
|
||||||
transform: scale(0.3) rotate(-5deg);
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
transform: translateX(-60px) scale(0.85);
|
||||||
|
filter: drop-shadow(0 0 0 rgba(255, 0, 0, 0));
|
||||||
}
|
}
|
||||||
50% {
|
70% {
|
||||||
transform: scale(1.15) rotate(2deg);
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
transform: translateX(8px) scale(1.05);
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
transform: scale(1) rotate(0deg);
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
transform: translateX(0) scale(1);
|
||||||
|
filter: drop-shadow(0 0 40px rgba(255, 0, 0, 0.3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes nahPulse {
|
@keyframes nahGlow {
|
||||||
0%, 100% { filter: drop-shadow(0 0 40px rgba(255, 0, 0, 0.3)); }
|
0%, 100% { filter: drop-shadow(0 0 40px rgba(255, 0, 0, 0.3)); }
|
||||||
50% { filter: drop-shadow(0 0 80px rgba(255, 0, 0, 0.6)); }
|
50% { filter: drop-shadow(0 0 80px rgba(255, 0, 0, 0.6)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Own Your Privacy Phase ── */
|
/* ── Own Your Privacy Phase — left-to-right fade ── */
|
||||||
.sovereign-own-privacy {
|
.sovereign-own-privacy {
|
||||||
min-height: 280px;
|
min-height: 280px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
animation: privacyFadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sovereign-own-privacy > div {
|
||||||
|
animation: privacySlideIn 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.own-privacy-heading {
|
.own-privacy-heading {
|
||||||
@@ -706,14 +739,14 @@ declare global {
|
|||||||
color: transparent;
|
color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes privacyFadeIn {
|
@keyframes privacySlideIn {
|
||||||
0% {
|
0% {
|
||||||
transform: translateY(20px) scale(0.95);
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
transform: translateX(-40px);
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
transform: translateY(0) scale(1);
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user