@import url('https://fonts.googleapis.com/css2?family=Dancing+Script:wght@700&family=Poppins:wght@400;600&display=swap'); html { scroll-behavior: smooth; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background: linear-gradient(135deg, #ff69b4, #ff1493, #ff69b4); min-height: 100vh; display: flex; flex-direction: column; align-items: center; overflow-x: hidden; color: #000000; position: relative; } .container { max-width: 800px; padding: 20px; text-align: center; position: relative; z-index: 1; } h1 { font-family: 'Dancing Script', cursive; color: #fff; font-size: 4em; margin: 20px 0; text-shadow: 3px 3px 6px rgba(0,0,0,0.3); animation: colorChange 3s infinite; } @keyframes colorChange { 0% { color: #fff; } 50% { color: #ffd700; } 100% { color: #fff; } } .heart { color: #ff0000; font-size: 2.5em; display: inline-block; animation: heartbeat 1.5s infinite; } @keyframes heartbeat { 0% { transform: scale(1); } 25% { transform: scale(1.3); } 50% { transform: scale(1); } 75% { transform: scale(1.3); } 100% { transform: scale(1); } } .message { background: rgba(255,255,255,0.95); padding: 30px; border-radius: 20px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); margin: 30px 0; color: #ff1493; transform: translateY(0); transition: transform 0.3s; position: relative; overflow: hidden; } .message:hover { transform: translateY(-10px); } .message::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent); animation: shine 3s infinite; } @keyframes shine { 0% { left: -100%; } 100% { left: 100%; } } .gift-box { width: 200px; height: 200px; background: linear-gradient(45deg, #ff69b4, #ff1493); position: relative; margin: 40px auto; cursor: pointer; transition: all 0.5s; border-radius: 10px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); } .gift-box:hover { transform: scale(1.1) rotate(5deg); box-shadow: 0 15px 35px rgba(0,0,0,0.3); } .gift-box::before { content: '🎁'; position: absolute; font-size: 80px; top: 50%; left: 50%; transform: translate(-50%, -50%); } .gift-content { display: none; padding: 30px; background: rgba(255,255,255,0.95); border-radius: 20px; margin-top: 20px; color: #ff1493; animation: popIn 0.5s ease-out; box-shadow: 0 10px 25px rgba(0,0,0,0.2); } @keyframes popIn { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } .gif-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin: 30px 0; } .gif-container img { width: 300px; height: 300px; border-radius: 15px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); transition: transform 0.3s; object-fit: cover; } .gif-container img:hover { transform: scale(1.1) rotate(5deg); } .gif-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin: 30px 0; position: relative; } .main-gif { width: 300px; height: 300px; margin: 0 auto; border-radius: 20px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); transition: transform 0.3s; } .main-gif:hover { transform: scale(1.1) rotate(5deg); } /* .gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; margin-top: 30px; } .gallery img { width: 100%; border-radius: 10px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); transition: transform 0.5s; object-fit: cover; scale: 1; image-rendering: optimizeQuality; } */ .gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; padding: 20px; } .gallery-item { position: relative; overflow: hidden; border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); cursor: pointer; transition: transform 0.5s ease; } .gallery-item:hover { transform: scale(1.03); } .gallery-item img { width: 100%; height: 300px; object-fit: cover; display: block; transition: transform 0.5s ease; } .gallery-item:hover img { transform: scale(1.1); } .gallery-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); color: white; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.3s ease; } .gallery-item:hover .gallery-overlay { opacity: 1; } .gallery-title { font-size: 1.5em; font-family: 'Dancing Script', cursive; text-align: center; padding: 20px; transform: translateY(20px); transition: transform 0.3s ease; } .gallery-item:hover .gallery-title { transform: translateY(0); } /* Modal Styles */ /* .modal { display: none; position: fixed; z-index: 1000; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); opacity: 0; transition: opacity 0.3s ease; } */ .modal { display: none; position: fixed; z-index: 1000; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); opacity: 0; transition: opacity 0.3s ease; padding: 20px; box-sizing: border-box; overflow: hidden; /* nambah ini */ } /* .modal.show { opacity: 1; } */ .modal.show { opacity: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; } /* .modal-content { margin: auto; display: block; max-width: 90%; max-height: 90vh; border-radius: 10px; box-shadow: 0 5px 30px rgba(0, 0, 0, 0.3); transform: scale(0.8); transition: transform 0.3s ease; } */ .modal.show { opacity: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; } /* .modal.show .modal-content { transform: scale(1); } */ .modal.show .modal-content { transform: scale(1); transform: scale(1); max-height: 80%; /* Membatasi ukuran tinggi konten */ overflow-y: auto; /* Memungkinkan scroll jika konten terlalu panjang */ padding: 20px; background-color: white; /* Agar modal background berwarna putih */ border-radius: 10px; } .modal-close { position: absolute; right: 25px; top: 15px; color: #f1f1f1; font-size: 40px; font-weight: bold; cursor: pointer; transition: color 0.3s ease; z-index: 1001; } .modal-close:hover { color: #ff69b4; } .modal-caption { width: 100%; max-width: 700px; text-align: center; color: #ccc; padding: 15px 0; margin-top: 15px; font-family: 'Dancing Script', cursive; font-size: 1.5em; overflow-y: auto; /* Memungkinkan scroll */ max-height: 300px; /* Mengatur tinggi maksimal jika teks panjang */ } .modal-caption::-webkit-scrollbar { width: 8px; } .modal-caption::-webkit-scrollbar-thumb { background-color: #888; border-radius: 4px; } .modal-caption::-webkit-scrollbar-thumb:hover { background-color: #555; } @media screen and (max-width: 768px) { .modal { padding: 15px; } .modal-content { max-height: calc(70vh - 80px); } .modal-caption { font-size: 1.2em; padding: 10px 15px; } } /* Specific adjustments for very small screens */ @media screen and (max-width: 645px) { .modal { padding: 10px; } .modal-content { max-height: calc(65vh - 80px); margin-bottom: 10px; } .modal-caption { position: relative; bottom: 0; font-size: 1.1em; padding: 8px 10px; margin-top: 10px; } .modal-close { right: 15px; top: 10px; font-size: 35px; } } /* Animation for gallery items on page load */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .gallery-item { animation: fadeInUp 0.6s ease forwards; opacity: 0; } .gallery-item:nth-child(1) { animation-delay: 0.2s; } .gallery-item:nth-child(2) { animation-delay: 0.4s; } .gallery-item:nth-child(3) { animation-delay: 0.6s; } .gallery-item:nth-child(4) { animation-delay: 0.8s; } /* Add responsive styles */ @media (max-width: 768px) { .gallery { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; padding: 10px; } .gallery-item img { height: 250px; } .gallery-title { font-size: 1.2em; } } .memory-box { background: rgba(255,255,255,0.95); padding: 20px; border-radius: 15px; margin: 30px 0; color: #ff1493; box-shadow: 0 10px 25px rgba(0,0,0,0.2); } .memory-box h3 { font-family: 'Dancing Script', cursive; font-size: 2em; margin-bottom: 15px; } .counter { font-size: 1.2em; margin: 20px 0; background: rgba(255,255,255,0.95); padding: 15px; border-radius: 10px; color: #ff1493; } .music-player { background: rgba(255,255,255,0.95); padding: 20px; border-radius: 15px; margin: 30px 0; color: #ff1493; } button { background: linear-gradient(45deg, #ff1493, #ff69b4); color: white; border: none; padding: 15px 30px; border-radius: 50px; cursor: pointer; font-size: 1.2em; margin: 15px; transition: all 0.3s; box-shadow: 0 5px 15px rgba(0,0,0,0.2); position: relative; overflow: hidden; } button:hover { transform: scale(1.1); box-shadow: 0 8px 20px rgba(0,0,0,0.3); } button::after { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: linear-gradient(transparent, rgba(255,255,255,0.3), transparent); transform: rotate(45deg); animation: buttonShine 3s infinite; } @keyframes buttonShine { 0% { transform: translateX(-100%) rotate(45deg); } 100% { transform: translateX(100%) rotate(45deg); } } .floating-hearts { position: fixed; width: 100%; height: 100%; pointer-events: none; z-index: 0; left: 10px; } .floating-heart { position: absolute; font-size: 30px; animation: floatUpAndRotate 6s linear infinite; } @keyframes floatUpAndRotate { 0% { transform: translateY(100vh) rotate(0deg); opacity: 1; } 100% { transform: translateY(-100px) rotate(360deg); opacity: 0; } } .love-message { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(255,255,255,0.95); padding: 20px; border-radius: 15px; display: none; animation: popIn 0.5s ease-out; z-index: 1000; box-shadow: 0 10px 25px rgba(0,0,0,0.3); } .close-btn { position: absolute; top: 10px; right: 10px; cursor: pointer; font-size: 20px; } .linknya { color: #ff1493; text-decoration: none; transition: all 0.3s; } .login-container { background: rgba(255, 255, 255, 0.95); padding: 30px; border-radius: 20px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); max-width: 400px; width: 90%; margin: 50px auto; text-align: center; color: #ff1493; } .login-container h2 { font-family: 'Dancing Script', cursive; font-size: 2.5em; margin-bottom: 20px; color: #ff1493; } .login-form input { width: 100%; padding: 12px; margin: 10px 0; border: 2px solid #ff69b4; border-radius: 10px; font-size: 1.1em; outline: none; transition: all 0.3s; } .login-form input:focus { border-color: #ff1493; box-shadow: 0 0 10px rgba(255,20,147,0.2); } .login-form button { background: linear-gradient(45deg, #ff1493, #ff69b4); color: white; border: none; padding: 12px 30px; border-radius: 50px; cursor: pointer; font-size: 1.2em; margin-top: 20px; transition: all 0.3s; } .login-form button:hover { transform: scale(1.1); box-shadow: 0 5px 15px rgba(0,0,0,0.2); } #error-message { color: #ff0000; margin-top: 10px; font-size: 0.9em; } #content { display: none; } .gambarDudu { width: 100px; border-radius: 50%; margin: 0 auto; display: block; } .music { display: none !important; } .yangtercinta { font-size: 1.5em; margin-bottom: 15px; font-family: 'Dancing Script', cursive; } .setiapDetik { font-family: 'Dancing Script', cursive; font-size: 1.8em; margin: 15px 0; } .alasan { margin: 15px 0; } .selamatValentine { font-size: 1.3em; margin-top: 15px; } .LaguUntukKita { font-family: 'Dancing Script', cursive; } .PlaylistSpesial { margin: 15px 0; } .daftarnya { list-style: none; padding: 0; margin: 0; } .Surprise { font-family: 'Dancing Script', cursive; font-size: 2.5em; margin: 20px 0; color: #ff1493; text-shadow: 3px 3px 6px rgba(0,0,0,0.3); animation: colorChange 3s infinite; } .HadiahSpesial { font-size: 1.2em; margin: 15px 0; } .daftarHadiah { list-style: none; padding: 20px; font-size: 1.1em; background: rgba(0, 0, 0, 0.95); border-radius: 15px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); }