.app{min-height:100vh;position:relative}.cover{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-2xl) 0;background:linear-gradient(135deg,#111117,#2a1b32,#471f2c);position:relative;overflow:hidden}.cover:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 50% 50%,rgba(219,39,119,.15) 0%,transparent 70%);pointer-events:none}.cover-content{text-align:center;width:100%;padding:0 var(--spacing-md)}.hearts-decoration{display:flex;justify-content:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);font-size:2rem}.heart-emoji{animation:float 3s ease-in-out infinite}.heart-emoji:nth-child(2){animation-delay:.5s}.heart-emoji:nth-child(3){animation-delay:1s}.cover-title{font-size:clamp(2rem,12vw,6rem);margin-bottom:var(--spacing-lg);line-height:1.15;text-transform:lowercase;font-weight:800;letter-spacing:-.04em;text-shadow:0 4px 30px rgba(219,39,119,.4);filter:drop-shadow(0 0 40px rgba(219,39,119,.3));padding-bottom:.1em}.cover-subtitle{font-size:clamp(1.1rem,4.5vw,1.5rem);color:#ffffffd9;margin-bottom:var(--spacing-xl);line-height:1.6;font-weight:400;text-transform:lowercase;letter-spacing:.02em}.cover-date{font-size:clamp(.9rem,3vw,1.1rem);color:#fff9;text-transform:lowercase;letter-spacing:3px;font-weight:500;margin-top:var(--spacing-md)}.photos{padding:var(--spacing-2xl) 0;background:var(--color-bg-primary);position:relative}.photos:before{content:"";position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(219,39,119,.3),transparent)}.section-title{margin-bottom:var(--spacing-2xl);font-size:clamp(1.75rem,7vw,2.8rem);text-align:center;text-transform:lowercase;font-weight:700;letter-spacing:-.02em}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md)}@media (min-width: 640px){.photo-grid{grid-template-columns:repeat(3,1fr);gap:var(--spacing-lg)}}.photo-card{border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-base);padding:var(--spacing-sm)}.photo-card:hover{transform:translateY(-6px) scale(1.03);box-shadow:0 12px 40px #db277740}.photo-placeholder{aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-bg-secondary) 0%,var(--color-bg-tertiary) 100%)}.photo-image{width:100%;height:100%;object-fit:cover;display:block}.photo-placeholder:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at center,rgba(219,39,119,.05) 0%,transparent 70%);opacity:0;transition:opacity var(--transition-base)}.lightbox{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:pointer}.lightbox img{max-width:90%;max-height:90%;border-radius:10px;box-shadow:0 8px 40px #00000080}.photo-card:hover .photo-placeholder:before{opacity:1}.photo-card:hover .photo-placeholder{border-color:#db277780;box-shadow:inset 0 0 30px #db27771a}.photo-icon{font-size:clamp(2rem,8vw,3rem);opacity:.5}.photo-text{font-size:clamp(.75rem,3vw,.9rem);color:var(--color-text-muted);margin:0;text-transform:lowercase}.photo-caption{text-align:center;font-size:clamp(.9rem,3.5vw,1.05rem);color:#fffc;margin:0;padding:0 var(--spacing-xs);text-transform:lowercase;font-weight:500;letter-spacing:.01em}.memories{padding:var(--spacing-2xl) 0;background:linear-gradient(180deg,var(--color-bg-primary) 0%,var(--color-bg-secondary) 50%,var(--color-bg-primary) 100%);position:relative}.memories-grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-md)}@media (min-width: 640px){.memories-grid{grid-template-columns:repeat(3,1fr);gap:var(--spacing-lg)}}.memory-card{padding:var(--spacing-xl);text-align:center;border-radius:var(--radius-lg);transition:all var(--transition-base);border:1px solid rgba(255,255,255,.08)}.memory-card:hover{transform:translateY(-6px);border-color:#db27774d;box-shadow:0 12px 40px #db277733}.memory-icon{font-size:clamp(2.5rem,8vw,3.5rem);margin-bottom:var(--spacing-md)}.memory-card h3{font-size:clamp(1.2rem,4.5vw,1.5rem);margin-bottom:var(--spacing-md);text-transform:lowercase;font-weight:700;letter-spacing:-.01em}.memory-card p{font-size:clamp(.95rem,3.5vw,1.1rem);color:#ffffffbf;margin:0;line-height:1.7;text-transform:lowercase;font-weight:400}.message{padding:var(--spacing-2xl) 0;background:var(--color-bg-primary);position:relative}.message:before{content:"";position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(219,39,119,.3),transparent)}.message-card{padding:var(--spacing-2xl) var(--spacing-lg);text-align:center;border-radius:var(--radius-xl);max-width:650px;margin:0 auto;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d}@media (min-width: 768px){.message-card{padding:var(--spacing-2xl)}}.message-icon{font-size:clamp(3rem,10vw,4rem);margin-bottom:var(--spacing-md)}.message-card h2{font-size:clamp(2rem,7vw,2.8rem);margin-bottom:var(--spacing-xl);text-transform:lowercase;font-weight:700;letter-spacing:-.02em}.message-text{font-size:clamp(1.05rem,4.5vw,1.25rem);color:#ffffffd9;line-height:1.9;margin-bottom:var(--spacing-xl);text-transform:lowercase;font-weight:400;letter-spacing:.01em}.message-signature{font-size:clamp(1.15rem,4.5vw,1.4rem);background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-style:italic;margin:0;text-transform:lowercase;font-weight:600}.footer{padding:var(--spacing-lg) 0;background:var(--color-bg-secondary);border-top:1px solid rgba(255,255,255,.05);text-align:center}.footer p{margin:0;color:var(--color-text-muted);font-size:clamp(.8rem,3vw,.9rem);text-transform:lowercase;font-weight:300}.password-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#111117,#2a1b32,#471f2c);position:relative;overflow:hidden;padding:var(--spacing-md)}.password-screen:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 50% 50%,rgba(219,39,119,.15) 0%,transparent 70%);pointer-events:none}.password-container{width:100%;max-width:400px;z-index:2}.password-content{padding:var(--spacing-2xl) var(--spacing-lg);text-align:center;border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d;animation:fadeInUp .6s ease-out}@media (min-width: 640px){.password-content{padding:var(--spacing-2xl)}}.lock-icon{font-size:clamp(3rem,10vw,4rem);margin-bottom:var(--spacing-lg);animation:pulse 2s ease-in-out infinite}.password-title{font-size:clamp(2rem,8vw,2.8rem);margin-bottom:var(--spacing-md);text-transform:lowercase;font-weight:700;letter-spacing:-.02em}.password-subtitle{font-size:clamp(1rem,4vw,1.2rem);color:#ffffffb3;margin-bottom:var(--spacing-xl);text-transform:lowercase;font-weight:400}.password-form{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.password-input{width:100%;padding:var(--spacing-md) var(--spacing-lg);font-size:clamp(1rem,4vw,1.1rem);font-family:var(--font-primary);background:#ffffff0d;border:2px solid rgba(255,255,255,.1);border-radius:var(--radius-md);color:#fff;text-align:center;transition:all var(--transition-base);text-transform:lowercase}.password-input::placeholder{color:#fff6;text-transform:lowercase}.password-input:focus{outline:none;border-color:var(--color-primary);background:#ffffff14;box-shadow:0 0 20px #db277733}.password-input:disabled{opacity:.5;cursor:not-allowed}.password-button{width:100%;padding:var(--spacing-md) var(--spacing-lg);min-height:var(--touch-target-min);font-size:clamp(1rem,4vw,1.1rem);font-family:var(--font-primary);font-weight:600;text-transform:lowercase;background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);box-shadow:0 4px 16px #db27774d}.password-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #db277766}.password-button:active:not(:disabled){transform:translateY(0)}.password-button:disabled{opacity:.6;cursor:not-allowed}.password-error{color:#ff6b6b;font-size:clamp(.9rem,3vw,1rem);margin:0;text-transform:lowercase;animation:shake .5s ease-in-out}.password-hint{font-size:clamp(1.5rem,6vw,2rem);margin:0;opacity:.5}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}:root{--color-primary: hsl(340, 82%, 52%);--color-primary-light: hsl(340, 82%, 62%);--color-primary-dark: hsl(340, 82%, 42%);--color-secondary: hsl(280, 70%, 60%);--color-accent: hsl(30, 100%, 60%);--gradient-primary: linear-gradient(135deg, hsl(340, 82%, 52%) 0%, hsl(280, 70%, 60%) 100%);--gradient-hero: linear-gradient(135deg, hsl(340, 82%, 52%) 0%, hsl(320, 75%, 45%) 50%, hsl(280, 70%, 60%) 100%);--gradient-glass: linear-gradient(135deg, rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, .05) 100%);--color-bg-primary: hsl(240, 15%, 8%);--color-bg-secondary: hsl(240, 12%, 12%);--color-bg-tertiary: hsl(240, 10%, 16%);--color-text-primary: hsl(0, 0%, 95%);--color-text-secondary: hsl(0, 0%, 70%);--color-text-muted: hsl(0, 0%, 50%);--spacing-xs: .5rem;--spacing-sm: .75rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 2.5rem;--font-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "Playfair Display", Georgia, serif;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-xl: 1.5rem;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .1);--shadow-md: 0 4px 16px rgba(0, 0, 0, .2);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .3);--shadow-glow: 0 0 40px rgba(219, 39, 119, .3);--transition-fast: .15s ease-in-out;--transition-base: .3s ease-in-out;--transition-slow: .5s ease-in-out;--touch-target-min: 44px}@media (min-width: 768px){:root{--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-xl: 2rem}}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-primary);background:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 20% 50%,hsla(340,82%,52%,.15) 0%,transparent 50%),radial-gradient(circle at 80% 80%,hsla(280,70%,60%,.15) 0%,transparent 50%),radial-gradient(circle at 40% 20%,hsla(30,100%,60%,.1) 0%,transparent 50%);z-index:-1;animation:backgroundPulse 20s ease-in-out infinite}@keyframes backgroundPulse{0%,to{opacity:1}50%{opacity:.7}}.glass{background:var(--gradient-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:1rem 1.5rem;min-height:var(--touch-target-min);font-family:var(--font-primary);font-size:1rem;font-weight:600;text-decoration:none;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden;width:100%;-webkit-tap-highlight-color:transparent}@media (min-width: 768px){.btn{width:auto;padding:var(--spacing-sm) var(--spacing-lg)}}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#fff3;transform:translate(-50%,-50%);transition:width var(--transition-slow),height var(--transition-slow)}.btn:hover:before{width:300px;height:300px}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg),var(--shadow-glow)}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:transparent;color:var(--color-text-primary);border:2px solid rgba(255,255,255,.2)}.btn-ghost:hover{border-color:var(--color-primary);background:#db27771a}.card{background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base);border:1px solid rgba(255,255,255,.05)}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:#ffffff1a}h1,h2,h3,h4,h5,h6{font-family:var(--font-primary);line-height:1.2;margin-bottom:var(--spacing-md);background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.02em}h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:800;letter-spacing:-.03em}h2{font-size:clamp(2rem,4vw,3rem);font-weight:700}h3{font-size:clamp(1.5rem,3vw,2rem);font-weight:600}p{margin-bottom:var(--spacing-md);color:var(--color-text-secondary)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.animate-fade-in-up{animation:fadeInUp .8s ease-out forwards}.animate-float{animation:float 6s ease-in-out infinite}.animate-pulse{animation:pulse 2s ease-in-out infinite}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md);width:100%}@media (min-width: 768px){.container{padding:0 var(--spacing-lg)}}@media (min-width: 1024px){.container{padding:0 var(--spacing-xl)}}.text-center{text-align:center}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}html{-webkit-text-size-adjust:100%;-webkit-overflow-scrolling:touch}button,a,input,select,textarea{-webkit-tap-highlight-color:rgba(219,39,119,.2)}input,select,textarea{font-size:16px}@media (min-width: 768px){input,select,textarea{font-size:1rem}}
