:root{--cream:#fdf6f0;--warm-white:#fffbf7;--blush:#f4d1cc;--rose:#e8a0a0;--deep-rose:#c25b6e;--burgundy:#8b2252;--gold:#d4a574;--gold-light:#e8c9a0;--charcoal:#2d1b14;--brown:#5c3d2e;--soft-brown:#8b7265;--overlay:#2d1b148c;--font-heading:"Playfair Display",Georgia,serif;--font-body:"Inter",-apple-system,sans-serif;--font-script:"Great Vibes",cursive}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--charcoal);background:var(--cream);line-height:1.7;overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}.login-page{justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-bg{z-index:0;position:absolute;inset:0}.login-bg img{object-fit:cover;filter:blur(3px)brightness(.4);width:100%;height:100%;transform:scale(1.05)}.login-particles{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.particle{background:#d4a5744d;border-radius:50%;animation:linear infinite floatUp;position:absolute}@keyframes floatUp{0%{opacity:0;transform:translateY(100vh)scale(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(-20vh)scale(1)}}.login-card{z-index:10;-webkit-backdrop-filter:blur(20px);text-align:center;background:#fdf6f0eb;border:1px solid #d4a5744d;border-radius:24px;width:90%;max-width:440px;padding:48px 40px;animation:.8s ease-out cardAppear;position:relative;box-shadow:0 20px 60px #2d1b144d,inset 0 0 0 1px #ffffff1a}@keyframes cardAppear{0%{opacity:0;transform:translateY(30px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.login-emoji{margin-bottom:8px;font-size:56px;animation:2s ease-in-out infinite gentleBounce}@keyframes gentleBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.login-title{font-family:var(--font-script);color:var(--burgundy);margin-bottom:4px;font-size:42px;font-weight:400}.login-subtitle{font-family:var(--font-heading);color:var(--soft-brown);margin-bottom:32px;font-size:18px;font-style:italic;font-weight:400}.login-form{flex-direction:column;gap:16px;display:flex}.input-group{text-align:left}.input-group label{text-transform:uppercase;letter-spacing:1px;color:var(--soft-brown);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.input-group input{border:2px solid var(--blush);width:100%;font-family:var(--font-body);color:var(--charcoal);background:var(--warm-white);border-radius:12px;outline:none;padding:14px 16px;font-size:15px;transition:all .3s}.input-group input:focus{border-color:var(--deep-rose);box-shadow:0 0 0 4px #c25b6e1a}.input-group input:read-only{color:var(--soft-brown);cursor:default;background:#f0e8e2}.password-hint{color:var(--soft-brown);margin-top:4px;font-size:13px;font-style:italic}.login-btn{background:linear-gradient(135deg,var(--deep-rose),var(--burgundy));color:#fff;font-family:var(--font-heading);cursor:pointer;letter-spacing:.5px;border:none;border-radius:12px;margin-top:8px;padding:16px;font-size:18px;font-weight:600;transition:all .3s}.login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px #8b225259}.login-btn:active{transform:translateY(0)}.login-error{color:var(--deep-rose);background:#fff0f0;border:1px solid #f4a0a0;border-radius:10px;margin-top:12px;padding:12px 16px;font-size:14px;font-weight:500;animation:.5s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.login-page.fade-out .login-card{animation:.8s ease-in forwards cardFadeOut}.login-page.fade-out .login-bg img{filter:blur()brightness(.7);transition:all 1.2s}@keyframes cardFadeOut{to{opacity:0;transform:translateY(-30px)scale(.95)}}.birthday-page{background:var(--cream)}.hero{justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex;position:relative;overflow:hidden}.hero-bg{z-index:0;position:absolute;inset:0}.hero-bg img{object-fit:cover;filter:brightness(.35);width:100%;height:100%}.hero-content{z-index:2;text-align:center;color:#fff;max-width:800px;position:relative}.hero-greeting{font-family:var(--font-script);color:var(--gold-light);opacity:0;margin-bottom:8px;font-size:28px;animation:1s .3s forwards fadeInUp}.hero-name{font-family:var(--font-heading);opacity:0;margin-bottom:16px;font-size:clamp(42px,8vw,80px);font-weight:700;line-height:1.1;animation:1s .6s forwards fadeInUp}.hero-name span{background:linear-gradient(135deg,#fff 0%,var(--gold-light)100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;display:block}.hero-divider{background:var(--gold);opacity:0;width:80px;height:2px;margin:24px auto;animation:1s .9s forwards fadeInUp}.hero-date{font-family:var(--font-heading);color:var(--gold-light);letter-spacing:2px;opacity:0;font-size:18px;font-style:italic;animation:1s 1.1s forwards fadeInUp}.hero-scroll{z-index:2;color:#fff9;letter-spacing:2px;text-transform:uppercase;opacity:0;flex-direction:column;align-items:center;gap:8px;font-size:13px;animation:1s 1.5s forwards fadeInUp;display:flex;position:absolute;bottom:32px;left:50%;transform:translate(-50%)}.hero-scroll .arrow{border-bottom:2px solid #fff9;border-right:2px solid #fff9;width:20px;height:20px;animation:2s ease-in-out infinite scrollBounce;transform:rotate(45deg)}@keyframes scrollBounce{0%,to{transform:rotate(45deg)translate(0)}50%{transform:rotate(45deg)translate(4px,4px)}}.message-section{background:var(--warm-white);padding:100px 20px}.message-content{max-width:720px;margin:0 auto}.message-content .section-label{font-family:var(--font-script);color:var(--deep-rose);text-align:center;margin-bottom:40px;font-size:32px}.message-text{font-family:var(--font-heading);color:var(--brown);text-align:left;white-space:pre-line;font-size:17px;line-height:2}.message-text p{margin-bottom:20px}.message-signature{text-align:right;font-family:var(--font-script);color:var(--deep-rose);margin-top:48px;font-size:36px}.gallery-section{background:var(--cream);padding:100px 20px}.gallery-title{font-family:var(--font-script);color:var(--burgundy);text-align:center;margin-bottom:60px;font-size:40px}.gallery-grid{grid-template-columns:repeat(12,1fr);gap:16px;max-width:1000px;margin:0 auto;display:grid}.gallery-item{border-radius:16px;transition:transform .4s,box-shadow .4s;position:relative;overflow:hidden;box-shadow:0 4px 20px #2d1b141a}.gallery-item:hover{transform:translateY(-4px);box-shadow:0 12px 40px #2d1b1433}.gallery-item img{object-fit:cover;width:100%;height:100%;transition:transform .6s}.gallery-item:hover img{transform:scale(1.05)}.gallery-item:first-child{aspect-ratio:16/10;grid-column:span 7}.gallery-item:nth-child(2){aspect-ratio:4/5;grid-column:span 5}.gallery-item:nth-child(3){aspect-ratio:3/4;grid-column:span 4}.gallery-item:nth-child(4){aspect-ratio:1;grid-column:span 4}.gallery-item:nth-child(5){aspect-ratio:3/4;grid-column:span 4}.gallery-item:nth-child(6){aspect-ratio:21/9;grid-column:span 12}.gallery-item:nth-child(7){aspect-ratio:4/5;grid-column:span 5}.gallery-item:nth-child(8){aspect-ratio:16/10;grid-column:span 7}.gallery-item:nth-child(9),.gallery-item:nth-child(10){aspect-ratio:4/3;grid-column:span 6}.gallery-item:nth-child(11){aspect-ratio:16/10;grid-column:span 7}.gallery-item:nth-child(12){aspect-ratio:4/5;grid-column:span 5}.video-section{background:var(--charcoal);color:#fff;padding:100px 20px}.video-section .section-label{font-family:var(--font-script);color:var(--gold-light);text-align:center;margin-bottom:12px;font-size:36px}.video-section .section-subtitle{font-family:var(--font-heading);color:#fff9;text-align:center;margin-bottom:48px;font-size:16px;font-style:italic}.video-main-wrapper{max-width:960px;margin:0 auto}.video-container{border-radius:16px;width:100%;padding-bottom:56.25%;position:relative;overflow:hidden;box-shadow:0 8px 40px #00000080}.video-container iframe{border:none;width:100%;height:100%;position:absolute;top:0;left:0}.video-duo{grid-template-columns:1fr 1fr;gap:24px;max-width:960px;margin:0 auto;display:grid}.video-duo-item h3{font-family:var(--font-heading);color:var(--gold-light);text-align:center;margin-bottom:12px;font-size:16px}.closing-section{background:var(--warm-white);text-align:center;padding:100px 20px;position:relative;overflow:hidden}.closing-photo{object-fit:cover;border:4px solid var(--gold-light);border-radius:50%;width:200px;height:200px;margin:0 auto 40px;box-shadow:0 8px 30px #2d1b1426}.closing-quote{font-family:var(--font-heading);color:var(--burgundy);max-width:600px;margin:0 auto 24px;font-size:clamp(28px,5vw,48px);font-style:italic;font-weight:700;line-height:1.3}.closing-author{font-family:var(--font-script);color:var(--deep-rose);margin-bottom:60px;font-size:32px}.footer{text-align:center;color:var(--soft-brown);border-top:1px solid var(--blush);padding:32px 20px;font-size:13px}.footer span{color:var(--deep-rose)}.reveal{opacity:0;transition:all .8s cubic-bezier(.16,1,.3,1);transform:translateY(40px)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.login-card{border-radius:20px;padding:36px 28px}.login-title{font-size:34px}.message-section{padding:60px 20px}.message-text{font-size:15px;line-height:1.9}.gallery-grid{grid-template-columns:repeat(2,1fr);gap:10px}.gallery-item:nth-child(n){aspect-ratio:1;grid-column:span 1}.gallery-item:nth-child(3n+1){aspect-ratio:16/9;grid-column:span 2}.video-duo{grid-template-columns:1fr}.hero-scroll{display:none}.gallery-section,.video-section,.closing-section{padding:60px 16px}}
