:root{--bg: #FFF7F5;--bg-soft: #FFF0EE;--card: rgba(255, 255, 255, .85);--border: #F3D8DE;--rose-800: #9F1239;--rose-700: #BE123C;--rose-600: #E11D48;--rose-500: #F43F5E;--rose-400: #FB7185;--rose-300: #FDA4AF;--rose-200: #FECDD3;--rose-100: #FFE4E6;--text: #47222F;--muted: #6B3A4B;--shadow-soft: 0 18px 45px -18px rgba(190, 18, 60, .22)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;font-family:Tajawal,Segoe UI,Tahoma,sans-serif;font-size:1rem;line-height:1.9;color:var(--text);background:radial-gradient(1100px 500px at 85% -5%,rgba(251,113,133,.14),transparent 60%),radial-gradient(900px 480px at 10% 0%,rgba(253,164,175,.12),transparent 60%),var(--bg);overflow-x:hidden}html.lock-scroll,html.lock-scroll body{overflow:hidden;overscroll-behavior:none}h1,h2,h3,.gate__title,.btn,.fp__name,.footer__line{font-family:Cairo,Tajawal,sans-serif}img{max-width:100%;display:block}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:3px solid rgba(244,63,94,.45);outline-offset:2px;border-radius:10px}::selection{background:var(--rose-200);color:var(--rose-800)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer;font-weight:700;border:none;border-radius:999px;transition:background-color .25s ease,box-shadow .25s ease,color .25s ease,transform .15s ease}.btn--primary{width:100%;padding:.9rem 1.75rem;font-size:1.05rem;color:#fff;background:linear-gradient(135deg,var(--rose-500),var(--rose-700));box-shadow:0 10px 24px -8px #be123c80}.btn--primary:hover{background:linear-gradient(135deg,var(--rose-400),var(--rose-600));box-shadow:0 14px 30px -8px #be123c8c}.btn--primary:active{transform:scale(.98)}.gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(800px 420px at 50% -10%,rgba(251,113,133,.2),transparent 60%),var(--bg);transition:opacity .6s ease}.gate--hidden{opacity:0;pointer-events:none}.gate__card{width:100%;max-width:380px;padding:2.6rem 1.9rem 2rem;text-align:center;background:var(--card);border:1px solid var(--border);border-radius:26px;box-shadow:var(--shadow-soft),0 0 0 12px #ffffff47;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:cardIn .7s ease-out both}@keyframes cardIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.gate__card--shake{animation:shakeX .5s ease}@keyframes shakeX{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-9px)}40%,60%{transform:translate(9px)}}.bloom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;overflow:hidden;pointer-events:none;animation:bloomFade .5s ease 1.05s forwards}.bloom__glow{position:absolute;width:200vmax;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fffffffa,#fff4f6eb 10%,#fda4afd1 22%,#f43f5e8c 38%,#be123c38 55%,#be123c14 66%,#f43f5e00 78%);transform:scale(0);will-change:transform;animation:bloomGlow 1.05s cubic-bezier(.22,1,.36,1) .05s forwards}.bloom__heart{position:relative;z-index:1;width:24vmin;height:24vmin;transform:scale(0);will-change:transform;animation:bloomBeat .5s ease forwards,bloomGrow .75s cubic-bezier(.22,1,.36,1) .5s forwards}@keyframes bloomBeat{0%{transform:scale(0)}55%{transform:scale(1.3)}75%{transform:scale(.95)}to{transform:scale(1.12)}}@keyframes bloomGrow{0%{transform:scale(1.12)}to{transform:scale(16)}}@keyframes bloomGlow{0%{transform:scale(0);opacity:.9}to{transform:scale(3.4);opacity:1}}@keyframes bloomFade{to{opacity:0}}.site:not([hidden]) .section--first{animation:sectionDream 1.5s ease both}@keyframes sectionDream{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}.gate__lock{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 1.1rem;color:var(--rose-600);background:var(--rose-100);border-radius:50%}.gate__title{margin:0;font-size:1.35rem;line-height:1.5;color:var(--rose-800)}.gate__desc{margin:.4rem 0 0;color:var(--muted);font-size:.98rem}.gate__form{margin-top:1.5rem;display:grid;gap:.9rem}.input{width:100%;padding:.85rem 1rem;text-align:center;letter-spacing:.14em;color:var(--rose-800);background:#fff;border:1.5px solid var(--border);border-radius:14px;font:inherit;direction:ltr;caret-color:var(--rose-600);transition:border-color .2s ease,box-shadow .2s ease}.input::placeholder{color:#b98a9a;letter-spacing:0;direction:rtl}.input:focus{outline:none;border-color:var(--rose-400);box-shadow:0 0 0 4px #fb71852e}.gate__message{margin:1.3rem 0 0;display:grid;gap:.35rem;animation:msgIn .45s ease both}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.gate__message--main{color:var(--rose-700);font-weight:700;font-size:1.05rem}.gate__message--sub{color:var(--muted);font-size:.92rem}.gate__message--house{margin-top:.3rem;font-size:1.6rem;animation:housePop .6s .2s ease both}@keyframes housePop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.site{position:relative}.site:focus{outline:none}.section{padding:clamp(3rem,9vw,5.5rem) 1.25rem}.section--first{padding-top:clamp(3.5rem,11vw,6.5rem)}.section__inner{max-width:46rem;margin:0 auto;text-align:center}.section__inner--wide{max-width:62rem}.section__eyebrow{display:block;width:54px;height:3px;margin:0 auto clamp(1.4rem,4vw,2rem);border-radius:999px;background:linear-gradient(90deg,transparent,var(--rose-400),transparent);opacity:.7}.section__title{margin:0;font-size:clamp(1.55rem,5vw,2.15rem);font-weight:800;line-height:1.5;color:var(--rose-800)}.section__desc{margin:.6rem auto 0;color:var(--muted);font-size:1rem;max-width:30rem}.letter{margin-top:clamp(1.8rem,5vw,2.6rem);padding:clamp(1.5rem,4vw,2.4rem);text-align:right;background:#fffdf9;border:1px solid var(--border);border-radius:26px;box-shadow:var(--shadow-soft);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.letter__text{margin:0;font-size:clamp(1.125rem,.5rem + 2.6vw,1.25rem);line-height:2.15;overflow-wrap:break-word;white-space:pre-wrap;background-image:repeating-linear-gradient(to bottom,rgba(190,18,60,.09) 0,rgba(190,18,60,.09) 1px,transparent 1px,transparent 38px)}@supports (height: 1lh){.letter__text{background-image:repeating-linear-gradient(to bottom,rgba(190,18,60,.09) 0,rgba(190,18,60,.09) 1px,transparent 1px,transparent 1lh)}}.caret{display:inline-block;width:2px;height:1.05em;margin-inline-start:2px;vertical-align:-.18em;background:var(--rose-500);border-radius:2px;animation:blink .9s steps(2,start) infinite}@keyframes blink{to{visibility:hidden}}.letter__end{margin:1.4rem 0 0;display:grid;place-items:center;color:var(--rose-500);animation:heartPulse 2s ease-in-out infinite}@keyframes heartPulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.18);opacity:1}}.fp{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:center;padding:0 clamp(12px,3vw,24px) calc(14px + env(safe-area-inset-bottom,0px));pointer-events:none}.fp__inner{pointer-events:auto;display:flex;align-items:center;gap:12px;width:100%;max-width:460px;padding:9px 12px;border:1px solid var(--border);border-radius:999px;background:#ffffffd1;backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:0 20px 50px -18px #be123c73,0 8px 24px -14px #be123c4d;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;text-align:right;animation:fpUp .6s ease both;transition:transform .2s ease,box-shadow .25s ease,border-color .2s ease}.fp__inner:hover{transform:translateY(-2px);border-color:var(--rose-300);box-shadow:0 24px 58px -18px #be123c80,0 8px 24px -14px #be123c4d}.fp__inner:active{transform:translateY(0)}.fp__inner:disabled{opacity:.75;cursor:default}.fp__inner:disabled:hover{transform:none;border-color:var(--border)}@keyframes fpUp{0%{opacity:0;transform:translateY(26px) scale(.96)}to{opacity:1;transform:none}}@keyframes fpSpin{to{transform:rotate(360deg)}}.fp__disc{flex-shrink:0;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.9),transparent 55%),radial-gradient(circle,#fda4af 0,#fda4af 30%,#f43f5e 62%,#be123c);box-shadow:inset 0 0 0 3px #ffffff59,0 5px 12px -5px #be123c8c}.fp__inner.is-playing .fp__disc{animation:fpSpin 5s linear infinite}.fp__disc-core{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;color:var(--rose-600);background:#fff;box-shadow:0 1px 4px #0000002e}.fp__body{flex:1;min-width:0;display:grid;gap:6px}.fp__name{font-weight:700;font-size:.95rem;line-height:1.4;color:var(--rose-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fp__sub{display:block;min-width:0}.fp__eq{display:flex;align-items:flex-end;gap:3px;height:18px;width:100%}.fp__eq-bar{flex:1 1 0;min-width:3px;max-width:none;height:15%;border-radius:999px;background:linear-gradient(180deg,var(--rose-400),var(--rose-600));transform-origin:bottom}.fp__eq--css .fp__eq-bar{animation:fpEq 1.05s ease-in-out infinite}.fp__eq--css .fp__eq-bar:nth-child(3n+1){animation-delay:.08s}.fp__eq--css .fp__eq-bar:nth-child(3n+2){animation-delay:.24s}.fp__eq--css .fp__eq-bar:nth-child(3n){animation-delay:-.12s}@keyframes fpEq{0%,to{height:16%}50%{height:95%}}.fp__status{display:block;font-size:.8rem;line-height:1.5;color:var(--muted)}.fp__icon{flex-shrink:0;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--rose-500),var(--rose-700));box-shadow:0 6px 16px -6px #be123c99;transition:transform .15s ease,background .25s ease}.fp__inner.is-playing .fp__icon{background:linear-gradient(135deg,var(--rose-600),#9F1239)}.fp__inner:active .fp__icon{transform:scale(.92)}.gallery{margin-top:clamp(1.6rem,4vw,2.2rem);display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:clamp(1rem,3vw,1.5rem)}.gallery figure{margin:0}.mem__item:nth-child(3n+1) .mem__card{transform:rotate(-1.8deg)}.mem__item:nth-child(3n+2) .mem__card{transform:rotate(1.3deg)}.mem__item:nth-child(3n) .mem__card{transform:rotate(-.9deg)}.mem__card{position:relative;padding:.6rem .6rem 0;background:#fffdfb;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 34px -20px #be123c66;transition:transform .35s ease,box-shadow .35s ease}.mem__card img{display:block;width:100%;aspect-ratio:4 / 5;object-fit:cover;border-radius:8px;background:var(--rose-100);transition:transform .45s ease}.mem__strip{display:flex;align-items:center;justify-content:center;min-height:44px;padding:.55rem .4rem .7rem}.mem__heart{display:inline-grid;place-items:center;color:var(--rose-400);line-height:0}.mem__caption{font-size:.85rem;line-height:1.6;color:var(--muted);text-align:center}.gallery figure:hover .mem__card,.gallery figure:active .mem__card,.gallery figure:focus-within .mem__card{transform:rotate(0) translateY(-6px);box-shadow:0 26px 48px -18px #be123c80}.gallery figure:hover .mem__card img{transform:scale(1.045)}.gallery--empty{display:grid;place-items:center}.gallery__empty{width:100%;min-height:200px;margin:0;display:grid;place-items:center;padding:1.5rem;color:var(--muted);font-size:1.02rem;border:2px dashed var(--rose-300);border-radius:20px;background:#ffffff73}.section--closing{padding-bottom:clamp(3.5rem,9vw,6rem)}.closing__hearts{display:grid;place-items:center;margin-bottom:1rem;color:var(--rose-400);opacity:.9}.closing__text{margin:1rem auto 0;max-width:30rem;font-size:clamp(1.1rem,3vw,1.3rem);line-height:2.2;color:var(--rose-800)}.footer{position:relative;text-align:center;padding:clamp(2.5rem,8vw,4.5rem) 1.25rem calc(7.5rem + env(safe-area-inset-bottom,0px));background:linear-gradient(180deg,transparent,rgba(255,228,230,.6))}.hug{position:relative;max-width:340px;margin:0 auto}.hug__art{width:100%;height:auto;overflow:visible}.hug__group{transform-origin:50% 92%;animation:sway 6s ease-in-out infinite}@keyframes sway{0%,to{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}.hug__arm{transform-origin:center;animation:breathe 3.2s ease-in-out infinite}.hug__arm--a{animation-delay:.15s}@keyframes breathe{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.heart{position:absolute;bottom:55%;color:var(--rose-400);opacity:0;animation:floatUp 5s ease-in-out infinite}.heart--1{right:8%;animation-delay:.6s}.heart--2{left:14%;animation-delay:2.4s;color:var(--rose-500)}.heart--3{right:32%;animation-delay:3.8s}@keyframes floatUp{0%{transform:translateY(0) scale(.7);opacity:0}18%{opacity:.75}to{transform:translateY(-110px) scale(1.15);opacity:0}}.footer__line{margin:clamp(1.5rem,5vw,2.2rem) 0 0;font-size:clamp(1.15rem,4vw,1.4rem);font-weight:700;color:var(--rose-700)}.footer__credit{margin:.7rem 0 0;font-size:.95rem;line-height:2;color:var(--muted)}.reveal{opacity:0;transform:translateY(26px);transition:opacity .65s ease,transform .65s ease}.reveal.is-visible{opacity:1;transform:none}.mem__item.reveal{opacity:0;transform:translate3d(36px,18px,0);transition:opacity .85s ease,transform .9s cubic-bezier(.22,1,.36,1)}.mem__item.reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}.mem__item .mem__card{transform:none!important}.mem__item.reveal{opacity:1;transform:none}.heart,.letter__end{display:none!important}}@media(max-width:480px){.gallery{grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:.85rem}.mem__card{padding:.45rem .45rem 0;border-radius:10px}.mem__card img{border-radius:6px}.mem__strip{min-height:34px;padding:.4rem .3rem .5rem}.mem__item:nth-child(3n+1) .mem__card{transform:rotate(-1.2deg)}.mem__item:nth-child(3n+2) .mem__card{transform:rotate(1deg)}.mem__item:nth-child(3n) .mem__card{transform:rotate(-.7deg)}}@media(max-width:420px){.fp__inner{gap:10px;padding:9px 10px}.fp__disc{width:38px;height:38px}.fp__disc-core{width:16px;height:16px}.fp__name{font-size:.85rem}.fp__sub{min-width:0}.fp__eq{gap:2px;height:16px}.fp__eq-bar{min-width:2px;max-width:none}.fp__icon{width:36px;height:36px}}@media(max-width:360px){.fp__name{display:none}}.fp__inner{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
