/* Enhanced Design and Layout */
:root {
     /* Base Colors */
     --primary-color: #7c5a9c;
     --secondary-color: #e91e63;
     --background-light: #f8f5ff;
     --background-dark: #222639;
     --text-light: #444;
     --text-dark: #e0e0e8;
     --card-light: rgba(255, 255, 255, 0.95);
     --card-dark: rgba(40, 40, 60, 0.9);
     --shadow-light: 0 10px 30px rgba(0, 0, 0, 0.15);
     --shadow-dark: 0 10px 30px rgba(0, 0, 0, 0.4);

     /* Animation Settings */
     --transition-speed: 0.4s;
}

/* Dark Theme Variables - Applied with .dark-theme class */
.dark-theme {
     --primary-color: #9d78c2;
     --secondary-color: #ff5b94;
     --text-color: var(--text-dark);
     --background-color: var(--background-dark);
     --card-bg: var(--card-dark);
     --card-shadow: var(--shadow-dark);
}

/* Light Theme Variables - Default */
body {
     --text-color: var(--text-light);
     --background-color: var(--background-light);
     --card-bg: var(--card-light);
     --card-shadow: var(--shadow-light);
}

/* Basic Reset & Font */
* {
     margin: 0;
     padding: 0;
     box-sizing: border-box;
}

html {
     scroll-behavior: smooth;
     scroll-padding-top: 30px;
}

body {
     font-family: 'Poppins', sans-serif;
     background-color: var(--background-color);
     color: var(--text-color);
     line-height: 1.7;
     min-height: 100vh;
     padding: 0;
     overflow-x: hidden;
     transition: background-color var(--transition-speed), color var(--transition-speed);
}

/* Loading Screen */
#loading-screen {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     background-color: var(--background-color);
     display: flex;
     justify-content: center;
     align-items: center;
     z-index: 1000;
     transition: opacity 0.5s ease-out, visibility 0.5s ease-out;
}

.loader {
     position: relative;
     display: flex;
     justify-content: center;
     align-items: center;
}

.heart-loader {
     width: 50px;
     height: 50px;
     background-color: var(--secondary-color);
     transform: rotate(45deg);
     animation: pulse-loader 1.5s infinite;
     position: relative;
}

.heart-loader:before,
.heart-loader:after {
     content: '';
     width: 50px;
     height: 50px;
     background-color: var(--secondary-color);
     border-radius: 50%;
     position: absolute;
}

.heart-loader:before {
     top: -25px;
     left: 0;
}

.heart-loader:after {
     top: 0;
     left: -25px;
}

@keyframes pulse-loader {
     0% {
          transform: rotate(45deg) scale(1);
     }

     20% {
          transform: rotate(45deg) scale(1.2);
     }

     40% {
          transform: rotate(45deg) scale(1);
     }

     60% {
          transform: rotate(45deg) scale(1.2);
     }

     80% {
          transform: rotate(45deg) scale(1);
     }

     100% {
          transform: rotate(45deg) scale(1);
     }
}

/* Theme Toggle */
.theme-toggle {
     position: fixed;
     top: 20px;
     right: 20px;
     width: 45px;
     height: 45px;
     border-radius: 50%;
     background: var(--card-bg);
     box-shadow: var(--card-shadow);
     display: flex;
     justify-content: center;
     align-items: center;
     cursor: pointer;
     z-index: 100;
     transition: background-color var(--transition-speed);
}

.theme-toggle i {
     font-size: 1.2rem;
     color: var(--primary-color);
     transition: opacity 0.3s ease-in-out;
}

.theme-toggle .fa-sun {
     opacity: 0;
     position: absolute;
}

.theme-toggle .fa-moon {
     opacity: 1;
     position: absolute;
}

.dark-theme .theme-toggle .fa-sun {
     opacity: 1;
}

.dark-theme .theme-toggle .fa-moon {
     opacity: 0;
}

/* Parallax Background */
.parallax-bg {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     z-index: -1;
     pointer-events: none;
}

.parallax-bg:before {
     content: '';
     position: absolute;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     background: radial-gradient(circle at 30% 30%, rgba(124, 90, 156, 0.2) 0%, transparent 70%),
          radial-gradient(circle at 70% 60%, rgba(233, 30, 99, 0.2) 0%, transparent 70%);
     opacity: 0.7;
     transform: translateZ(0);
     transition: opacity var(--transition-speed);
}

.dark-theme .parallax-bg:before {
     opacity: 0.3;
}

/* Navigation */
.main-nav {
     position: fixed;
     bottom: 30px;
     left: 50%;
     transform: translateX(-50%);
     background: var(--card-bg);
     border-radius: 50px;
     padding: 10px 15px;
     box-shadow: var(--card-shadow);
     z-index: 100;
     transition: background-color var(--transition-speed), box-shadow var(--transition-speed);
}

.main-nav ul {
     display: flex;
     list-style: none;
     gap: 5px;
}

.main-nav a {
     display: flex;
     flex-direction: column;
     align-items: center;
     padding: 10px;
     color: var(--text-color);
     text-decoration: none;
     border-radius: 20px;
     transition: all 0.3s ease;
     position: relative;
     font-size: 0.85rem;
}

.main-nav a i {
     font-size: 1.2rem;
     margin-bottom: 4px;
     transition: transform 0.3s ease;
}

.main-nav a span {
     opacity: 0.7;
     font-size: 0.7rem;
     font-weight: 500;
     transition: opacity 0.3s ease;
}

.main-nav a.active {
     color: var(--primary-color);
     background: rgba(124, 90, 156, 0.1);
}

.main-nav a.active i {
     transform: translateY(-2px);
}

.main-nav a.active span {
     opacity: 1;
}

.main-nav a:hover {
     color: var(--primary-color);
}

/* Header */
.page-header {
     padding: 80px 0 40px;
     text-align: center;
     position: relative;
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;
}

/* Photo Container Styles */
.photo-container {
     margin-bottom: 30px;
}

.photo-frame {
     width: 180px;
     height: 180px;
     border-radius: 50%;
     padding: 8px;
     background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
     box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
     position: relative;
     display: flex;
     justify-content: center;
     align-items: center;
     transition: transform 0.5s ease, box-shadow 0.5s ease;
     animation: photo-entrance 1s ease-out forwards;
     opacity: 0;
     transform: translateY(30px) scale(0.9);
}

@keyframes photo-entrance {
     to {
          opacity: 1;
          transform: translateY(0) scale(1);
     }
}

.photo-frame:hover {
     transform: scale(1.05);
     box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3);
}

.photo-frame:before {
     content: '';
     position: absolute;
     width: 100%;
     height: 100%;
     border-radius: 50%;
     background: transparent;
     border: 3px dashed rgba(255, 255, 255, 0.5);
     box-sizing: border-box;
     animation: rotate 40s linear infinite;
}

@keyframes rotate {
     from {
          transform: rotate(0deg);
     }

     to {
          transform: rotate(360deg);
     }
}

.photo-frame img {
     width: 100%;
     height: 100%;
     border-radius: 50%;
     object-fit: cover;
     border: 4px solid white;
     box-sizing: border-box;
}

.photo-placeholder {
     width: 100%;
     height: 100%;
     border-radius: 50%;
     background: var(--card-bg);
     display: flex;
     flex-direction: column;
     justify-content: center;
     align-items: center;
     border: 4px solid white;
     color: var(--primary-color);
}

.photo-placeholder i {
     font-size: 2.5rem;
     margin-bottom: 10px;
     opacity: 0.7;
}

.photo-placeholder span {
     font-size: 0.85rem;
     font-weight: 500;
     opacity: 0.8;
}

.header-content {
     position: relative;
     display: inline-block;
}

.page-header h1 {
     font-size: 3.5rem;
     color: var(--primary-color);
     margin-bottom: 10px;
     font-weight: 700;
     text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
     letter-spacing: 1px;
     transition: color var(--transition-speed);
     position: relative;
}

.heart-icon {
     font-size: 2.5rem;
     color: var(--secondary-color);
     display: inline-block;
     margin-top: 10px;
     filter: drop-shadow(0 0 5px rgba(233, 30, 99, 0.3));
     transition: color var(--transition-speed);
}

/* Main Content */
main {
     max-width: 1000px;
     margin: 0 auto;
     padding: 0 20px 100px;
}

.message-card {
     margin-bottom: 70px;
     opacity: 0;
     transform: translateY(40px);
     transition: opacity 0.8s ease, transform 0.8s ease;
}

.message-card.visible {
     opacity: 1;
     transform: translateY(0);
}

.card-inner {
     background: var(--card-bg);
     border-radius: 20px;
     box-shadow: var(--card-shadow);
     overflow: hidden;
     display: flex;
     position: relative;
     transition: background-color var(--transition-speed), box-shadow var(--transition-speed), transform 0.3s ease;
}

.card-inner:hover {
     transform: translateY(-5px);
     box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
}

.corner-decoration {
     position: absolute;
     width: 70px;
     height: 70px;
     background: linear-gradient(135deg, var(--primary-color) 20%, transparent 80%);
     opacity: 0.2;
     top: 0;
     right: 0;
     border-radius: 0 20px 0 70px;
     transition: opacity 0.3s ease;
}

.card-inner:hover .corner-decoration {
     opacity: 0.4;
}

/* Section Images */
.section-image {
     flex: 0 0 140px;
     display: flex;
     justify-content: center;
     align-items: center;
     position: relative;
     overflow: hidden;
     background: linear-gradient(to bottom right, rgba(124, 90, 156, 0.1), rgba(233, 30, 99, 0.1));
     transition: background var(--transition-speed);
}

.section-image i {
     font-size: 2.5rem;
     color: var(--primary-color);
     transition: transform 0.5s ease, color var(--transition-speed);
}

.card-inner:hover .section-image i {
     transform: scale(1.2);
}

.placeholder-image::after {
     content: '';
     position: absolute;
     bottom: 0;
     right: 0;
     height: 50%;
     width: 20px;
     background: linear-gradient(to top, rgba(124, 90, 156, 0.1), transparent);
}

/* Section Content */
.section-content {
     flex: 1;
     padding: 35px 40px;
}

.message-card h2 {
     font-size: 1.8rem;
     color: var(--primary-color);
     margin-bottom: 20px;
     font-weight: 600;
     position: relative;
     display: inline-block;
     transition: color var(--transition-speed);
}

.message-card h2::after {
     content: '';
     position: absolute;
     bottom: -5px;
     left: 0;
     width: 40%;
     height: 3px;
     background: linear-gradient(to right, var(--primary-color), transparent);
     border-radius: 2px;
}

.message-card p {
     font-size: 1.05rem;
     color: var(--text-color);
     margin-bottom: 20px;
     font-weight: 400;
     line-height: 1.8;
     transition: color var(--transition-speed);
}

/* Interactive Elements */
.interactive-element {
     margin-top: 25px;
     border-top: 1px dashed rgba(124, 90, 156, 0.2);
     padding-top: 20px;
}

.toggle-button {
     background: transparent;
     border: 2px solid var(--primary-color);
     color: var(--primary-color);
     padding: 10px 20px;
     border-radius: 50px;
     font-family: 'Poppins', sans-serif;
     font-size: 0.95rem;
     font-weight: 500;
     cursor: pointer;
     display: flex;
     align-items: center;
     gap: 8px;
     transition: all 0.3s ease;
}

.toggle-button i {
     font-size: 0.9rem;
     transition: transform 0.3s ease;
}

.toggle-button:hover {
     background: var(--primary-color);
     color: white;
}

.hidden-content {
     max-height: 0;
     overflow: hidden;
     transition: max-height 0.5s ease, padding 0.5s ease;
}

.hidden-content.visible {
     max-height: 500px;
     padding-top: 20px;
}

/* Place Options */
.place-options {
     display: flex;
     gap: 15px;
     flex-wrap: wrap;
}

.option {
     position: relative;
     cursor: pointer;
}

.option input {
     position: absolute;
     opacity: 0;
     cursor: pointer;
}

.option label {
     display: inline-block;
     padding: 10px 20px;
     background: rgba(124, 90, 156, 0.1);
     border-radius: 50px;
     color: var(--text-color);
     font-weight: 500;
     font-size: 0.95rem;
     cursor: pointer;
     transition: all 0.3s ease;
}

.option input:checked+label {
     background: var(--primary-color);
     color: white;
     box-shadow: 0 5px 15px rgba(124, 90, 156, 0.3);
}

/* Footer */
footer {
     text-align: center;
     padding: 30px 20px 120px;
     position: relative;
}

.footer-content {
     color: var(--text-color);
     font-size: 1rem;
     opacity: 0.8;
     transition: color var(--transition-speed);
}

.footer-decoration {
     margin-top: 15px;
     display: flex;
     justify-content: center;
     gap: 10px;
}

.small-heart {
     font-size: 0.8rem;
     animation: float 3s infinite ease-in-out;
}

.small-heart:nth-child(2) {
     animation-delay: 0.5s;
}

.small-heart:nth-child(3) {
     animation-delay: 1s;
}

/* Animations */
@keyframes pulse {
     0% {
          transform: scale(1);
     }

     50% {
          transform: scale(1.15);
     }

     100% {
          transform: scale(1);
     }
}

@keyframes float {

     0%,
     100% {
          transform: translateY(0);
     }

     50% {
          transform: translateY(-10px);
     }
}

.pulse {
     animation: pulse 2.5s infinite ease-in-out;
}

/* Responsive Adjustments */
@media (max-width: 900px) {
     .page-header h1 {
          font-size: 3rem;
     }

     .card-inner {
          flex-direction: column;
     }

     .section-image {
          height: 120px;
          flex-basis: auto;
     }

     .photo-frame {
          width: 160px;
          height: 160px;
     }
}

@media (max-width: 640px) {
     body {
          padding: 0;
     }

     .page-header {
          padding: 70px 0 30px;
     }

     .page-header h1 {
          font-size: 2.5rem;
     }

     .photo-frame {
          width: 140px;
          height: 140px;
     }

     .main-nav {
          width: 90%;
          padding: 8px 10px;
     }

     .main-nav a {
          padding: 8px;
     }

     .main-nav a i {
          font-size: 1rem;
     }

     .main-nav a span {
          font-size: 0.65rem;
     }

     .section-content {
          padding: 30px 25px;
     }

     .message-card h2 {
          font-size: 1.6rem;
     }

     .message-card p {
          font-size: 1rem;
     }
}

@media (max-width: 400px) {
     .page-header h1 {
          font-size: 2.2rem;
     }

     .photo-frame {
          width: 120px;
          height: 120px;
     }

     .photo-placeholder i {
          font-size: 2rem;
     }

     .photo-placeholder span {
          font-size: 0.75rem;
     }

     .heart-icon {
          font-size: 2rem;
     }

     .message-card h2 {
          font-size: 1.4rem;
     }

     .message-card p {
          font-size: 0.95rem;
          line-height: 1.7;
     }

     .option label {
          padding: 8px 15px;
          font-size: 0.85rem;
     }

     .toggle-button {
          padding: 8px 15px;
          font-size: 0.85rem;
     }
}