Spaces:
Sleeping
Sleeping
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700;900&display=swap'); | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| body { | |
| font-family: 'Poppins', sans-serif; | |
| overflow: hidden; | |
| user-select: none; | |
| } | |
| .container { | |
| min-height: 100vh; | |
| width: 100vw; | |
| background: linear-gradient(135deg, #fff0f3 0%, #ffe4e9 50%, #ffd4e5 100%); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| overflow: hidden; | |
| padding-top: 30px; /* Space for header */ | |
| } | |
| /* Sparkle canvas */ | |
| #sparkleCanvas { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| pointer-events: none; | |
| z-index: 1; | |
| } | |
| /* Floating hearts background */ | |
| .hearts-background { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| overflow: hidden; | |
| } | |
| .floating-heart { | |
| position: absolute; | |
| font-size: 2rem; | |
| opacity: 0.6; | |
| animation: floatUp linear infinite; | |
| } | |
| /* Card */ | |
| .card { | |
| background: rgba(255, 255, 255, 0.7); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| border: 2px solid rgba(255, 255, 255, 0.3); | |
| border-radius: 30px; | |
| padding: 3rem 2rem; | |
| max-width: 550px; | |
| width: 90%; | |
| box-shadow: 0 20px 60px rgba(255, 77, 109, 0.3); | |
| position: relative; | |
| z-index: 10; | |
| animation: cardEntrance 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| margin: 2rem auto; | |
| } | |
| .content { | |
| position: relative; | |
| width: 100%; | |
| } | |
| .screen { | |
| display: none; | |
| text-align: center; | |
| } | |
| .screen.active { | |
| display: block; | |
| animation: fadeIn 0.5s ease-out; | |
| } | |
| /* Emoji container */ | |
| .emoji-container { | |
| position: relative; | |
| display: inline-block; | |
| margin-bottom: 1.5rem; | |
| } | |
| .main-emoji { | |
| font-size: 6rem; | |
| animation: heartbeat 1.5s ease-in-out infinite; | |
| display: inline-block; | |
| } | |
| .floating-emoji { | |
| position: absolute; | |
| font-size: 2.5rem; | |
| top: -10px; | |
| right: -20px; | |
| animation: float 2s ease-in-out infinite; | |
| } | |
| .floating-emoji-2 { | |
| position: absolute; | |
| font-size: 2rem; | |
| bottom: 0; | |
| left: -15px; | |
| animation: float 2.5s ease-in-out infinite; | |
| } | |
| /* Title */ | |
| .title { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: #590d22; | |
| margin-bottom: 0.5rem; | |
| line-height: 1.4; | |
| } | |
| .name-highlight { | |
| color: #ff4d6d; | |
| text-shadow: 2px 2px 4px rgba(255, 77, 109, 0.3); | |
| animation: glow 2s ease-in-out infinite; | |
| } | |
| .valentine-text { | |
| display: block; | |
| color: #ff4d6d; | |
| font-size: 2.5rem; | |
| margin-top: 0.5rem; | |
| animation: pulse 2s ease-in-out infinite; | |
| } | |
| .subtitle { | |
| color: #590d22; | |
| font-size: 1.1rem; | |
| margin-bottom: 2rem; | |
| opacity: 0.8; | |
| } | |
| /* Buttons */ | |
| .button-container { | |
| position: relative; | |
| min-height: 120px; | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 1.5rem; | |
| margin-bottom: 1rem; | |
| padding: 0 1rem; | |
| } | |
| .btn { | |
| font-family: 'Poppins', sans-serif; | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| padding: 1rem 2.5rem; | |
| border: none; | |
| border-radius: 50px; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| color: white; | |
| position: relative; | |
| z-index: 10; | |
| flex-shrink: 0; | |
| } | |
| .btn-yes { | |
| background: linear-gradient(135deg, #ff4d6d 0%, #ff758f 100%); | |
| box-shadow: 0 8px 25px rgba(255, 77, 109, 0.4); | |
| animation: pulseGlow 2s infinite; | |
| } | |
| .btn-yes:hover { | |
| transform: scale(1.1) rotate(-2deg); | |
| box-shadow: 0 12px 35px rgba(255, 77, 109, 0.6); | |
| } | |
| .btn-yes:active { | |
| transform: scale(0.95); | |
| } | |
| .btn-no { | |
| background: linear-gradient(135deg, #590d22 0%, #800f2f 100%); | |
| box-shadow: 0 4px 15px rgba(89, 13, 34, 0.3); | |
| transition: all 1.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); | |
| position: relative; | |
| } | |
| .btn-no.moving { | |
| position: absolute ; | |
| } | |
| .btn-no.vanished { | |
| opacity: 0 ; | |
| pointer-events: none ; | |
| transform: scale(0) rotate(360deg) ; | |
| } | |
| /* Phrase */ | |
| .phrase { | |
| min-height: 30px; | |
| color: #ff4d6d; | |
| font-weight: 600; | |
| font-size: 1.1rem; | |
| margin: 1rem 0; | |
| animation: bounceIn 0.5s ease-out; | |
| } | |
| .hint { | |
| color: #590d22; | |
| opacity: 0.5; | |
| font-size: 0.9rem; | |
| margin-top: 1rem; | |
| } | |
| .attempt-counter { | |
| margin-top: 1rem; | |
| color: #590d22; | |
| font-weight: 600; | |
| font-size: 0.95rem; | |
| min-height: 25px; | |
| } | |
| /* Success screen */ | |
| .success-emoji { | |
| font-size: 8rem; | |
| animation: bounce 1s ease-out; | |
| margin-bottom: 1rem; | |
| } | |
| .success-title { | |
| font-size: 2.5rem; | |
| color: #ff4d6d; | |
| font-weight: 900; | |
| margin-bottom: 1.5rem; | |
| animation: bounceIn 0.6s ease-out; | |
| } | |
| .success-message { | |
| background: rgba(255, 240, 243, 0.8); | |
| border-radius: 20px; | |
| padding: 2rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .success-message p { | |
| color: #590d22; | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| margin-bottom: 1rem; | |
| } | |
| .heart-row { | |
| display: flex; | |
| justify-content: center; | |
| gap: 1rem; | |
| margin: 1.5rem 0; | |
| } | |
| .beating-heart { | |
| font-size: 2.5rem; | |
| display: inline-block; | |
| animation: heartbeat 1s ease-in-out infinite; | |
| } | |
| .beating-heart:nth-child(2) { | |
| animation-delay: 0.2s; | |
| } | |
| .beating-heart:nth-child(3) { | |
| animation-delay: 0.4s; | |
| } | |
| .love-quote { | |
| font-style: italic; | |
| color: #ff4d6d; | |
| font-size: 1rem; | |
| margin-top: 1rem; | |
| } | |
| .stats-message { | |
| background: rgba(255, 77, 109, 0.1); | |
| border-radius: 15px; | |
| padding: 1rem; | |
| margin-bottom: 1.5rem; | |
| color: #590d22; | |
| font-size: 0.95rem; | |
| } | |
| .btn-replay { | |
| background: transparent; | |
| color: #ff4d6d; | |
| border: 2px solid #ff4d6d; | |
| margin-bottom: 1.5rem; | |
| } | |
| .btn-replay:hover { | |
| background: #ff4d6d; | |
| color: white; | |
| transform: scale(1.05); | |
| } | |
| /* Share section */ | |
| .share-section { | |
| margin-top: 2rem; | |
| padding-top: 1.5rem; | |
| border-top: 2px dashed rgba(255, 77, 109, 0.3); | |
| } | |
| .share-text { | |
| color: #590d22; | |
| font-weight: 600; | |
| margin-bottom: 0.8rem; | |
| } | |
| .share-input { | |
| width: 100%; | |
| padding: 0.8rem; | |
| border: 2px solid #ff4d6d; | |
| border-radius: 10px; | |
| font-family: 'Poppins', sans-serif; | |
| font-size: 0.9rem; | |
| margin-bottom: 0.8rem; | |
| text-align: center; | |
| background: rgba(255, 255, 255, 0.8); | |
| } | |
| .btn-copy { | |
| background: linear-gradient(135deg, #ff4d6d 0%, #ff758f 100%); | |
| font-size: 1rem; | |
| padding: 0.8rem 2rem; | |
| } | |
| .btn-copy:hover { | |
| transform: scale(1.05); | |
| } | |
| /* Header Credit at Top */ | |
| .header-credit { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| padding: 1rem; | |
| text-align: center; | |
| z-index: 1000; | |
| background: rgba(255, 255, 255, 0.95); | |
| backdrop-filter: blur(15px); | |
| -webkit-backdrop-filter: blur(15px); | |
| border-bottom: 2px solid rgba(255, 77, 109, 0.2); | |
| box-shadow: 0 2px 20px rgba(255, 77, 109, 0.15); | |
| } | |
| .header-credit p { | |
| color: #590d22; | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| margin: 0; | |
| letter-spacing: 0.5px; | |
| } | |
| .creator-name { | |
| color: #ff4d6d; | |
| font-weight: 900; | |
| font-size: 1.1rem; | |
| text-shadow: 0 0 15px rgba(255, 77, 109, 0.6); | |
| animation: headerGlow 2.5s ease-in-out infinite; | |
| padding: 0 0.3rem; | |
| display: inline-block; | |
| } | |
| @keyframes headerGlow { | |
| 0%, 100% { | |
| text-shadow: 0 0 15px rgba(255, 77, 109, 0.6); | |
| transform: scale(1); | |
| } | |
| 50% { | |
| text-shadow: 0 0 25px rgba(255, 77, 109, 1), 0 0 35px rgba(255, 77, 109, 0.7); | |
| transform: scale(1.05); | |
| } | |
| } | |
| /* Animations */ | |
| @keyframes cardEntrance { | |
| 0% { | |
| opacity: 0; | |
| transform: scale(0.8) translateY(50px); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1) translateY(0); | |
| } | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes heartbeat { | |
| 0%, 100% { | |
| transform: scale(1); | |
| } | |
| 50% { | |
| transform: scale(1.15); | |
| } | |
| } | |
| @keyframes float { | |
| 0%, 100% { | |
| transform: translateY(0) rotate(0deg); | |
| } | |
| 50% { | |
| transform: translateY(-20px) rotate(10deg); | |
| } | |
| } | |
| @keyframes floatUp { | |
| 0% { | |
| transform: translateY(100vh) scale(1) rotate(0deg); | |
| opacity: 0.8; | |
| } | |
| 100% { | |
| transform: translateY(-10vh) scale(0.8) rotate(360deg); | |
| opacity: 0; | |
| } | |
| } | |
| @keyframes glow { | |
| 0%, 100% { | |
| text-shadow: 2px 2px 4px rgba(255, 77, 109, 0.3); | |
| } | |
| 50% { | |
| text-shadow: 0 0 20px rgba(255, 77, 109, 0.8); | |
| } | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { | |
| transform: scale(1); | |
| } | |
| 50% { | |
| transform: scale(1.05); | |
| } | |
| } | |
| @keyframes pulseGlow { | |
| 0%, 100% { | |
| box-shadow: 0 8px 25px rgba(255, 77, 109, 0.4); | |
| } | |
| 50% { | |
| box-shadow: 0 8px 40px rgba(255, 77, 109, 0.7); | |
| } | |
| } | |
| @keyframes bounceIn { | |
| 0% { | |
| opacity: 0; | |
| transform: scale(0.3); | |
| } | |
| 50% { | |
| opacity: 1; | |
| transform: scale(1.05); | |
| } | |
| 70% { | |
| transform: scale(0.9); | |
| } | |
| 100% { | |
| transform: scale(1); | |
| } | |
| } | |
| @keyframes bounce { | |
| 0%, 20%, 50%, 80%, 100% { | |
| transform: translateY(0); | |
| } | |
| 40% { | |
| transform: translateY(-30px); | |
| } | |
| 60% { | |
| transform: translateY(-15px); | |
| } | |
| } | |
| /* Responsive */ | |
| @media (max-width: 640px) { | |
| .container { | |
| padding-top: 60px; /* Adjust for mobile header */ | |
| } | |
| .header-credit { | |
| padding: 0.75rem 0.5rem; | |
| } | |
| .header-credit p { | |
| font-size: 0.75rem; | |
| } | |
| .creator-name { | |
| font-size: 0.95rem; | |
| } | |
| .card { | |
| padding: 2rem 1.5rem; | |
| width: 95%; | |
| margin: 1rem auto; | |
| } | |
| .title { | |
| font-size: 1.5rem; | |
| } | |
| .valentine-text { | |
| font-size: 2rem; | |
| } | |
| .main-emoji { | |
| font-size: 4rem; | |
| } | |
| .btn { | |
| font-size: 1rem; | |
| padding: 0.8rem 2rem; | |
| width: 100%; | |
| max-width: 250px; | |
| } | |
| .button-container { | |
| flex-direction: column; | |
| gap: 1rem; | |
| min-height: 150px; | |
| } | |
| .success-title { | |
| font-size: 2rem; | |
| } | |
| .success-message p { | |
| font-size: 1rem; | |
| } | |
| } | |
| @media (max-width: 400px) { | |
| .header-credit p { | |
| font-size: 0.65rem; | |
| } | |
| .creator-name { | |
| font-size: 0.85rem; | |
| } | |
| .card { | |
| padding: 1.5rem 1rem; | |
| } | |
| .title { | |
| font-size: 1.3rem; | |
| } | |
| .valentine-text { | |
| font-size: 1.8rem; | |
| } | |
| } | |
| /* Confetti */ | |
| .confetti { | |
| position: fixed; | |
| width: 10px; | |
| height: 10px; | |
| top: -10px; | |
| z-index: 9999; | |
| animation: confettiFall linear forwards; | |
| } | |
| @keyframes confettiFall { | |
| to { | |
| transform: translateY(100vh) rotate(360deg); | |
| opacity: 0; | |
| } | |
| } | |
| /* Shake animation */ | |
| @keyframes shake { | |
| 0%, 100% { | |
| transform: translateX(0); | |
| } | |
| 10%, 30%, 50%, 70%, 90% { | |
| transform: translateX(-5px); | |
| } | |
| 20%, 40%, 60%, 80% { | |
| transform: translateX(5px); | |
| } | |
| } | |
| .shake { | |
| animation: shake 0.5s ease-in-out; | |
| } | |
| /* Screen shake effect */ | |
| .screen-shake { | |
| animation: screenShake 0.5s ease-in-out; | |
| } | |
| @keyframes screenShake { | |
| 0%, 100% { | |
| transform: translate(0, 0); | |
| } | |
| 10%, 30%, 50%, 70%, 90% { | |
| transform: translate(-5px, -5px); | |
| } | |
| 20%, 40%, 60%, 80% { | |
| transform: translate(5px, 5px); | |
| } | |
| } | |
| /* Explosion particles */ | |
| .explosion-particle { | |
| position: fixed; | |
| width: 8px; | |
| height: 8px; | |
| background: radial-gradient(circle, #ff4d6d, #ff758f); | |
| border-radius: 50%; | |
| pointer-events: none; | |
| z-index: 10000; | |
| animation: explode 1s ease-out forwards; | |
| } | |
| @keyframes explode { | |
| 0% { | |
| transform: translate(0, 0) scale(1); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: translate(var(--tx), var(--ty)) scale(0); | |
| opacity: 0; | |
| } | |
| } | |
| /* Firework particles */ | |
| .firework-particle { | |
| position: fixed; | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| pointer-events: none; | |
| z-index: 10000; | |
| animation: firework 1.5s ease-out forwards; | |
| } | |
| @keyframes firework { | |
| 0% { | |
| transform: translate(0, 0) scale(1); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: translate(var(--tx), var(--ty)) scale(0); | |
| opacity: 0; | |
| } | |
| } | |
| /* Heart burst effect */ | |
| .heart-burst { | |
| position: fixed; | |
| pointer-events: none; | |
| z-index: 10000; | |
| animation: heartBurst 2s ease-out forwards; | |
| } | |
| @keyframes heartBurst { | |
| 0% { | |
| transform: translate(-50%, -50%) scale(0) rotate(0deg); | |
| opacity: 1; | |
| } | |
| 50% { | |
| transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(1.5) rotate(180deg); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(0.5) rotate(360deg); | |
| opacity: 0; | |
| } | |
| } | |
| /* Accessibility */ | |
| @media (prefers-reduced-motion: reduce) { | |
| *, *::before, *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } |