:root{--pink: #ff4f9a;--deep-pink: #c92f75;--coral: #ff735c;--gold: #ffd166;--mint: #59d9b2;--ink: #2a2130;--white: #ffffff;--bg-primary: #fff1f6;--bg-secondary: #f8e8ef;--bg-dark: #1a0f1a;--gradient-aurora: linear-gradient(135deg, #ff4f9a 0%, #ff735c 25%, #ffd166 50%, #59d9b2 75%, #7bdcb5 100%);--gradient-pink: linear-gradient(135deg, #ff4f9a 0%, #ff7eb3 100%);--gradient-gold: linear-gradient(135deg, #ffd166 0%, #ffb347 100%);--gradient-mint: linear-gradient(135deg, #59d9b2 0%, #7bdcb5 100%);--gradient-sunset: linear-gradient(135deg, #ff4f9a 0%, #ff735c 50%, #ffd166 100%);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .1);--glass-blur: blur(20px);--font-display: "Playfair Display", Georgia, serif;--font-body: "Poppins", system-ui, sans-serif;--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2.5rem;--space-xl: 4rem;--space-2xl: 6rem;--radius-sm: 12px;--radius-md: 20px;--radius-lg: 32px;--radius-full: 999px;--shadow-sm: 0 4px 16px rgba(128, 34, 83, .08);--shadow-md: 0 12px 40px rgba(128, 34, 83, .12);--shadow-lg: 0 24px 80px rgba(128, 34, 83, .18);--shadow-glow: 0 0 40px rgba(255, 79, 154, .3);--transition-fast: .2s cubic-bezier(.16, 1, .3, 1);--transition-base: .4s cubic-bezier(.16, 1, .3, 1);--transition-slow: .8s cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box;margin:0;padding:0}html{min-height:100%;scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--ink);background:var(--bg-primary);min-width:320px;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea,select{font-family:inherit}.app{position:relative;min-height:100vh;overflow:hidden;background:var(--bg-primary);isolation:isolate}.app:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(ellipse at 20% 20%,rgba(255,79,154,.12) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(255,209,102,.1) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,rgba(89,217,178,.08) 0%,transparent 60%);animation:aurora-shift 20s ease-in-out infinite}@keyframes aurora-shift{0%,to{transform:translate(0) scale(1)}33%{transform:translate(2%,-2%) scale(1.1)}66%{transform:translate(-2%,2%) scale(.95)}}.main-page{position:relative}.floating-particles{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;overflow:hidden}.particle{position:absolute;border-radius:50%;background:var(--gradient-aurora);filter:blur(1px)}.floating-hearts{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;overflow:hidden}.floating-heart{position:absolute;-webkit-user-select:none;user-select:none}.gradient-text{background:var(--gradient-aurora);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;background-size:200% 200%;animation:gradient-flow 4s ease-in-out infinite}@keyframes gradient-flow{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.magnetic-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 32px;border:none;border-radius:var(--radius-full);font-size:1rem;font-weight:700;cursor:pointer;transition:var(--transition-fast);overflow:hidden;-webkit-tap-highlight-color:transparent}.magnetic-btn--primary{background:var(--gradient-sunset);color:var(--white);box-shadow:var(--shadow-md),0 0 0 1px #fff3 inset}.magnetic-btn--primary:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 0 32%,rgba(255,255,255,.4) 46%,transparent 60%);transform:translate(-110%);animation:shine-sweep 3s ease-in-out infinite}.magnetic-btn--outline{background:var(--glass-bg);color:var(--deep-pink);border:2px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-sm)}.magnetic-btn:hover{box-shadow:var(--shadow-lg),var(--shadow-glow);transform:translateY(-2px)}.magnetic-btn:active{transform:scale(.95)}.magnetic-btn span,.magnetic-btn svg{position:relative;z-index:1}@keyframes shine-sweep{0%,45%{transform:translate(-110%)}to{transform:translate(110%)}}.spotlight-card{position:relative;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);overflow:hidden;transition:var(--transition-base)}.spotlight-card:hover{border-color:#ff4f9a4d;box-shadow:var(--shadow-md)}.spotlight-card__glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .3s ease}.intro-screen{position:relative;display:grid;place-items:center;min-height:100svh;padding:clamp(80px,10vw,120px) clamp(20px,5vw,60px);overflow:hidden;background:radial-gradient(ellipse at 30% 20%,rgba(255,79,154,.08) 0%,transparent 60%),radial-gradient(ellipse at 70% 80%,rgba(255,209,102,.08) 0%,transparent 60%),linear-gradient(180deg,#fff8fb,#fff1f6,#fff8f2)}.intro-screen.is-leaving{animation:intro-exit .8s cubic-bezier(.7,0,.84,0) forwards}@keyframes intro-exit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.1)}}.intro-layout{position:relative;z-index:10;display:grid;width:min(100%,1200px);grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);gap:clamp(40px,8vw,100px);align-items:center}.intro-copy{display:grid;gap:var(--space-lg);justify-items:start}.intro-heading{display:grid;gap:var(--space-sm)}.intro-kicker{display:inline-flex;align-items:center;gap:8px;margin:0;padding:8px 16px;border-radius:var(--radius-full);background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--deep-pink);font-size:.85rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;width:fit-content}.intro-kicker-icon{animation:sparkle 2s ease-in-out infinite}@keyframes sparkle{0%,to{transform:scale(1) rotate(0);opacity:1}50%{transform:scale(1.2) rotate(10deg);opacity:.8}}.intro-title{font-family:var(--font-display);font-size:clamp(3.5rem,8vw,7rem);font-weight:900;line-height:.95;letter-spacing:-.02em;color:var(--ink);margin:0}.intro-title span{display:block}.intro-title--accent{background:var(--gradient-aurora);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;background-size:200% 200%;animation:gradient-flow 4s ease-in-out infinite}.intro-actions{display:grid;gap:var(--space-md);justify-items:start}.intro-subtitle{display:inline-flex;align-items:center;gap:8px;margin:0;padding:10px 20px;border-radius:var(--radius-full);background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--deep-pink);font-size:.95rem;font-weight:600;letter-spacing:.05em}.intro-button-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.tilt-portrait{position:relative;display:grid;place-items:center;width:min(80vw,380px);aspect-ratio:1;perspective:1000px;cursor:pointer}.tilt-portrait__ring{position:absolute;width:110%;height:110%;border-radius:50%;border:3px solid transparent;background:var(--gradient-aurora) border-box;-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:ring-rotate 8s linear infinite}@keyframes ring-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tilt-portrait__glow{position:absolute;width:120%;height:120%;border-radius:50%;background:var(--gradient-aurora);opacity:.15;filter:blur(40px);animation:glow-pulse 4s ease-in-out infinite}@keyframes glow-pulse{0%,to{transform:scale(1);opacity:.15}50%{transform:scale(1.05);opacity:.25}}.tilt-portrait__frame{position:relative;z-index:2;width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;border:6px solid rgba(255,255,255,.9);box-shadow:var(--shadow-lg),0 0 60px #ff4f9a33;background:#fff}.tilt-portrait__frame img{width:100%;height:100%;object-fit:cover;object-position:center 16%;transform:scale(1.1);transition:transform .6s ease}.tilt-portrait:hover .tilt-portrait__frame img{transform:scale(1.15)}.tilt-portrait__fallback{width:100%;height:100%;background:var(--gradient-pink)}.tilt-portrait__badge{position:absolute;z-index:3;bottom:5%;right:5%;width:60px;height:60px;border-radius:50%;background:var(--gradient-aurora);display:grid;place-items:center;box-shadow:var(--shadow-md);animation:badge-bounce 2s ease-in-out infinite}.tilt-portrait__badge-emoji{font-size:1.5rem}@keyframes badge-bounce{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(5deg)}}.gift-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:clamp(24px,5vw,64px);overflow-y:auto;background:#140a14d9;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.gift-overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;border:0;background:transparent;cursor:pointer}.gift-close-button{position:fixed;top:clamp(20px,3vw,40px);right:clamp(20px,3vw,40px);z-index:3;width:52px;height:52px;border:2px solid rgba(255,255,255,.3);border-radius:50%;background:var(--glass-bg);color:var(--white);cursor:pointer;display:grid;place-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:var(--transition-fast)}.gift-close-button:hover{border-color:var(--pink);background:#ff4f9a33}.gift-book-scene{position:relative;z-index:2;width:min(100%,960px);perspective:1600px}.gift-book{position:relative;display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);min-height:min(70vh,580px);border-radius:var(--radius-md);filter:drop-shadow(0 30px 60px rgba(12,8,10,.4));transform-style:preserve-3d}.gift-book:before{position:absolute;top:12px;bottom:12px;left:50%;z-index:4;width:16px;content:"";background:linear-gradient(90deg,#5a223c80,#ffffff4d,#5a223c66);border-radius:var(--radius-full);transform:translate(-50%)}.gift-page{position:relative;display:grid;align-content:center;min-height:520px;padding:clamp(32px,5vw,54px);overflow:hidden;background:linear-gradient(145deg,rgba(255,255,255,.15),transparent 38%),linear-gradient(135deg,#f1618a,#e95c88);color:var(--white);box-shadow:inset 0 0 0 1px #ffffff40,inset 0 0 40px #7f1c4533}.gift-page-left{justify-items:center;border-radius:var(--radius-md) 0 0 var(--radius-md);text-align:center;transform-origin:right center}.gift-page-right{align-content:start;border-left:12px solid rgba(255,255,255,.85);border-radius:0 var(--radius-md) var(--radius-md) 0;transform-origin:left center}.gift-page-shine{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 0 30%,rgba(255,255,255,.25) 42%,transparent 55%),radial-gradient(circle at 80% 18%,rgba(255,209,102,.4),transparent 18%);opacity:.7;pointer-events:none}.gift-book-portrait{position:relative;z-index:1;width:120px;aspect-ratio:1;margin-bottom:24px;border:5px solid rgba(255,255,255,.9);border-radius:50%;overflow:hidden;background:#ffffff80;box-shadow:0 14px 28px #59183840}.gift-book-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 16%;transform:scale(1.16)}.gift-small-label{position:relative;z-index:1;margin:0 0 12px;color:#ffffffd9;font-size:.85rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.gift-page h2{position:relative;z-index:1;margin:0;color:var(--white);font-family:var(--font-display);font-size:clamp(2.2rem,5vw,3.5rem);font-weight:700;line-height:1;text-shadow:0 8px 24px rgba(93,29,61,.25)}.gift-page-note{position:relative;z-index:1;margin-top:24px;color:#ffffffe6;font-family:var(--font-display);font-size:clamp(1.8rem,4vw,3rem);font-weight:700;text-shadow:0 0 20px rgba(255,255,255,.5)}.gift-message-text{position:relative;z-index:1;max-width:42rem;margin:24px 0 0;color:#fffffff2;font-size:clamp(1rem,1.8vw,1.15rem);font-weight:500;line-height:1.8;text-wrap:pretty}.photo-gallery{position:relative;min-height:clamp(600px,80vw,900px);padding:clamp(20px,3vw,40px);overflow:hidden;isolation:isolate}.photo-gallery:after{position:absolute;inset:auto 0 0;height:50%;content:"";background:linear-gradient(180deg,transparent,rgba(255,241,246,.98));z-index:-1}.brand{position:relative;z-index:2;display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border-radius:var(--radius-full);background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--deep-pink);font-size:.95rem;font-weight:700;box-shadow:var(--shadow-sm);margin-bottom:20px}.photo-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:220px;gap:clamp(12px,2vw,24px);padding:clamp(70px,9vw,100px) clamp(20px,4vw,60px) clamp(40px,6vw,80px)}.photo-card{position:relative;min-width:0;min-height:0;margin:0;padding:0;border:5px solid rgba(255,255,255,.95);border-radius:var(--radius-md);overflow:hidden;background:#fff;box-shadow:var(--shadow-md);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;transition:box-shadow .3s ease,transform .3s ease}.photo-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.photo-card.is-popped{z-index:4;animation:photo-pop .85s cubic-bezier(.16,1,.3,1)}.photo-card img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .6s cubic-bezier(.16,1,.3,1)}.photo-card:hover img{transform:scale(1.08)}.photo-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:flex-end;padding:20px;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.4) 100%);opacity:0;transition:opacity .4s ease}.photo-card:hover .photo-card__overlay{opacity:1}.photo-card__number{font-family:var(--font-display);font-size:2rem;font-weight:900;color:var(--white);opacity:.6;line-height:1}.photo-card__caption{color:var(--white);font-size:.9rem;font-weight:500;margin-top:4px}.photo-shine{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 0%,transparent 34%,rgba(255,255,255,.8) 47%,transparent 60%,transparent 100%);opacity:0;transform:translate(-110%);pointer-events:none}.photo-card.is-popped .photo-shine{animation:shine-sweep .78s ease-out}.spark-burst{position:absolute;top:50%;right:50%;bottom:50%;left:50%;width:8px;height:8px;pointer-events:none}.spark-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:2px;background:var(--gold);box-shadow:0 0 0 2px #fff9;opacity:0;transform:rotate(calc(var(--spark) * 36deg)) translateY(-14px) scale(.4);animation:spark-fly .76s cubic-bezier(.16,1,.3,1) forwards}.spark-burst i:nth-child(3n+1){background:#fff}.spark-burst i:nth-child(3n+2){background:var(--mint)}.spark-burst i:nth-child(4n){width:6px;height:14px;border-radius:var(--radius-full)}.photo-1{grid-column:1 / 2;grid-row:1 / 3}.photo-2{grid-column:2 / 3;grid-row:1 / 2}.photo-3{grid-column:3 / 4;grid-row:1 / 2}.photo-4{grid-column:4 / 5;grid-row:1 / 3}.photo-5{grid-column:2 / 3;grid-row:2 / 3}.photo-6{grid-column:3 / 4;grid-row:2 / 3}.photo-7{grid-column:1 / 2;grid-row:3 / 4}.photo-8{grid-column:2 / 4;grid-row:3 / 5}.photo-9{grid-column:4 / 5;grid-row:3 / 4}.photo-10{grid-column:1 / 2;grid-row:4 / 5}.photo-11{grid-column:4 / 5;grid-row:4 / 5}.photo-placeholder{display:block;width:100%;height:100%;background:var(--gradient-pink)}.dashboard{display:grid;place-items:center;min-height:calc(100vh - clamp(600px,80vw,900px));padding:clamp(32px,7vw,84px) clamp(20px,5vw,72px) clamp(50px,7vw,88px)}.birthday-panel{width:min(100%,1000px);padding:clamp(48px,8vw,100px) clamp(24px,7vw,86px);border-radius:var(--radius-lg);background:linear-gradient(135deg,#ffffffe6,#ffffffb3),linear-gradient(135deg,#ff4f9a0d,#ffd1660d);border:1px solid rgba(255,255,255,.6);box-shadow:var(--shadow-lg),0 0 0 1px #ffffff80 inset;text-align:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:relative;overflow:hidden}.birthday-panel:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:var(--gradient-aurora);opacity:.03;animation:panel-glow 8s ease-in-out infinite;pointer-events:none}@keyframes panel-glow{0%,to{transform:rotate(0)}50%{transform:rotate(180deg)}}.icon-row{display:flex;justify-content:center;gap:14px;margin-bottom:clamp(20px,3vw,32px);position:relative;z-index:1}.icon-row span{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;color:#fff;box-shadow:var(--shadow-sm);transition:var(--transition-fast)}.icon-row span:nth-child(1){background:var(--gradient-pink)}.icon-row span:nth-child(2){background:var(--gradient-gold)}.icon-row span:nth-child(3){background:var(--gradient-mint)}.birthday-panel h1{font-family:var(--font-display);max-width:14ch;margin:0 auto;color:var(--ink);font-size:clamp(3.5rem,8vw,6.5rem);font-weight:900;line-height:1;letter-spacing:-.02em;position:relative;z-index:1}.age-counter{margin-top:var(--space-lg);position:relative;z-index:1}.age-counter__number{font-family:var(--font-display);font-size:clamp(4rem,10vw,8rem);font-weight:900;line-height:1;color:var(--ink);background:var(--gradient-aurora);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;background-size:200% 200%;animation:gradient-flow 4s ease-in-out infinite}.age-counter__label{font-size:1rem;font-weight:600;color:var(--deep-pink);letter-spacing:.15em;text-transform:uppercase;margin-top:8px}.dashboard__decor{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.dashboard__floating-emoji{position:absolute;font-size:2rem;animation:float-emoji 6s ease-in-out infinite}.dashboard__floating-emoji:nth-child(1){top:15%;left:10%}.dashboard__floating-emoji:nth-child(2){top:20%;right:15%;animation-delay:1s}.dashboard__floating-emoji:nth-child(3){bottom:25%;left:15%;animation-delay:2s}.dashboard__floating-emoji:nth-child(4){bottom:20%;right:10%;animation-delay:3s}@keyframes float-emoji{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(10deg)}}.inline-heart{display:inline-block;color:var(--pink);vertical-align:middle;animation:heartbeat 1.5s ease-in-out infinite}.wishes-section{padding:clamp(60px,10vw,120px) clamp(20px,5vw,60px);position:relative}.wishes-header{text-align:center;margin-bottom:var(--space-2xl)}.wishes-title{font-family:var(--font-display);font-size:clamp(2.5rem,6vw,4.5rem);font-weight:900;margin-bottom:var(--space-sm)}.wishes-subtitle{font-size:clamp(1rem,2vw,1.2rem);color:var(--deep-pink);font-weight:500;opacity:.8}.wishes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-md);max-width:1000px;margin:0 auto}.wish-card{position:relative;padding:var(--space-lg);border-radius:var(--radius-md);background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);text-align:center;overflow:hidden;transition:var(--transition-base);cursor:default}.wish-card:hover{border-color:#ff4f9a4d;box-shadow:var(--shadow-md)}.wish-card__icon{margin-bottom:var(--space-sm);display:inline-flex;padding:16px;border-radius:var(--radius-full);background:#ffffff80}.wish-card__text{font-size:1.1rem;font-weight:600;color:var(--ink)}.wish-card__shine{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.3),transparent);transform:translate(-100%);transition:transform .6s ease}.wish-card:hover .wish-card__shine{transform:translate(100%)}.bottom-animation{position:relative;display:grid;place-items:center;padding:var(--space-xl) clamp(20px,5vw,72px);overflow:hidden}.bottom-animation__wrapper{width:100%;max-width:500px;opacity:.9}.lottie-canvas{width:100%}.bottom-animation__text{text-align:center;margin-top:var(--space-md);color:var(--deep-pink);font-size:.95rem;font-weight:500;opacity:.8}@keyframes page-arrive{0%{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes photo-pop{0%{transform:scale(.96) rotate(-1deg)}35%{transform:scale(1.1) rotate(1.4deg)}58%{transform:scale(1.03) rotate(-.5deg)}to{transform:scale(1) rotate(0)}}@keyframes shine-sweep{0%{opacity:0;transform:translate(-110%)}24%{opacity:.95}to{opacity:0;transform:translate(110%)}}@keyframes spark-fly{0%{opacity:0;transform:rotate(calc(var(--spark) * 36deg)) translateY(-12px) scale(.35)}18%{opacity:1}to{opacity:0;transform:rotate(calc(var(--spark) * 36deg)) translateY(-78px) scale(1)}}@media (max-width: 1024px){.intro-layout{grid-template-columns:1fr;gap:40px;justify-items:center;text-align:center}.intro-copy,.intro-heading,.intro-actions{justify-items:center}.intro-button-row{justify-content:center}.photo-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:180px}.photo-1{grid-column:1 / 2;grid-row:1 / 3}.photo-2{grid-column:2 / 3;grid-row:1 / 2}.photo-3{grid-column:3 / 4;grid-row:1 / 2}.photo-4{grid-column:2 / 3;grid-row:2 / 3}.photo-5{grid-column:3 / 4;grid-row:2 / 3}.photo-6{grid-column:1 / 2;grid-row:3 / 4}.photo-7{grid-column:2 / 3;grid-row:3 / 4}.photo-8{grid-column:3 / 4;grid-row:3 / 5}.photo-9{grid-column:1 / 2;grid-row:4 / 5}.photo-10{grid-column:2 / 3;grid-row:4 / 5}.photo-11{grid-column:1 / 3;grid-row:5 / 6}}@media (max-width: 768px){.intro-screen{padding:60px 20px 40px}.intro-title{font-size:3rem}.tilt-portrait{width:min(70vw,280px)}.gift-book{grid-template-columns:1fr}.gift-page-left{border-radius:var(--radius-md) var(--radius-md) 0 0;min-height:auto}.gift-page-right{border-left:0;border-top:10px solid rgba(255,255,255,.85);border-radius:0 0 var(--radius-md) var(--radius-md)}.gift-book:before{display:none}.photo-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:160px;gap:12px}.photo-1{grid-column:1 / 2;grid-row:1 / 3}.photo-2{grid-column:2 / 3;grid-row:1 / 2}.photo-3{grid-column:2 / 3;grid-row:2 / 3}.photo-4{grid-column:1 / 2;grid-row:3 / 5}.photo-5{grid-column:2 / 3;grid-row:3 / 4}.photo-6{grid-column:2 / 3;grid-row:4 / 5}.photo-7{grid-column:1 / 2;grid-row:5 / 6}.photo-8{grid-column:2 / 3;grid-row:5 / 7}.photo-9{grid-column:1 / 2;grid-row:6 / 7}.photo-10{grid-column:1 / 2;grid-row:7 / 8}.photo-11{grid-column:2 / 3;grid-row:7 / 8}.birthday-panel h1{font-size:3rem}.dashboard__floating-emoji{font-size:1.5rem}}@media (max-width: 480px){.intro-title{font-size:2.5rem}.intro-button-row{flex-direction:column;width:100%}.magnetic-btn{width:100%}.photo-grid{padding:60px 12px 30px;grid-template-columns:1fr;grid-auto-rows:200px;gap:12px}.photo-1,.photo-2,.photo-3,.photo-4,.photo-5,.photo-6,.photo-7,.photo-8,.photo-9,.photo-10,.photo-11{grid-column:1;grid-row:auto}.birthday-panel{padding:36px 20px}.birthday-panel h1{font-size:2.5rem}.wishes-grid{grid-template-columns:1fr 1fr}}.custom-cursor{position:fixed;top:0;left:0;width:40px;height:40px;border:2px solid var(--pink);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:width .2s,height .2s,border-color .2s,background .2s;mix-blend-mode:difference}.custom-cursor.hover{width:60px;height:60px;border-color:var(--gold);background:#ffd1661a}.custom-cursor.click{transform:translate(-50%,-50%) scale(.8)}.custom-cursor-dot{position:fixed;top:0;left:0;width:8px;height:8px;background:var(--pink);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%)}@media (pointer: fine){body,a,button,[role=button]{cursor:none}}.mouse-trail{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9998}.trail-particle{position:absolute;border-radius:50%;pointer-events:none;filter:blur(2px)}.scroll-progress{position:fixed;top:0;left:0;right:0;height:4px;background:var(--gradient-aurora);z-index:1000;transform-origin:left}.typing-text{display:inline-block;font-size:1.1rem;color:var(--deep-pink);font-weight:500;min-height:1.5em}.typing-cursor{color:var(--pink);font-weight:100}.confetti-burst{position:fixed;z-index:9999;pointer-events:none;transform:translate(-50%,-50%)}.confetti-particle{position:absolute;border-radius:2px}.love-quotes{padding:clamp(60px,10vw,120px) clamp(20px,5vw,60px);position:relative;overflow:hidden}.love-quotes:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 50%,rgba(255,79,154,.05),transparent 70%);pointer-events:none}.love-quotes__container{max-width:800px;margin:0 auto;text-align:center;position:relative;z-index:1}.love-quotes__icon{color:var(--pink);margin-bottom:var(--space-md);animation:heartbeat 1.5s ease-in-out infinite}.love-quotes__text{font-family:var(--font-display);font-size:clamp(1.5rem,4vw,2.5rem);font-weight:600;font-style:italic;color:var(--ink);line-height:1.4;min-height:2em}.love-quotes__dots{display:flex;justify-content:center;gap:8px;margin-top:var(--space-md)}.love-quotes__dot{width:8px;height:8px;border-radius:50%;background:#c92f754d;transition:all .3s ease}.love-quotes__dot.active{background:var(--pink);transform:scale(1.3);box-shadow:0 0 10px #ff4f9a80}.scroll-to-top{position:fixed;bottom:30px;right:30px;width:50px;height:50px;border:none;border-radius:50%;background:var(--gradient-aurora);color:#fff;display:grid;place-items:center;cursor:pointer;z-index:100;box-shadow:0 4px 20px #ff4f9a66;transition:transform .3s ease}.scroll-to-top:hover{transform:translateY(-5px)}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.3)}30%{transform:scale(1)}45%{transform:scale(1.2)}}@keyframes float-up{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(5deg)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px #ff4f9a4d}50%{box-shadow:0 0 40px #ff4f9a99}}.particle--heart{clip-path:polygon(50% 15%,61% 0,80% 0,100% 20%,100% 40%,50% 100%,0 40%,0 20%,20% 0,39% 0)}.particle--star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}@media (max-width: 768px){.custom-cursor,.custom-cursor-dot,.mouse-trail{display:none}body{cursor:auto!important}a,button,[role=button]{cursor:pointer!important}.scroll-to-top{bottom:20px;right:20px;width:44px;height:44px}.love-quotes__text{font-size:1.3rem}}@media (max-width: 480px){.scroll-progress{height:3px}.love-quotes{padding:40px 16px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.floating-particles,.floating-hearts,.mouse-trail,.custom-cursor,.custom-cursor-dot{display:none}body{cursor:auto!important}}
