*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{font-family:inherit}#root{min-height:100svh}:root{--pink:#ffb3cc;--pink-soft:#ffe4f0;--pink-deep:#ff6b9d;--lav:#e8d5f5;--lav-deep:#c084fc;--peach:#ffe8d6;--mint-deep:#4caf8a;--white:#fff;--rose:#5a3a4a;--rose-mid:#8a5a6a;--rose-light:#c4a4b4;--r:16px;--shadow:0 4px 24px #ff6b9d21;--shadow-lg:0 8px 40px #ff6b9d33}body{color:var(--rose);background:linear-gradient(300deg,#ffe0eb,#f2e2ff,#ffe8f4,#fff5f7) 0 0/400% 400%;min-height:100svh;animation:12s infinite bgShift}@keyframes bgShift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.app{flex-direction:column;max-width:480px;min-height:100svh;margin:0 auto;display:flex;position:relative;overflow-x:hidden}.floaties{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.floatie{opacity:.28;font-size:1.5rem;animation:7s ease-in-out infinite float;position:absolute}.f0{animation-duration:8s;animation-delay:0s;top:4%;left:4%}.f1{animation-duration:10s;animation-delay:1.2s;top:8%;right:6%}.f2{animation-duration:7s;animation-delay:2.1s;top:22%;left:2%}.f3{animation-duration:9s;animation-delay:.7s;top:32%;right:4%}.f4{animation-duration:8s;animation-delay:3.3s;top:48%;left:6%}.f5{animation-duration:11s;animation-delay:1.8s;top:58%;right:3%}.f6{animation-duration:7s;animation-delay:2.8s;top:70%;left:3%}.f7{animation-duration:9s;animation-delay:.4s;top:80%;right:6%}.f8{animation-duration:8s;animation-delay:3.9s;top:90%;left:5%}.f9{animation-duration:12s;animation-delay:4.5s;top:15%;left:48%}@keyframes float{0%,to{transform:translateY(0)rotate(0)}33%{transform:translateY(-14px)rotate(6deg)}66%{transform:translateY(8px)rotate(-5deg)}}.top-bar{z-index:10;-webkit-backdrop-filter:blur(12px);background:#ffffff8c;border-bottom:1px solid #ffb3cc4d;justify-content:space-between;align-items:center;padding:14px 20px;display:flex;position:sticky;top:0}.back-btn{color:var(--rose-mid);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:6px 10px;font-size:14px;font-weight:600;transition:background .2s,color .2s}.back-btn:hover{background:var(--pink-soft);color:var(--rose)}.progress-dots{align-items:center;gap:8px;display:flex}.pdot{background:var(--pink);border-radius:50%;width:10px;height:10px;transition:background .3s,transform .3s}.pdot.on{background:var(--pink-deep);transform:scale(1.25)}.step-wrap{z-index:1;flex-direction:column;flex:1;display:flex;position:relative}@keyframes exitLeft{to{opacity:0;transform:translate(-36px)}}@keyframes exitRight{to{opacity:0;transform:translate(36px)}}@keyframes enterRight{0%{opacity:0;transform:translate(36px)}to{opacity:1;transform:translate(0)}}@keyframes enterLeft{0%{opacity:0;transform:translate(-36px)}to{opacity:1;transform:translate(0)}}.exit-left{animation:.28s forwards exitLeft}.exit-right{animation:.28s forwards exitRight}.enter-right{animation:.36s cubic-bezier(.22,1,.36,1) forwards enterRight}.enter-left{animation:.36s cubic-bezier(.22,1,.36,1) forwards enterLeft}.welcome{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:22px;padding:36px 24px 48px;display:flex}.welcome-badge{background:linear-gradient(135deg, var(--pink), var(--lav));color:var(--rose);letter-spacing:.4px;border-radius:999px;padding:7px 22px;font-size:13px;font-weight:700;animation:.6s cubic-bezier(.34,1.56,.64,1) both popIn}.welcome h1{color:var(--rose);font-size:clamp(24px,7vw,32px);font-weight:800;line-height:1.3;animation:.6s cubic-bezier(.34,1.56,.64,1) 80ms both popIn}.brand{background:linear-gradient(135deg, var(--pink-deep), var(--lav-deep));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.welcome-lead{color:var(--rose-mid);max-width:340px;font-size:15px;line-height:1.75;animation:.6s cubic-bezier(.34,1.56,.64,1) .16s both popIn}.welcome-note{color:#a06030;background:#fff3e8;border:1.5px solid #fc9;border-radius:12px;padding:10px 20px;font-size:13px;font-weight:600;animation:.6s cubic-bezier(.34,1.56,.64,1) .24s both popIn}.form-step{flex-direction:column;gap:20px;padding:28px 20px 48px;display:flex}.step-title{color:var(--rose);font-size:22px;font-weight:800;animation:.5s cubic-bezier(.34,1.56,.64,1) both popIn}.step-desc{color:var(--rose-mid);margin-top:-10px;font-size:14px}.field{flex-direction:column;gap:8px;display:flex}.field span{color:var(--rose);font-size:14px;font-weight:700}.field input{border:2px solid var(--pink);border-radius:var(--r);background:var(--white);color:var(--rose);appearance:none;outline:none;width:100%;padding:14px 16px;font-size:16px;transition:border-color .2s,box-shadow .2s}.field input:focus{border-color:var(--pink-deep);box-shadow:0 0 0 4px #ff6b9d1f}.field input::placeholder{color:var(--rose-light)}.radio-row{flex-wrap:wrap;gap:10px;display:flex}.radio-btn{border:2px solid var(--pink);border-radius:var(--r);background:var(--white);color:var(--rose-mid);cursor:pointer;text-align:center;flex:140px;padding:14px 12px;font-size:14px;font-weight:600;line-height:1.4;transition:all .2s}.radio-btn:hover{border-color:var(--pink-deep);background:var(--pink-soft)}.radio-btn.active{border-color:var(--pink-deep);color:var(--rose);background:linear-gradient(135deg,#fff0f6,#f5e4ff);transform:translateY(-1px);box-shadow:0 3px 14px #ff6b9d38}.btn{border-radius:var(--r);background:linear-gradient(135deg, var(--pink-deep), var(--lav-deep));color:#fff;cursor:pointer;letter-spacing:.2px;border:none;width:100%;padding:17px;font-size:16px;font-weight:700;transition:transform .15s,box-shadow .2s,opacity .2s;box-shadow:0 4px 22px #ff6b9d61}.btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 30px #ff6b9d7a}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.42;cursor:not-allowed;box-shadow:none}.btn-lg{padding:19px;font-size:17px;animation:.6s cubic-bezier(.34,1.56,.64,1) .32s both popIn}@keyframes pulse{0%,to{box-shadow:0 4px 22px #ff6b9d61}50%{box-shadow:0 4px 36px #c084fca6}}.pulse{animation:2.2s ease-in-out infinite pulse}.period-section{flex-direction:column;gap:10px;display:flex}.period-label{color:var(--rose);letter-spacing:.2px;padding:4px 2px;font-size:15px;font-weight:800}@keyframes cardIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.ws-card{background:var(--white);border:2px solid var(--pink-soft);border-radius:var(--r);cursor:pointer;text-align:left;width:100%;animation:cardIn .45s ease calc(var(--delay,0s)) both;align-items:center;gap:12px;padding:14px 16px;transition:border-color .2s,box-shadow .2s,transform .15s;display:flex}.ws-card:hover:not(:disabled){border-color:var(--pink);box-shadow:var(--shadow);transform:translateY(-1px)}.ws-card.sel{border-color:var(--pink-deep);background:linear-gradient(135deg,#fff0f6,#f6e5ff);box-shadow:0 4px 18px #ff6b9d38}.ws-card.full{opacity:.48;cursor:not-allowed;background:#fafafa}.ws-check{border:2px solid var(--pink);width:26px;height:26px;color:var(--pink-deep);background:var(--white);border-radius:7px;flex-shrink:0;place-items:center;font-size:14px;font-weight:800;transition:all .2s;display:grid}.ws-card.sel .ws-check{background:var(--pink-deep);border-color:var(--pink-deep);color:#fff;box-shadow:0 2px 8px #ff6b9d66}.ws-body{flex:1;min-width:0}.ws-time{color:var(--lav-deep);letter-spacing:.3px;font-size:12px;font-weight:800}.ws-name{color:var(--rose);margin-top:2px;font-size:14px;font-weight:700}.ws-by{color:var(--rose-mid);margin-top:2px;font-size:12px}.ws-spots{color:var(--mint-deep);white-space:nowrap;flex-shrink:0;font-size:12px;font-weight:700}.ws-spots.low{color:#e67e22}.ws-spots.zero{color:#e74c3c}.field-hint{color:var(--rose-mid);margin-top:-2px;font-size:12px;font-weight:500}.loading-cap{color:var(--lav-deep);font-size:12px;font-style:italic}.err{color:#c0392b;background:#fff0f2;border:1.5px solid #fcc;border-radius:10px;padding:11px 15px;font-size:13px;font-weight:500}.confirm{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;padding:36px 24px 52px;display:flex;position:relative;overflow:hidden}.confirm-gift{filter:drop-shadow(0 4px 16px #ff6b9d4d);font-size:68px;animation:.8s cubic-bezier(.34,1.56,.64,1) both popIn}.confirm h2{color:var(--rose);font-size:26px;font-weight:800;animation:.6s .12s both popIn}.confirm>p{color:var(--rose-mid);max-width:340px;font-size:15px;line-height:1.75;animation:.6s .22s both popIn}.confirm-card{background:var(--white);border:2px solid var(--pink-soft);text-align:left;width:100%;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;gap:11px;padding:18px;animation:.6s .3s both popIn;display:flex}.confirm-row{color:var(--rose);align-items:flex-start;gap:10px;font-size:14px;font-weight:500;display:flex}.crow-icon{flex-shrink:0;margin-top:1px;font-size:16px}.event-badge{background:linear-gradient(135deg, var(--pink), var(--lav));color:var(--rose);letter-spacing:.3px;border-radius:999px;padding:9px 26px;font-size:13px;font-weight:700;animation:.6s .4s both popIn}.cal-section{flex-direction:column;align-items:center;gap:12px;width:100%;animation:.6s .38s both popIn;display:flex}.cal-label{color:var(--rose-mid);font-size:14px;font-weight:700}.cal-btns{gap:10px;width:100%;display:flex}.cal-btn{cursor:pointer;border:none;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:7px;padding:13px 10px;font-family:inherit;font-size:14px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .2s;display:flex}.cal-btn:hover{transform:translateY(-2px)}.cal-google{color:var(--rose);border:2px solid var(--pink);background:linear-gradient(135deg,#fff0f6,#f0e4ff);box-shadow:0 2px 12px #ff6b9d26}.cal-google:hover{box-shadow:0 4px 18px #ff6b9d40}.cal-apple{color:var(--rose);border:2px solid var(--lav);background:linear-gradient(135deg,#f0e4ff,#e4f5ff);box-shadow:0 2px 12px #c084fc26}.cal-apple:hover{box-shadow:0 4px 18px #c084fc40}.confetti-wrap{pointer-events:none;z-index:5;height:0;position:absolute;top:0;left:0;right:0;overflow:visible}.conf{font-size:1.6rem;animation:3.5s ease-in forwards confettiFall;position:absolute}@keyframes confettiFall{0%{opacity:1;transform:translateY(-20px)rotate(0)scale(1.1)}70%{opacity:.9}to{opacity:0;transform:translateY(520px)rotate(740deg)scale(.4)}}.c0{animation-delay:50ms;left:4%}.c1{animation-delay:.35s;left:14%}.c2{animation-delay:.1s;left:26%}.c3{animation-delay:.55s;left:40%}.c4{animation-delay:.2s;left:55%}.c5{animation-delay:.45s;left:68%}.c6{animation-delay:80ms;left:80%}.c7{animation-delay:.65s;left:92%}@keyframes popIn{0%{opacity:0;transform:scale(.88)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.32s both fadeIn}
