:root{--bg-primary: #FFF5F9;--bg-surface: #FFF0F5;--bg-card: #FFFFFF;--accent-primary: #ff2a6d;--accent-secondary: #05d9e8;--accent-glow: #ff2a6d;--text-primary: #111118;--text-muted: #4A3C45;--text-dim: #8A7A82;--font-display: "Space Grotesk", "Cormorant Garamond", serif;--font-serif: "Space Grotesk", "Cormorant Garamond", serif;--font-body: "Inter", sans-serif;--transition-smooth: cubic-bezier(.25, .46, .45, .94)}[data-theme=dark]{--bg-primary: #0b0014;--bg-surface: #12001e;--bg-card: #1a002a;--accent-primary: #ff2a6d;--accent-secondary: #05d9e8;--accent-glow: #ff2a6d;--text-primary: #f0e6f0;--text-muted: #b0a0b0;--text-dim: #705070}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);overflow-x:hidden;min-height:100vh;transition:background .4s ease,color .4s ease}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.015'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;opacity:.4;mix-blend-mode:multiply}[data-theme=dark] body:after{mix-blend-mode:overlay;opacity:.25}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{border:none;background:none;font-family:inherit}canvas{display:block}#app{position:relative;z-index:1}.theme-toggle{position:fixed;top:1.25rem;right:1.25rem;z-index:999;width:40px;height:40px;border-radius:50%;background:var(--bg-card);border:1px solid var(--accent-secondary);color:var(--accent-primary);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .3s ease,color .3s ease,border-color .3s ease,transform .3s ease;box-shadow:0 2px 12px #0000000f}.theme-toggle:hover{transform:scale(1.1)}[data-theme=dark] .theme-toggle{box-shadow:0 2px 12px #0000004d}.toggle-hidden{opacity:0;pointer-events:none}#hero{position:relative;height:100vh;overflow:hidden;background:var(--bg-surface);transition:background .4s ease}#three-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.hero-content{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem}.hero-text{opacity:0;transform:translateY(30px);animation:heroFadeIn 1.5s var(--transition-smooth) .5s forwards}@keyframes heroFadeIn{to{opacity:1;transform:translateY(0)}}.hero-subtitle{font-family:var(--font-serif);font-size:clamp(1.4rem,4vw,2.2rem);color:var(--text-primary);letter-spacing:.2em;text-transform:uppercase;display:block;margin-bottom:.75rem;font-weight:700;text-shadow:0 0 24px var(--bg-primary),0 0 48px var(--bg-primary),0 0 80px var(--bg-primary)}.hero-name{font-family:var(--font-display);font-size:clamp(3.5rem,15vw,10rem);font-weight:700;color:var(--text-primary);line-height:.95;margin-bottom:.5rem;letter-spacing:-.03em;text-shadow:0 0 60px rgba(255,42,109,.2);position:relative}[data-theme=dark] .hero-name{text-shadow:0 0 60px rgba(255,42,109,.3)}.hero-name .scramble-char{display:inline-block;transition:color .1s ease}.hero-name .scramble-char.revealed{color:var(--text-primary)}.hero-name .scramble-char.scrambling{color:var(--accent-primary)}.hero-age{margin-bottom:1.5rem}.age-number{font-family:var(--font-display);font-size:clamp(3.5rem,15vw,10rem);font-weight:700;color:var(--text-primary);line-height:1;text-shadow:0 0 30px var(--bg-primary),0 0 60px var(--bg-primary),0 0 90px var(--bg-primary);letter-spacing:-.03em}[data-theme=dark] .age-number{text-shadow:0 0 60px rgba(255,42,109,.4)}.countdown{display:flex;align-items:center;justify-content:center;gap:.5rem;font-family:var(--font-display)}.countdown-item{display:flex;flex-direction:column;align-items:center;min-width:60px}.countdown-value{font-size:clamp(1.8rem,5vw,3rem);font-weight:600;color:var(--accent-secondary);line-height:1;display:block}.countdown-label{font-size:.7rem;text-transform:uppercase;color:var(--text-muted);letter-spacing:.2em;margin-top:.3rem}.countdown-sep{font-size:clamp(1.8rem,5vw,3rem);color:var(--accent-primary);animation:blink 1s step-end infinite;margin-bottom:1.2rem}@keyframes blink{50%{opacity:.3}}.scroll-indicator{position:absolute;bottom:2rem;display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:.5;animation:floatDown 2s ease-in-out infinite}.scroll-indicator span{font-size:.7rem;text-transform:uppercase;letter-spacing:.3em;color:var(--text-muted)}.scroll-arrow{width:1px;height:30px;background:linear-gradient(to bottom,var(--text-muted),transparent)}@keyframes floatDown{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}section{padding:6rem 1.5rem;position:relative}.section-header{text-align:center;margin-bottom:4rem;max-width:700px;margin-left:auto;margin-right:auto}.section-title{font-family:var(--font-display);font-size:clamp(2.5rem,8vw,4rem);font-weight:700;color:var(--text-primary);margin-bottom:.75rem;letter-spacing:-.02em}.section-subtitle{font-family:var(--font-body);font-size:.9rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.25em}#timeline{background:var(--bg-surface);transition:background .4s ease}.timeline-container{position:relative;max-width:1100px;margin:0 auto}.timeline-line{position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(to bottom,transparent,var(--accent-secondary),transparent);transform:translate(-50%);opacity:.3}.timeline-item{display:flex;align-items:flex-start;margin-bottom:5rem;opacity:0;transform:translateY(40px);position:relative}.timeline-item.left{flex-direction:row}.timeline-item.right{flex-direction:row-reverse}.timeline-dot{position:absolute;left:50%;top:24px;width:10px;height:10px;border-radius:50%;background:var(--accent-primary);transform:translate(-50%);z-index:2;box-shadow:0 0 16px #ff2a6d66;transition:background .4s ease,box-shadow .4s ease}[data-theme=dark] .timeline-dot{box-shadow:0 0 16px #ff2a6d80}.timeline-content{width:calc(50% - 2rem);background:var(--bg-card);border-radius:0;padding:1.5rem 1.5rem 1.75rem;position:relative;box-shadow:0 8px 32px #05d9e814;transition:transform .4s ease,box-shadow .4s ease,background .4s ease}[data-theme=dark] .timeline-content{box-shadow:0 8px 32px #0000004d}.timeline-content:hover{transform:translateY(-2px);box-shadow:0 12px 40px #ff2a6d1f}[data-theme=dark] .timeline-content:hover{box-shadow:0 12px 40px #0006}.timeline-item.left .timeline-content{margin-right:auto}.timeline-item.right .timeline-content{margin-left:auto}.timeline-year{font-family:var(--font-display);font-size:1.5rem;color:var(--accent-primary);margin-bottom:.75rem;letter-spacing:.05em;transition:color .4s ease}.timeline-images{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.75rem}.timeline-images:has(>:last-child:nth-child(1)){grid-template-columns:1fr}.timeline-images:has(>:last-child:nth-child(3))>:first-child{grid-column:1 / -1}.timeline-image{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;background:var(--bg-surface);transition:transform .6s ease,filter .6s ease;will-change:transform}.timeline-image:only-child{aspect-ratio:4/3}.timeline-image:hover{transform:scale(1.03);filter:brightness(1.05)}.timeline-text{font-size:.9rem;color:var(--text-muted);line-height:1.6;font-style:italic;transition:color .4s ease}#gallery{background:var(--bg-primary);min-height:100vh;transition:background .4s ease}.gallery-container{position:relative}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;max-width:700px;margin:0 auto;padding:0 .5rem}.gallery-skeleton{aspect-ratio:3/4;width:100%;padding:.5rem .5rem 2rem;background:var(--bg-card);border:1px solid rgba(255,42,109,.08);position:relative}[data-theme=dark] .gallery-skeleton{border-color:#ff2a6d26}.gallery-skeleton-inner{width:100%;height:100%;background:linear-gradient(90deg,var(--bg-surface) 25%,var(--bg-card) 50%,var(--bg-surface) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gallery-error .gallery-skeleton-inner{animation:none;background:var(--bg-surface);display:flex;align-items:center;justify-content:center;font-size:2.5rem;opacity:.4}.gallery-thumb{aspect-ratio:3/4;object-fit:cover;width:100%;cursor:pointer;transition:transform .5s cubic-bezier(.25,.46,.45,.94),box-shadow .5s ease,background .4s ease,border-color .4s ease;padding:.5rem .5rem 2rem;background:var(--bg-card);box-shadow:0 4px 20px #ff2a6d14;position:relative;border:1px solid rgba(255,42,109,.08)}[data-theme=dark] .gallery-thumb{box-shadow:0 4px 20px #0000004d;border-color:#ff2a6d26}.gallery-thumb:after{content:"";position:absolute;bottom:.6rem;left:50%;transform:translate(-50%);width:60%;height:1px;background:var(--accent-primary);opacity:.15}.gallery-thumb:hover{transform:scale(1.04) rotate(-.5deg);box-shadow:0 12px 36px #ff2a6d26}[data-theme=dark] .gallery-thumb:hover{box-shadow:0 12px 36px #0006}.gallery-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;pointer-events:none;opacity:0;transition:opacity .5s ease}.gallery-lightbox.active{opacity:1;pointer-events:auto}.lightbox-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-primary);opacity:.97;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:background .4s ease}.lightbox-image{position:absolute;top:0;right:0;bottom:0;left:0;background-size:contain;background-position:center;background-repeat:no-repeat;transition:transform .8s var(--transition-smooth)}.lightbox-caption{position:absolute;bottom:5rem;left:2rem;font-family:var(--font-serif);font-size:1rem;color:var(--text-primary);opacity:0;transition:opacity .5s ease .3s;max-width:60%}.lightbox-comment{position:absolute;bottom:2rem;left:2rem;font-family:var(--font-body);font-size:.85rem;color:var(--accent-primary);font-style:italic;opacity:0;transition:opacity .5s ease .5s;max-width:60%}.gallery-lightbox.active .lightbox-comment{opacity:.8}.gallery-lightbox.active .lightbox-caption{opacity:1}.lightbox-counter{position:absolute;bottom:2rem;right:2rem;font-family:var(--font-display);font-size:.85rem;color:var(--text-muted);opacity:0;transition:opacity .5s ease .3s}.gallery-lightbox.active .lightbox-counter{opacity:1}.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;width:60px;height:60px;display:flex;align-items:center;justify-content:center;color:var(--text-primary);font-size:2.2rem;cursor:pointer;opacity:0;transition:opacity .3s ease;z-index:2;background:none;border:none}.gallery-lightbox.active .lightbox-close{opacity:1}.lightbox-prev,.lightbox-next{position:absolute;top:50%;transform:translateY(-50%);width:64px;height:64px;display:flex;align-items:center;justify-content:center;color:var(--text-primary);font-size:3rem;cursor:pointer;opacity:0;transition:opacity .3s ease,color .4s ease;z-index:2;background:none;border:none;border-radius:50%}.lightbox-prev{left:.75rem}.lightbox-next{right:.75rem}.gallery-lightbox.active .lightbox-prev,.gallery-lightbox.active .lightbox-next{opacity:.5}.lightbox-prev:hover,.lightbox-next:hover{opacity:1!important}#birthday-message{background:var(--bg-surface);min-height:100vh;display:flex;align-items:center;justify-content:center;transition:background .4s ease}.birthday-container{max-width:700px;margin:0 auto;padding:2rem}.birthday-card{background:linear-gradient(135deg,var(--bg-surface),var(--bg-card));border-radius:0;padding:4rem 3rem;text-align:center;box-shadow:0 20px 60px #ff2a6d1a;border:1px solid rgba(255,42,109,.08);transition:background .4s ease,box-shadow .4s ease,border-color .4s ease}[data-theme=dark] .birthday-card{box-shadow:0 20px 60px #0000004d}.birthday-hindi{font-family:var(--font-display);font-size:clamp(1.8rem,5vw,2.5rem);color:var(--accent-primary);margin-bottom:1rem;line-height:1.4;transition:color .4s ease}.birthday-hinglish{font-family:var(--font-serif);font-size:clamp(1.1rem,3.5vw,1.4rem);color:var(--accent-secondary);font-style:italic;transition:color .4s ease}#footer{padding:4rem 1.5rem;background:var(--bg-primary);text-align:center;border-top:1px solid var(--accent-primary);border-top-width:1px;border-top-style:solid;transition:background .4s ease,border-color .4s ease}.footer-name{font-family:var(--font-display);font-size:1.5rem;color:var(--text-muted);margin-bottom:1rem;transition:color .4s ease}.footer-social{display:flex;justify-content:center;gap:1.5rem;margin-bottom:1.5rem}.social-link{display:flex;align-items:center;gap:.5rem;color:var(--text-muted);font-size:.9rem;transition:color .3s ease}.social-link:hover{color:var(--accent-primary)}.social-link svg{width:20px;height:20px}.footer-tagline{font-size:.8rem;color:var(--text-dim);font-style:italic;transition:color .4s ease}.back-to-top{position:fixed;bottom:2rem;right:2rem;z-index:998;width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:#fff;font-size:1.8rem;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .4s ease,transform .3s ease,background .3s ease;box-shadow:0 4px 20px #ff2a6d59}.back-to-top.visible{opacity:1;pointer-events:auto}.back-to-top:hover{transform:scale(1.1)}[data-theme=dark] .back-to-top{box-shadow:0 4px 20px #ff2a6d66}#confetti-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;pointer-events:none;overflow:hidden}.pin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;display:flex;align-items:center;justify-content:center;background:#0b0014b3;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);pointer-events:none}[data-theme=light] .pin-overlay{background:#fff5f9bf}.pin-card{background:var(--bg-card);border:1px solid var(--accent-primary);border-radius:0;padding:3rem 2rem;text-align:center;max-width:340px;width:90%;box-shadow:0 20px 60px #ff2a6d1f;transition:background .4s ease,border-color .4s ease,box-shadow .4s ease;pointer-events:auto}[data-theme=dark] .pin-card{box-shadow:0 20px 60px #0006}.pin-icon{font-size:2.5rem;margin-bottom:1rem}.pin-title{font-family:var(--font-display);font-size:1.2rem;color:var(--text-primary);margin-bottom:.5rem;transition:color .4s ease}.pin-sub{font-family:var(--font-serif);font-size:.85rem;color:var(--text-muted);margin-bottom:1.5rem;font-style:italic;transition:color .4s ease}.pin-input{width:120px;padding:.75rem;background:var(--bg-surface);border:1px solid var(--accent-primary);border-radius:0;color:var(--text-primary);font-family:var(--font-display);font-size:1.5rem;text-align:center;letter-spacing:.3em;outline:none;transition:border-color .3s ease,background .4s ease,color .4s ease;margin:0 auto 1rem;display:block}.pin-input:focus{border-color:var(--accent-primary)}.pin-submit{display:inline-block;padding:.7rem 2.2rem;background:transparent;color:var(--accent-primary);font-family:var(--font-display);font-size:.85rem;text-transform:uppercase;letter-spacing:.15em;border:1px solid var(--accent-primary);border-radius:0;cursor:pointer;transition:background .3s ease,color .3s ease}.pin-submit:hover{background:var(--accent-primary);color:#fff}[data-theme=dark] .pin-submit:hover{color:#0b0014}.pin-error{font-family:var(--font-body);font-size:.8rem;color:var(--accent-primary);margin-top:.75rem;min-height:1.2em;transition:color .4s ease}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg-primary);transition:background .4s ease}::-webkit-scrollbar-thumb{background:var(--accent-secondary);border-radius:2px;transition:background .4s ease}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}@media(max-width:768px){section{padding:5rem 1.25rem}.hero-content{padding:1.5rem}.countdown-value{font-size:clamp(2rem,6vw,3rem)}.countdown-label{font-size:.9rem}.countdown-item{min-width:60px}.section-subtitle{font-size:1.05rem}.timeline-line{left:20px}.timeline-item{flex-direction:column!important;padding-left:3.5rem;margin-bottom:4rem}.timeline-dot{left:20px;width:16px;height:16px}.timeline-content{width:100%;padding:1.5rem}.timeline-year{font-size:1.8rem}.timeline-text{font-size:1rem;line-height:1.6}.timeline-images{gap:.5rem;grid-template-columns:1fr}.timeline-image{aspect-ratio:auto;width:100%}.gallery-grid{gap:1.5rem}.gallery-thumb{padding:.5rem .5rem 2rem}.lightbox-caption{left:1rem;bottom:5rem;max-width:90%;font-size:1.1rem}.lightbox-comment{left:1rem;bottom:1.25rem;max-width:90%;font-size:.95rem}.lightbox-counter{right:1rem;bottom:1.25rem;font-size:1rem}.lightbox-close{top:1rem;right:1rem;width:52px;height:52px;font-size:2rem}.lightbox-prev,.lightbox-next{width:60px;height:60px;font-size:3.5rem}.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}.birthday-card{padding:3rem 1.75rem}.birthday-hindi{font-size:2rem}.birthday-hinglish{font-size:1.3rem}.pin-card{padding:3rem 2rem;max-width:360px}.pin-title{font-size:1.4rem}.pin-sub{font-size:1rem}.pin-input{font-size:1.8rem;width:140px;padding:.75rem}.pin-submit{font-size:1rem;padding:.85rem 2.4rem}.pin-error{font-size:.9rem}.footer-name{font-size:1.8rem}.social-link{font-size:1rem}.social-link svg{width:24px;height:24px}.footer-tagline{font-size:.9rem}}@media(max-width:480px){section{padding:3.5rem .75rem}.countdown{gap:.25rem}.countdown-item{min-width:50px}.countdown-value{font-size:2.2rem}.countdown-label{font-size:.7rem}.gallery-grid{grid-template-columns:1fr;gap:1.25rem;max-width:100%;padding:0}.gallery-thumb,.gallery-skeleton{padding:.4rem .4rem 1.5rem}.timeline-item{padding-left:2.5rem;margin-bottom:3rem}.timeline-content{padding:1.25rem}.timeline-year{font-size:1.5rem}.timeline-text{font-size:.95rem}.timeline-image{min-height:160px}.lightbox-close{top:.5rem;right:.5rem;width:56px;height:56px}.lightbox-prev,.lightbox-next{width:56px;height:56px;font-size:3rem}.lightbox-prev{left:.25rem}.lightbox-next{right:.25rem}.lightbox-caption{left:.75rem;bottom:4.5rem;font-size:1rem;max-width:95%}.lightbox-comment{left:.75rem;bottom:.75rem;font-size:.85rem;max-width:95%}.lightbox-counter{right:.75rem;bottom:.75rem;font-size:.85rem}.birthday-card{padding:2rem 1.25rem}.birthday-hindi{font-size:1.6rem}.birthday-hinglish{font-size:1.1rem}.pin-card{padding:2.5rem 1.5rem;max-width:320px}.pin-title{font-size:1.2rem}.pin-sub{font-size:.9rem}.pin-input{font-size:1.5rem;width:120px;padding:.6rem}.pin-submit{font-size:.9rem;padding:.75rem 2rem}.section-title{font-size:clamp(2rem,7vw,2.5rem)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
