:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#000000de;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}#root{width:100%;min-height:100vh}@font-face{font-family:DearScript;src:url(/assets/otf/DearScript-F5ixe1xn.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}:root{--primary-green: #94a094;--secondary-beige: #f8f8f6;--white: #ffffff;--black: #000000;--gray: #8c8c8c;--dark-gray: #5c5c5c;--light-gray: #f0f2f5;--primary-red: #94a094;--dark-red: #7a8a7a;--spacing-xs: 8px;--spacing-sm: 15px;--spacing-md: 20px;--spacing-lg: 30px;--spacing-xl: 40px;--spacing-xxl: 60px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 28px;--fs-4xl: 32px;--fs-5xl: 36px;--fs-6xl: 42px;--fs-7xl: 48px;--font-primary: "Quicksand", sans-serif;--font-secondary: "Playfair Display", serif;--font-cursive: "Signora", cursive;--transition-fast: .2s ease;--transition-base: .3s ease;--transition-slow: .5s ease;--shadow-sm: 0 2px 10px rgba(0, 0, 0, .1);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 20px rgba(0, 0, 0, .1);--shadow-text: 2px 2px 4px rgba(0, 0, 0, .3);--shadow-text-strong: 2px 2px 8px rgba(0, 0, 0, .7);--radius-sm: 5px;--radius-md: 8px;--radius-lg: 10px;--radius-xl: 15px;--radius-full: 50%;--container-mobile: 100vw;--container-desktop: 500px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;font-size:var(--fs-base)}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600}p{margin:0;line-height:1.6}button{cursor:pointer;border:none;outline:none;font-family:inherit;transition:all var(--transition-base)}button:hover{transform:scale(1.05)}button:active{transform:scale(.95)}.desktop-content::-webkit-scrollbar{width:8px}.desktop-content::-webkit-scrollbar-track{background:var(--light-gray)}.desktop-content::-webkit-scrollbar-thumb{background:var(--gray);border-radius:4px}.desktop-content::-webkit-scrollbar-thumb:hover{background:var(--dark-gray)}.app-container{width:100%;min-height:100vh;background-color:var(--white);position:relative;padding:0}.desktop-view{max-width:100%;margin:0 auto;background-color:var(--secondary-beige);min-height:100vh;padding:0}.desktop-content{width:100%;margin:auto;position:relative;background:var(--white);height:100%}.wedding-content{position:relative;overflow-y:auto;overflow-x:hidden;background:var(--white);height:100vh}.page-container{position:relative;width:100%;background:var(--white);min-height:100%}.hero-section,.second-section,.invitation-header-section,.love-story-section,.our-story-section,.large-photo-section,.love-freedom-section,.portrait-section,.calendar-section,.invitation-details-section,.gallery-section,.map-section,.rsvp-section,.final-section{position:relative;width:100%;background:var(--white);overflow:hidden}@media(min-width:501px){.desktop-view{max-width:var(--container-desktop);padding:5vh 0}.desktop-content{width:var(--container-desktop);border:1px solid #e0e0e0;box-shadow:var(--shadow-sm);border-radius:3px}.wedding-content{height:90vh}.page-container,.hero-section,.second-section,.invitation-header-section,.love-story-section,.our-story-section,.large-photo-section,.love-freedom-section,.portrait-section,.calendar-section,.invitation-details-section,.gallery-section,.map-section,.rsvp-section,.final-section{width:var(--container-desktop)}}.section-heading{color:var(--black);font-size:var(--fs-2xl);font-weight:700;font-family:var(--font-secondary);text-align:center;letter-spacing:2px;margin-bottom:var(--spacing-md)}.section-title{color:var(--black);font-size:var(--fs-lg);font-weight:500;font-family:var(--font-secondary);text-align:center;letter-spacing:1px;margin-top:var(--spacing-xs);padding:0 var(--spacing-sm)}.section-quote{position:absolute;top:13px;left:2%;width:96%;color:var(--white);font-size:var(--fs-sm);font-weight:500;font-family:var(--font-primary);text-align:center;line-height:1.5;padding:var(--spacing-xs);z-index:1}.poem-text{font-size:var(--fs-sm);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);text-align:center;line-height:1.8;margin:var(--spacing-md) auto;max-width:400px;font-style:italic;padding:0 var(--spacing-sm)}.decorative-divider{width:60px;height:2px;background:var(--primary-red);margin:var(--spacing-lg) auto;border-radius:2px}.decorative-icon{font-size:var(--fs-3xl);color:var(--primary-red)}.section-image{width:100%;height:auto;min-height:200px;object-fit:cover;border-radius:0}.story-img{width:100%;max-width:400px;margin:var(--spacing-md) auto;display:block;border-radius:var(--radius-sm)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--fs-base);color:var(--black);font-family:var(--font-primary)}.form-group input[type=text]{width:100%;padding:var(--spacing-xs) 12px;border-radius:4px;border:1px solid #e0e0e0;font-size:var(--fs-base);background:var(--white);color:var(--black);font-family:var(--font-primary)}.submit-btn{background:var(--dark-gray);color:var(--white);padding:10px var(--spacing-md);border-radius:4px;border:none;font-size:var(--fs-base);cursor:pointer;margin-top:12px;width:100%;font-family:var(--font-primary);transition:all var(--transition-base)}.submit-btn:hover{background:#444;transform:scale(1.02)}.radio-group{display:flex;flex-direction:column;gap:12px}.radio-group label{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--fs-base);color:var(--black);cursor:pointer;font-family:var(--font-primary)}.radio-group input[type=radio]{width:18px;height:18px;cursor:pointer}@media(min-width:501px){.section-heading{font-size:var(--fs-4xl);margin-bottom:var(--spacing-md)}.section-title{font-size:var(--fs-lg)}.poem-text{font-size:var(--fs-md)}.decorative-divider{width:80px;height:3px}.decorative-icon{font-size:var(--fs-7xl)}}.hero-section{min-height:100vh;padding-bottom:var(--spacing-lg)}.cover-image{position:absolute;top:-4px;left:0;width:100%;height:100%;object-fit:cover;z-index:0}.hero-overlay{position:absolute;top:0;left:0;width:100%;height:450px;background:linear-gradient(to bottom,rgba(0,0,0,.6) 0%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.2) 80%,transparent 100%);z-index:1;pointer-events:none}.hero-quote,.hero-quote-top{position:absolute;top:15px;left:5%;width:90%;color:#f9f7f2;font-size:var(--fs-sm);font-weight:500;font-family:var(--font-primary);text-align:center;line-height:1.5;z-index:1}.hero-title{position:absolute;top:110px;left:5%;width:90%;color:#f9f7f2;font-size:var(--fs-lg);font-weight:700;font-family:var(--font-secondary);text-align:center;padding:0 10px;z-index:1}.hero-subtitle{position:absolute;top:220px;left:5%;width:50%;color:#f9f7f2;font-size:var(--fs-3xl);font-weight:400;font-family:var(--font-secondary);text-align:center;transform:rotate(17.227deg);z-index:1}.couple-names{position:absolute;top:80px;left:5%;width:90%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0px;padding:0 5%;z-index:2}.groom-name,.bride-name{color:#f9f7f2;font-size:56px;font-weight:400;font-family:DearScript,cursive;text-align:center;text-shadow:0 2px 8px rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.4),0 0 20px rgba(249,247,242,.3);letter-spacing:2px;flex:none;width:100%}.couple-divider{color:#f9f7f2;font-size:48px;font-weight:400;font-family:var(--font-cursive),sans-serif;text-shadow:0 2px 8px rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.4);margin:5px 0}.DearScript{color:#f9f7f2;font-size:32px;font-weight:400;font-family:DearScript,cursive;text-align:center;text-shadow:0 2px 8px rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.4);margin:10px 0;line-height:1}.couple-labels{position:absolute;top:240px;left:0;width:100%;display:none;justify-content:space-around;padding:0 5%;z-index:2}.groom-label,.bride-label{position:relative;color:#f9f7f2;font-size:var(--fs-xl);font-weight:800;font-family:var(--font-cursive);text-align:center;text-shadow:0 2px 6px rgba(0,0,0,.7),0 4px 12px rgba(0,0,0,.5);letter-spacing:3px}.wedding-date{position:absolute;top:330px;left:5%;width:90%;color:#f9f7f2;font-size:25px;font-weight:600;font-family:var(--font-cursive),sans-serif;text-align:center;text-shadow:0 2px 8px rgba(0,0,0,.6),0 4px 12px rgba(0,0,0,.4),0 0 15px rgba(249,247,242,.2);letter-spacing:4px;z-index:2}.hero-footer{display:none}@media(min-width:501px){.hero-quote,.hero-quote-top{font-size:var(--fs-base)}.hero-title{top:120px;font-size:var(--fs-xl)}.hero-subtitle{top:240px;font-size:var(--fs-5xl)}.couple-names{top:100px;gap:15px;padding:0 var(--spacing-md)}.groom-name,.bride-name{font-size:72px}.couple-divider{font-size:56px}.DearScript{font-size:42px}.couple-labels{top:280px;padding:0 var(--spacing-md)}.groom-label,.bride-label{font-size:26px}.wedding-date{top:380px;font-size:40px}}.second-section{margin-top:var(--spacing-md);padding:var(--spacing-md) 0}.invitation-header-section{padding:0 var(--spacing-sm);text-align:center;background-color:#fafafa}.invitation-two-columns{display:flex;gap:var(--spacing-lg);align-items:center;justify-content:center;flex-direction:column}.invitation-left-column,.invitation-right-column{width:100%;padding:var(--spacing-md)}.parents-info{margin:var(--spacing-lg) 0;display:flex;gap:var(--spacing-lg);justify-content:center;align-items:flex-start}.parents-title{font-size:var(--fs-lg);font-weight:600;font-family:var(--font-primary);color:var(--black);margin-bottom:10px}.parents-names{font-size:var(--fs-base);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);line-height:1.6}.parents-column{margin:var(--spacing-md) 0;text-align:center}.parents-column h4{font-size:var(--fs-lg);font-weight:700;font-family:var(--font-secondary);color:var(--primary-red);margin-bottom:10px}.parents-column p{font-size:var(--fs-base);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);margin:5px 0}.invitation-main-title,.invitation-request,.invite-text{font-size:var(--fs-xl);font-weight:700;font-family:var(--font-secondary);color:var(--primary-red);letter-spacing:2px;text-align:center}.invitation-names{font-size:var(--fs-4xl);font-weight:400;font-family:var(--font-cursive);color:var(--black);margin:var(--spacing-md) 0}.invitation-date-display{font-size:var(--fs-2xl);font-weight:500;font-family:var(--font-secondary);color:var(--black);margin:var(--spacing-sm) 0}.invitation-photo{width:95%;max-width:372px;height:auto;margin:var(--spacing-md) auto;display:block;border-radius:var(--radius-sm)}.invitation-box{display:flex;align-items:center;justify-content:center;gap:10px;margin:var(--spacing-xl) 0;flex-direction:row}.invitation-leaf{font-size:var(--fs-5xl);color:var(--primary-red)}.invitation-text{color:var(--black);font-size:var(--fs-md);font-weight:500;font-family:var(--font-secondary);text-align:center;line-height:1.2}.invitation-message{color:var(--black);font-size:var(--fs-md);font-weight:500;font-family:var(--font-secondary);text-align:center;margin:var(--spacing-lg) 0}@media(min-width:501px){.invitation-header-section{padding:var(--spacing-xl) var(--spacing-md)}.invitation-two-columns{flex-direction:row;flex-wrap:wrap}.invitation-left-column,.invitation-right-column{flex:1;min-width:300px;max-width:500px}.invitation-main-title,.invitation-request,.invite-text{font-size:var(--fs-4xl)}.invitation-names{font-size:var(--fs-7xl)}.invitation-box{flex-direction:row}.invitation-leaf{font-size:var(--fs-7xl)}.invitation-text{font-size:var(--fs-xl)}}.logo-countdown-section{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:80px var(--spacing-md);background:var(--light-gray)}.logo-countdown-container{max-width:1200px;width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xl)}.logo-wrapper{width:100%;max-width:150px}.main-logo{width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 4px 8px rgba(0,0,0,.1))}.countdown-text{text-align:center;display:flex;flex-direction:column;gap:5px;margin-bottom:var(--spacing-lg)}.countdown-title,.countdown-subtitle{font-family:var(--font-secondary);font-size:clamp(1.2rem,3vw,1.8rem);font-weight:300;letter-spacing:8px;color:var(--gray);margin:0;line-height:1.6;text-transform:uppercase}.countdown-timer{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md) 0;font-family:var(--font-secondary);font-size:clamp(2.5rem,6vw,5rem);font-weight:200;letter-spacing:10px;color:var(--gray)}.timer-number,.timer-separator{line-height:1}.timer-separator{margin:0 5px}.timer-label{display:block;margin-top:3px;font-size:.86rem;color:#94a094;font-family:var(--font-secondary, "Montserrat", Arial, sans-serif);font-weight:400;opacity:.82;letter-spacing:1.2px;text-align:center;font-style:italic;text-transform:capitalize;line-height:1.1}.vertical-image-wrapper,.horizontal-image-wrapper,.left-image-wrapper,.right-image-wrapper{width:100%;overflow:hidden;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.vertical-image-wrapper{max-width:600px}.vertical-image,.horizontal-image,.side-image{width:100%;height:auto;object-fit:cover;transition:transform var(--transition-slow)}.horizontal-image{max-height:500px}.vertical-image-wrapper:hover .vertical-image,.horizontal-image-wrapper:hover .horizontal-image,.left-image-wrapper:hover .side-image,.right-image-wrapper:hover .side-image{transform:scale(1.05)}.left-right-images-section{width:100%;max-width:1200px;display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg);margin-top:var(--spacing-xl)}.left-image-wrapper,.right-image-wrapper{flex:1;max-width:48%}.wedding-info.groom-info,.wedding-info.bride-info{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.2em}.wedding-info.bride-info{align-items:center;text-align:center}.wedding-info .label{font-family:DearScript,cursive;font-size:2rem;color:var(--gray);opacity:.85;margin-bottom:2px;font-weight:400;letter-spacing:1px}.wedding-info .name{font-family:DearScript,cursive;font-size:2.5rem;color:#94a094;font-weight:400;letter-spacing:2px;margin:4px 0}.wedding-info .date{font-family:DearScript,cursive;font-size:1.5rem;color:var(--gray);opacity:.75}.countdown-date{margin-top:-12px;font-family:DearScript,cursive;font-size:1.28rem;color:#94a094;font-style:italic;text-align:center;opacity:.85;letter-spacing:1.5px}@media(max-width:768px){.logo-countdown-section{padding:var(--spacing-xxl) var(--spacing-sm)}.logo-countdown-container{gap:var(--spacing-lg)}.logo-wrapper{max-width:100px}.countdown-text{margin-bottom:var(--spacing-md)}.countdown-title,.countdown-subtitle{letter-spacing:4px}.countdown-timer{gap:10px;letter-spacing:5px}.timer-separator{margin:0 3px}.vertical-image-wrapper{max-width:100%}.horizontal-image{max-height:400px}.left-right-images-section{gap:var(--spacing-sm)}}@media(max-width:480px){.logo-countdown-section{padding:var(--spacing-xl) 10px}.countdown-text{gap:5px;margin-bottom:var(--spacing-sm)}.countdown-title,.countdown-subtitle{letter-spacing:2px}.countdown-timer{gap:var(--spacing-xs);letter-spacing:3px}.timer-separator{margin:0 2px}.left-right-images-section{gap:10px;margin-top:var(--spacing-lg)}}.calendar-section{padding:var(--spacing-xl) var(--spacing-sm);text-align:center}.calendar-title{font-size:var(--fs-2xl);font-weight:700;font-family:var(--font-secondary);color:var(--primary-red);margin-bottom:var(--spacing-lg);letter-spacing:2px}.calendar-widget{max-width:100%;margin:var(--spacing-lg) auto;padding:var(--spacing-sm);background:var(--white);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:2px solid var(--light-gray)}.calendar-header{font-size:var(--fs-md);font-weight:700;font-family:var(--font-secondary);color:var(--black);margin-bottom:var(--spacing-md);text-align:center}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.calendar-weekday{font-size:11px;font-weight:600;font-family:var(--font-primary);color:var(--dark-gray);text-align:center;padding:5px 0}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--spacing-xs)}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;font-family:var(--font-primary);color:var(--black);background:var(--light-gray);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);min-height:30px}.calendar-day.empty{background:transparent;cursor:default}.calendar-day:not(.empty):hover{background:var(--primary-red);color:var(--white);transform:scale(1.1)}.calendar-day.highlighted{background:var(--primary-red);color:var(--white);font-weight:700;font-size:var(--fs-base);box-shadow:0 4px 12px #d6303080;transform:scale(1.15)}.calendar-note{font-size:var(--fs-sm);font-weight:500;font-family:var(--font-primary);color:var(--dark-gray);margin-top:var(--spacing-md);font-style:italic;padding:0 var(--spacing-sm)}.invitation-details-section{padding:0var (--spacing-sm);text-align:center;background-color:#fafafa}.divider-line{width:60px;height:2px;background:#94a094;margin:var(--spacing-lg) auto;border-radius:2px}.invite-blessing{font-size:var(--fs-lg);font-weight:500;font-family:var(--font-primary);color:#94a094;margin:var(--spacing-md) 0}.invitation-details-title,.invited-title{font-size:var(--fs-xl);font-weight:700;font-family:var(--font-secondary);color:var(--primary-red);margin-bottom:var(--spacing-lg);letter-spacing:2px}.invitation-time,.time-slot{font-size:var(--fs-4xl);font-weight:700;font-family:var(--font-secondary);color:#94a094;margin:0}.invitation-day,.invite-subtitle,.invite-time{font-size:var(--fs-md);font-weight:500;font-family:var(--font-primary);color:var(--dark-gray);margin:10px 0}.invitation-full-date{font-size:var(--fs-3xl);font-weight:600;font-family:var(--font-secondary);color:var(--black);margin:var(--spacing-sm) 0}.invitation-lunar,.lunar-date{font-size:var(--fs-sm);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);font-style:italic;margin:var(--spacing-md) 0}.invitation-location{font-size:var(--fs-xl);font-weight:500;font-family:var(--font-primary);color:var(--black);margin:var(--spacing-lg) 0;line-height:1.6}.invitation-address{font-size:var(--fs-base);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);line-height:1.8;max-width:400px;margin:0 auto}.time-date-display{display:flex;align-items:center;justify-content:center;gap:0;margin:0;flex-direction:column}.date-full{text-align:center}.date-full p{font-size:var(--fs-base);font-weight:500;font-family:var(--font-primary);color:var(--dark-gray);margin:5px 0}.date-number{font-size:var(--fs-6xl)!important;font-weight:700!important;font-family:var(--font-secondary)!important;color:#94a094!important}.time-year{font-size:var(--fs-5xl);font-weight:700;font-family:var(--font-secondary);color:var(--black)}.location-title{font-size:var(--fs-xl);font-weight:700;font-family:var(--font-secondary);color:#94a094;margin:var(--spacing-lg) 0 var(--spacing-sm);text-align:center}.location-section{margin:var(--spacing-lg) 0}.location-name{font-size:var(--fs-2xl);font-weight:700;font-family:var(--font-secondary);color:#94a094;margin:var(--spacing-sm) 0}.location-address{font-size:var(--fs-base);font-weight:400;font-family:var(--font-primary);color:#94a094;line-height:1.8;max-width:400px;margin:0 auto}.direction-button{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:12px 24px;background:#94a094;color:var(--white);border-radius:var(--radius-md);font-size:var(--fs-base);font-weight:600;font-family:var(--font-primary);cursor:pointer;transition:all var(--transition-base)}.direction-button:hover{background:#7a8a7a;transform:scale(1.05)}.map-icon{font-size:var(--fs-lg)}.direction-text{letter-spacing:1px}.location-info{text-align:center}.location-info p{font-size:var(--fs-md);font-weight:500;font-family:var(--font-primary);color:var(--dark-gray);margin:var(--spacing-xs) 0;line-height:1.6;padding:0 var(--spacing-sm)}.love-freedom-section{padding:var(--spacing-xl) var(--spacing-sm);text-align:center}.love-freedom-title{font-size:var(--fs-xl);font-weight:600;font-family:var(--font-secondary);color:var(--black);margin-bottom:var(--spacing-md);line-height:1.4}.nature-poem{font-size:var(--fs-xs);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);line-height:1.8;margin:var(--spacing-md) auto;max-width:400px;font-style:italic;padding:0 var(--spacing-sm)}.info-labels{display:flex;justify-content:center;gap:var(--spacing-md);margin:var(--spacing-lg) 0;flex-direction:column}.info-labels span{font-size:var(--fs-base);font-weight:600;font-family:var(--font-primary);color:var(--dark-gray);letter-spacing:1px}.map-section{padding:var(--spacing-lg) var(--spacing-sm);background-color:#fafafa}.map-title{font-size:var(--fs-3xl);font-weight:700;font-family:var(--font-secondary);color:var(--black);text-align:center;margin-bottom:var(--spacing-md);letter-spacing:1px}.map-container{width:100%;height:250px;border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-md)}.map-container iframe{width:100%;height:100%;border:none}.rsvp-section{padding:var(--spacing-lg) var(--spacing-sm);background:var(--white)}.rsvp-form{background:var(--white);color:var(--black);box-shadow:var(--shadow-sm);border-radius:var(--radius-sm);padding:var(--spacing-sm);border:1px solid #e0e0e0}.rsvp-form h3{margin-bottom:var(--spacing-md);color:var(--black);font-weight:700;font-size:var(--fs-base);text-align:center;font-family:var(--font-primary)}.final-section{padding:var(--spacing-xxl) var(--spacing-sm);text-align:center}.final-message{font-size:var(--fs-3xl);font-weight:700;font-family:var(--font-cursive);color:var(--primary-red);margin-bottom:var(--spacing-lg);letter-spacing:2px;line-height:1.3}.final-subtitle{font-size:var(--fs-xl);font-weight:400;font-family:var(--font-primary);color:var(--dark-gray);line-height:1.8;margin:var(--spacing-md) auto;max-width:400px}.final-thankyou,.thankyou-title{font-size:var(--fs-3xl);font-weight:700;font-family:var(--font-secondary);color:var(--black);margin-top:var(--spacing-xl);letter-spacing:2px}.final-signature,.sunshine-title{font-size:var(--fs-2xl);font-weight:400;font-family:var(--font-cursive);color:var(--primary-red);margin-top:var(--spacing-md);line-height:1.3}.final-year{font-size:var(--fs-lg);font-weight:500;font-family:var(--font-primary);color:var(--dark-gray);margin-top:var(--spacing-lg)}.final-cover{width:100%;height:auto;margin-bottom:var(--spacing-md)}.final-labels{display:flex;flex-direction:column;align-items:center;margin:var(--spacing-md) 0}.final-labels span{font-size:var(--fs-xl);font-weight:700;font-family:var(--font-secondary);color:var(--primary-red);letter-spacing:2px;margin:5px 0}.final-portrait{width:95%;max-width:500px;height:auto;margin:var(--spacing-md) auto;display:block}.watermark{display:none}@media(min-width:501px){.love-freedom-section{padding:var(--spacing-xxl) var(--spacing-md)}.love-freedom-title{font-size:var(--fs-3xl)}.nature-poem{font-size:var(--fs-md)}.info-labels{flex-direction:row}.map-section{padding:var(--spacing-xl) var(--spacing-md)}.map-container{height:350px;border-radius:var(--radius-lg)}.rsvp-section{padding:var(--spacing-xl) var(--spacing-md)}.rsvp-form{padding:var(--spacing-md)}.rsvp-form h3{font-size:var(--fs-lg)}.final-section{padding:80px var(--spacing-md)}.final-message{font-size:var(--fs-6xl)}.final-subtitle{font-size:var(--fs-xl)}.final-thankyou,.thankyou-title{font-size:var(--fs-5xl)}.final-signature,.sunshine-title{font-size:var(--fs-3xl)}.final-labels span{font-size:var(--fs-2xl)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideLeft{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes slideRight{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounceGift{0%{transform:translateY(0)}8%{transform:translateY(-10px)}13%{transform:translateY(0)}16%{transform:translateY(-5px)}19%{transform:translateY(0)}22%{transform:translateY(-2px)}25%,to{transform:translateY(0)}}.hero-section *,.second-section *,.love-story-section *,.date-section *,.story-images *,.rsvp-section *,.map-section *{transition:opacity var(--transition-base),transform var(--transition-base)}@media print{.music-player,.interactive-toolbar,.watermark,.hero-footer{display:none!important}.desktop-view{padding:0}.desktop-content{border:none;box-shadow:none}}.intro-animation{position:fixed;top:0;left:0;width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#94a094,#a8b4a8,#94a094);z-index:9999;overflow:hidden}.intro-content{position:relative;width:250px;height:250px;display:flex;align-items:center;justify-content:center}.intro-circle{position:absolute;width:200px;height:200px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 8px 16px rgba(148,160,148,.2))}.texture-pattern{width:100%;height:100%}.intro-leaves{position:absolute;width:100%;height:100%}.leaf{position:absolute;top:50%;left:50%;transform-origin:center;animation:leaf-float 3s ease-in-out infinite}.leaf svg{display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}@keyframes leaf-float{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(2deg)}75%{transform:translateY(3px) rotate(-2deg)}}.intro-logo{position:relative;z-index:2;text-align:center;width:120px;height:120px;display:flex;align-items:center;justify-content:center}.intro-logo img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(0,0,0,.2))}@media(max-width:768px){.intro-content{width:200px;height:200px}.intro-circle{width:160px;height:160px}.intro-logo{width:100px;height:100px}.leaf{transform:scale(.8)}}@keyframes texture-pulse{0%,to{opacity:.6}50%{opacity:.8}}.intro-circle circle:last-child{animation:texture-pulse 2s ease-in-out infinite}.timeline-section{width:100%;padding:80px 20px;background-color:#fafafa;position:relative;overflow:hidden;min-height:400px}.timeline-header{text-align:center;margin-bottom:60px;max-width:700px;margin-left:auto;margin-right:auto}.timeline-title{font-family:var(--font-secondary);font-size:var(--fs-4xl);color:var(--primary-green);margin-bottom:15px;font-weight:700;letter-spacing:1px}.timeline-subtitle{font-family:var(--font-primary);font-size:var(--fs-lg);color:var(--dark-gray);line-height:1.6;font-style:italic}.timeline-container{max-width:800px;margin:0 auto;position:relative;padding:40px 0;min-height:300px}.timeline-line{position:absolute;left:40px;top:0;bottom:0;width:3px;background:linear-gradient(to bottom,transparent 0%,var(--primary-green) 10%,var(--primary-green) 90%,transparent 100%);will-change:transform;opacity:1}.timeline-item{position:relative;margin-bottom:60px;padding-left:80px;opacity:1}.timeline-item:last-child{margin-bottom:0}.timeline-dot{position:absolute;left:30px;top:8px;width:20px;height:20px;border-radius:50%;background-color:var(--primary-green);border:3px solid #fafafa;box-shadow:0 0 0 2px var(--primary-green),0 0 20px #4caf504d;z-index:2;will-change:transform,opacity;cursor:pointer;transition:box-shadow .3s ease;opacity:1;transform:scale(1)}.timeline-dot:hover{box-shadow:0 0 0 4px var(--primary-green),0 0 30px #4caf5099}.timeline-content{background-color:var(--white);padding:30px 35px;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);will-change:transform,box-shadow;cursor:pointer;position:relative;overflow:hidden;opacity:1;transform:translate(0)}.timeline-content:before{content:"";position:absolute;left:0;top:0;height:100%;width:4px;background:linear-gradient(to bottom,var(--primary-green),rgba(76,175,80,.5));transform:scaleY(0);transform-origin:top;transition:transform .3s ease}.timeline-content:hover:before{transform:scaleY(1)}.timeline-year{font-size:var(--fs-xl);font-weight:600;color:var(--primary-green);margin-bottom:15px;letter-spacing:1px;text-transform:uppercase;font-family:var(--font-primary);position:relative;display:inline-block}.timeline-year:after{content:"";position:absolute;left:0;bottom:-5px;height:2px;width:0;background-color:var(--primary-green);transition:width .4s ease}.timeline-content:hover .timeline-year:after{width:100%}.timeline-description{font-size:var(--fs-base);line-height:1.8;color:var(--dark-gray);margin:0;text-align:justify;font-family:var(--font-primary)}@media(max-width:768px){.timeline-section{padding:60px 15px}.timeline-header{margin-bottom:40px}.timeline-title{font-size:var(--fs-3xl)}.timeline-subtitle{font-size:var(--fs-base)}.timeline-line{left:20px}.timeline-item{padding-left:50px}.timeline-dot{left:10px;width:18px;height:18px}.timeline-content{padding:20px 25px}.timeline-year{font-size:18px}.timeline-description{font-size:var(--fs-sm)}}@media(max-width:480px){.timeline-section{padding:40px 10px}.timeline-header{margin-bottom:30px}.timeline-title{font-size:var(--fs-2xl)}.timeline-subtitle{font-size:var(--fs-sm)}.timeline-line{left:15px}.timeline-item{padding-left:40px;margin-bottom:40px}.timeline-dot{left:6px;width:16px;height:16px}.timeline-content{padding:18px 20px}.timeline-year{font-size:16px;margin-bottom:12px}.timeline-description{font-size:var(--fs-sm);line-height:1.7}}.image-showcase-section{padding:var(--spacing-xl) var(--spacing-sm);background:var(--white)}.image-showcase-container{display:grid;grid-template-columns:1fr;gap:var(--spacing-md)}.image-card{overflow:hidden;border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.image-card img{width:100%;height:auto;display:block;transform:scale(1.02);transition:transform .4s ease}.image-card img.qr-image{width:60%;max-width:260px;margin:12px auto;transform:none}.image-card:hover img.qr-image{transform:none}.qr-card{background:linear-gradient(180deg,#fff,#fafafa);border:1px solid #ececec;border-radius:var(--radius-lg);padding:18px 16px;box-shadow:0 8px 24px #00000014;max-width:440px;margin:0 auto;position:relative}.qr-card:before{content:"";position:absolute;inset:6px;border-radius:calc(var(--radius-lg) - 6px);pointer-events:none;background:linear-gradient(135deg,#e91e6314,#e91e6300)}.qr-frame{position:relative;background:#fff;border-radius:var(--radius-sm);border:1px dashed #e6e6e6;padding:14px 10px}.qr-frame:before,.qr-frame:after{content:"";position:absolute;width:18px;height:18px;border:2px solid #e0e0e0;border-radius:4px}.qr-frame:before{top:8px;left:8px;border-right:none;border-bottom:none}.qr-frame:after{bottom:8px;right:8px;border-left:none;border-top:none}.qr-note{text-align:center;font-family:var(--font-primary);font-size:var(--fs-sm);color:var(--dark-gray);margin-top:10px}.qr-header{text-align:center;margin-bottom:10px}.qr-title{margin:0;font-family:var(--font-secondary);font-weight:700;font-size:var(--fs-lg);letter-spacing:1px;color:var(--black)}.qr-subtitle{margin:2px 0 4px;font-family:var(--font-cursive);font-size:var(--fs-xl);color:var(--primary-red)}.qr-divider{position:relative;height:12px}.qr-divider:before,.qr-divider:after{content:"";position:absolute;top:50%;width:38%;height:1px;background:linear-gradient(90deg,#0000000d,#00000026)}.qr-divider:before{left:0}.qr-divider:after{right:0}.image-card:hover img{transform:scale(1.06)}@media(min-width:640px){.image-showcase-container{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.image-showcase-section{padding:var(--spacing-xxl) var(--spacing-md)}.image-showcase-container{gap:var(--spacing-lg)}.image-card{border-radius:var(--radius-md);box-shadow:var(--shadow-md)}}
