:root{--night:#12051c;--plum:#2a0b3d;--rose:#ff4d8d;--blush:#ffb3cf;--gold:#ffd58a;--text:#fff3f8;--muted:#d9b7cc}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--night);color:var(--text);font-family:Raleway,system-ui,sans-serif;overflow-x:hidden;-webkit-font-smoothing:antialiased}body.locked{overflow:hidden}#lock{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(ellipse 80% 60% at 20% 10%,rgba(255,77,141,.28),transparent 60%),radial-gradient(ellipse 70% 60% at 85% 90%,rgba(140,60,255,.3),transparent 60%),radial-gradient(ellipse 60% 50% at 50% 50%,rgba(255,213,138,.08),transparent 70%),linear-gradient(160deg,#1a0628 0,var(--night) 55%,#08020d 100%);transition:opacity 1.2s ease,transform 1.2s ease,filter 1.2s ease}#lock.gone{opacity:0;transform:scale(1.15);filter:blur(12px);pointer-events:none}#lockStars{width:100%;height:100%}#floaties,#lockStars{position:absolute;inset:0}#floaties{overflow:hidden;pointer-events:none}.aurora{position:absolute;width:60vmax;height:60vmax;border-radius:50%;filter:blur(80px);opacity:.35;mix-blend-mode:screen;animation:drift 18s ease-in-out infinite alternate}.aurora.a{background:#ff4d8d;top:-20vmax;left:-15vmax}.aurora.b{background:#7b2cff;bottom:-25vmax;right:-20vmax;animation-delay:-6s}.aurora.c{background:#ff9a5a;top:30%;left:40%;width:35vmax;height:35vmax;opacity:.18;animation-delay:-12s}@keyframes drift{to{transform:translate(8vmax,6vmax) scale(1.15)}}.floaty{position:absolute;bottom:-40px;pointer-events:none;animation:rise linear infinite;opacity:0}@keyframes rise{0%{transform:translateY(0) rotate(0) scale(.6);opacity:0}10%{opacity:.9}to{transform:translateY(-115vh) rotate(40deg) scale(1.1);opacity:0}}.card{position:relative;z-index:2;width:min(420px,100%);padding:40px 28px 32px;text-align:center;border-radius:32px;background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.03));border:1px solid rgba(255,179,207,.28);box-shadow:0 30px 80px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.15),0 0 120px rgba(255,77,141,.18);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);animation:cardIn 1.4s cubic-bezier(.2,.9,.2,1.1) both}@keyframes cardIn{0%{opacity:0;transform:translateY(40px) scale(.94)}}.card.shake{animation:shake .6s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-9px)}40%,60%{transform:translateX(9px)}}.heartlock{width:128px;height:128px;margin:-6px auto 14px;position:relative}.heartlock svg{width:100%;height:100%;overflow:visible;animation:beat 1.4s ease-in-out infinite;filter:drop-shadow(0 0 24px rgba(255,77,141,.75))}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(.98)}45%{transform:scale(1.08)}}.heartlock .ring{position:absolute;inset:-14px;border-radius:50%;border:1px dashed rgba(255,213,138,.45);animation:spin 24s linear infinite}.heartlock .ring:after,.heartlock .ring:before{content:"✦";position:absolute;color:var(--gold);font-size:14px;text-shadow:0 0 10px var(--gold)}.heartlock .ring:before{top:-9px;left:50%}.heartlock .ring:after{bottom:-9px;left:46%}@keyframes spin{to{transform:rotate(1turn)}}.unlocking .heartlock svg{animation:burst 1s cubic-bezier(.5,-.4,.3,1.4) forwards}@keyframes burst{40%{transform:scale(.8)}to{transform:scale(3.2);opacity:0}}.unlocking .shackle{animation:open .5s ease forwards}@keyframes open{to{transform:translateY(-10px) rotate(-18deg)}}#lock .eyebrow{font-size:12px;letter-spacing:.35em;text-transform:uppercase;color:var(--gold);opacity:.85}#lock h1{font-family:Marck Script,cursive;font-weight:400;font-size:clamp(44px,12vw,60px);line-height:1.05;margin:8px 0 6px;background:linear-gradient(90deg,#ffd58a,#ff8fb8,#ffffff,#ff8fb8,#ffd58a);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite}@keyframes shimmer{to{background-position:200%}}#lock .sub{font-family:Cormorant Garamond,serif;font-style:italic;font-size:19px;color:var(--muted);line-height:1.45;margin-bottom:24px}#lock form{display:flex;gap:10px}#lock input{flex:1 1;min-width:0;height:54px;padding:0 20px;border-radius:999px;border:1px solid rgba(255,179,207,.35);background:rgba(18,5,28,.55);color:var(--text);font:17px Raleway,sans-serif;letter-spacing:.08em;outline:none;transition:border-color .3s,box-shadow .3s}#lock input::placeholder{color:rgba(255,220,235,.45);letter-spacing:.02em}#lock input:focus{border-color:var(--rose);box-shadow:0 0 0 4px rgba(255,77,141,.18),0 0 30px rgba(255,77,141,.25)}#lock button{width:54px;height:54px;flex:none;border:0;border-radius:50%;cursor:pointer;background:radial-gradient(circle at 30% 30%,#ff8fb8,#ff2e74 60%,#c2185b);box-shadow:0 8px 24px rgba(255,46,116,.5),inset 0 2px 0 rgba(255,255,255,.35);display:grid;place-items:center;transition:transform .2s}#lock button:hover{transform:scale(1.08) rotate(-6deg)}#lock button:active{transform:scale(.94)}#lock button:disabled{opacity:.7;cursor:wait}#lock button svg{width:24px;height:24px}#lock .msg{min-height:24px;margin-top:14px;font-size:15px;color:var(--blush);transition:opacity .3s}#lock .hint{margin-top:6px;font-size:13px;color:rgba(255,220,235,.5);font-style:italic}#lock .hint:empty{display:none}#lock .bear{position:absolute;width:92px;right:-18px;bottom:-34px;transform:rotate(8deg);border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.4)}@media (max-width:420px){#lock .bear{width:72px;right:-6px;bottom:-40px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important}}