:root{font-family:Georgia,"Times New Roman",serif;color:#fff7fb;background:#100713}*{box-sizing:border-box}html,body{min-width:320px;min-height:100%;margin:0}body{min-height:100svh;overflow-x:hidden;background:radial-gradient(circle at 50% 20%,#8c406c55,transparent 28%),radial-gradient(circle at 85% 78%,#d27f8a32,transparent 27%),linear-gradient(145deg,#100713,#3b112a 58%,#130713)}.access-screen{position:relative;display:grid;min-height:100svh;place-items:center;padding:20px 16px;isolation:isolate;overflow:hidden}.stars,.stars::before,.stars::after{position:absolute;inset:0;content:"";pointer-events:none}.stars{z-index:-1;opacity:.44;background-image:radial-gradient(circle,#fff7da 1px,transparent 1.5px);background-size:88px 88px;animation:drift 20s linear infinite}.stars::before{opacity:.5;background-image:radial-gradient(circle,#ffc1dc 1px,transparent 1.5px);background-size:135px 135px;animation:drift 29s linear reverse infinite}.stars::after{opacity:.3;background:radial-gradient(circle at 50% 35%,#ffb5d766,transparent 29%),radial-gradient(circle at 50% 75%,#9e75e744,transparent 37%)}.access-card{width:min(100%,450px);padding:clamp(30px,8vw,48px) clamp(20px,7vw,38px);border:1px solid #ffd2e06e;border-radius:30px;text-align:center;background:linear-gradient(145deg,#3a122bdc,#170916e8);box-shadow:0 20px 60px #06010799,0 0 46px #e77aa33b;backdrop-filter:blur(8px);animation:arrive .85s cubic-bezier(.2,.8,.2,1) both}.eyebrow{margin:0 0 12px;color:#f6b4cb;font:700 clamp(.67rem,3vw,.82rem)/1.4 "Trebuchet MS",sans-serif;letter-spacing:.16em;text-transform:uppercase}.heart{margin:0 0 13px;font-size:clamp(3.8rem,17vw,5.6rem);line-height:1;filter:drop-shadow(0 0 16px #ff7eaf) drop-shadow(0 0 35px #cf8dff88);animation:heartbeat 1.8s ease-in-out infinite}h1{margin:0;font-size:clamp(2.15rem,10vw,3.65rem);line-height:1.08;color:#fff1f7;text-shadow:0 0 22px #ff7db4a6}.lead{margin:18px 0 8px;color:#ffe5ef;font-size:clamp(1.12rem,4.6vw,1.38rem);line-height:1.45}.instruction{margin:0 0 22px;color:#eac4d7;font-size:clamp(.97rem,3.9vw,1.1rem);line-height:1.5}form{display:grid;gap:13px}input,button{width:100%;min-height:53px;font:700 clamp(.96rem,3.8vw,1.08rem) "Trebuchet MS",Arial,sans-serif}input{border:1px solid #ffd1df9c;border-radius:15px;padding:12px 15px;color:#fff6fa;outline:none;background:#150915aa;box-shadow:inset 0 1px #ffffff1c;transition:border-color .2s ease,box-shadow .2s ease}input::placeholder{color:#d7aabe}input:focus{border-color:#ffe1ad;box-shadow:0 0 0 3px #ee75ab3d,inset 0 1px #ffffff22}button{border:1px solid #ffd8a9;border-radius:15px;padding:12px 16px;color:#fffaf0;background:linear-gradient(135deg,#df5c91,#8848a5);box-shadow:0 7px 0 #56214f,0 12px 28px #100411a0;cursor:pointer;touch-action:manipulation;transition:transform .2s ease,filter .2s ease}button:active{transform:translateY(3px);box-shadow:0 4px 0 #56214f,0 8px 18px #100411a0}button:disabled,input:disabled{cursor:wait;filter:saturate(.65) brightness(.85)}.access-message{min-height:1.5em;margin:1px 0 0;color:#ffd199;font:700 .95rem/1.45 "Trebuchet MS",Arial,sans-serif}.access-message.error{color:#ffc1ce}.access-card.unlocking{animation:unlock .95s ease both}.access-card.unlocking::after{position:absolute;inset:-20%;content:"";background:radial-gradient(circle,#fff8c7f2 0,#ffb3db8c 22%,transparent 58%);animation:flash .9s ease both;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes arrive{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}@keyframes heartbeat{50%{transform:scale(1.12)}}@keyframes drift{to{transform:translateY(-88px)}}@keyframes unlock{55%{transform:scale(1.035);filter:brightness(1.5)}to{opacity:0;transform:scale(1.18);filter:brightness(2)}}@keyframes flash{from{opacity:0;transform:scale(.4)}45%{opacity:1}to{opacity:0;transform:scale(1.35)}}@media(max-height:680px){.access-screen{align-items:start;overflow-y:auto}.access-card{margin:14px 0;padding-top:25px;padding-bottom:25px}.heart{font-size:3.7rem;margin-bottom:8px}.lead{margin-top:11px}.instruction{margin-bottom:15px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
