:root{--bg:#eff6ff;--primary:#2563eb;--primary-dark:#1e3a8a;--primary-soft:#dbeafe;--primary-tint:#f5f9ff;--ink:#0f172a;--muted:#5b6b86;--line:#2563eb29;--white:#fff;--radius:20px;--radius-sm:14px;--shadow:0 22px 45px -22px #1e3a8a73;--shadow-soft:0 12px 30px -16px #1e3a8a52;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-color:#0000;background-image:radial-gradient(1100px 620px at 12% -10%,#fff 0%,#fff0 62%),radial-gradient(900px 560px at 105% 8%,#dbeafe 0%,#dbeafe00 60%),linear-gradient(#eff6ff 0%,#fff 55%,#eff6ff 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;margin:0;overflow-x:hidden}h1,h2,p,dl,dd{margin:0}.app{z-index:1;min-height:100dvh;padding:clamp(12px,4vw,32px);padding-bottom:max(1.25rem, env(safe-area-inset-bottom));flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.screen{width:100%;max-width:34rem;animation:.5s cubic-bezier(.22,1,.36,1) both screen-in}@keyframes screen-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#ffffffdb;padding:clamp(18px,5vw,30px);position:relative}.card--center{text-align:center}.card.is-shaking{animation:.5s cubic-bezier(.36,.07,.19,.97) both shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}.btn{border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0;justify-content:center;align-items:center;gap:.5rem;min-height:52px;padding:.85rem 1.35rem;font-family:inherit;font-size:1rem;font-weight:700;line-height:1.2;transition:transform .18s,box-shadow .18s,background .18s,color .18s;display:inline-flex}.btn:focus-visible{outline-offset:3px;outline:3px solid #2563eb73}.btn--primary{background:linear-gradient(135deg, #3b82f6 0%, var(--primary) 45%, var(--primary-dark) 100%);color:var(--white);box-shadow:0 14px 26px -12px #2563ebbf}.btn--primary:hover{transform:translateY(-1px)scale(1.02)}.btn--primary:active{transform:translateY(0)scale(.99)}.btn--secondary{background:var(--primary-soft);color:var(--primary-dark);box-shadow:inset 0 0 0 1px #2563eb2e}.btn--secondary:hover{background:#cfe1fd}.btn--ghost{color:var(--muted);min-height:44px;box-shadow:none;background:0 0;padding:.5rem .75rem;font-weight:600}.btn--ghost:hover{color:var(--primary-dark);background:#dbeafeb3}.btn--block{width:100%;margin-top:1rem}.btn--grow{flex:1}.btn--yes{background:linear-gradient(135deg, #60a5fa 0%, var(--primary) 50%, var(--primary-dark) 100%);color:var(--white);min-width:8.5rem;box-shadow:0 16px 30px -12px #2563ebcc}.btn--yes:hover{transform:scale(1.06)rotate(-1deg)}.btn--yes:active{transform:scale(.97)}.btn--no{color:#475569;will-change:left, top;background:linear-gradient(#eef2f8 0%,#e2e8f0 100%);min-width:7.5rem;transition:left .19s cubic-bezier(.34,1.56,.64,1),top .19s cubic-bezier(.34,1.56,.64,1),transform .2s;position:absolute;box-shadow:0 10px 20px -14px #1e293b99,inset 0 0 0 1px #cbd5e1}.btn--no[data-ready=false]{visibility:hidden}.gate__badge{width:2.75rem;height:2.75rem;color:var(--primary);background:var(--primary-soft);border-radius:999px;justify-content:center;align-items:center;margin-bottom:.9rem;display:inline-flex}.gate__title{letter-spacing:-.02em;font-size:clamp(1.35rem,5.5vw,1.7rem)}.gate__text{color:var(--muted);margin-top:.5rem;font-size:.98rem;line-height:1.55}.gate__error{color:#b91c1c;margin-top:.75rem;font-size:.92rem;font-weight:600;animation:.32s cubic-bezier(.34,1.56,.64,1) both pop-in}.gate__note{color:#93a3bb;margin-top:.85rem;font-size:.82rem}.field{text-align:left;margin-top:1.1rem;display:block}.field__label{color:var(--primary-dark);align-items:center;gap:.4rem;margin-bottom:.45rem;font-size:.88rem;font-weight:700;display:flex}.field__label svg{color:var(--primary)}.field__input-wrap{display:block;position:relative}.field__input{width:100%;min-height:52px;color:var(--ink);background:var(--white);border:1.5px solid var(--primary-soft);border-radius:var(--radius-sm);padding:.8rem 1rem;font-family:inherit;font-size:16px;transition:border-color .18s,box-shadow .18s;box-shadow:inset 0 1px 2px #0f172a0a}.field__input::placeholder{color:#9baccc}.field__input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 4px #2563eb29}.field__input[aria-invalid=true]{border-color:#f0a9a9}.field__input--password{letter-spacing:.14em;padding-right:3.25rem}.field__input--area{resize:vertical;letter-spacing:normal;min-height:96px;line-height:1.5}.field__toggle{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}.field__toggle:hover{background:var(--primary-tint);color:var(--primary)}.field__toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.field__error{color:#b91c1c;margin-top:.35rem;font-size:.84rem;font-weight:600;animation:.28s both pop-in;display:block}.field-row{grid-template-columns:1fr;gap:0 1rem;display:grid}@media (width>=480px){.field-row{grid-template-columns:1.15fr .85fr}}.hero{text-align:center}.hero__eyebrow{background:var(--primary-soft);color:var(--primary-dark);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.78rem;font-weight:700;display:inline-flex}.hero__eyebrow svg{color:var(--primary)}.hero__title{letter-spacing:-.025em;margin-top:1.1rem;font-size:clamp(1.7rem,7vw,2.3rem);line-height:1.15}.hero__dots{color:var(--primary)}.hero__lede{color:var(--muted);margin-top:.75rem;font-size:clamp(.98rem,3.6vw,1.08rem);line-height:1.55}.hero__big{margin-top:.5rem}.hero__highlight{color:var(--primary-dark);letter-spacing:.01em;background:linear-gradient(135deg,#dbeafe 0%,#fff 100%);border-radius:999px;align-items:center;gap:.5rem;padding:.45rem 1.1rem;font-size:clamp(1.15rem,5.4vw,1.6rem);font-weight:800;display:inline-flex;position:relative;box-shadow:inset 0 0 0 1.5px #2563eb47}.hero__heart{color:var(--primary);animation:2.4s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}12%{transform:scale(1.18)}24%{transform:scale(1)}}.hero__aside{color:var(--muted);margin-top:1.1rem;font-size:.92rem;line-height:1.6}.hero__aside-em{color:var(--primary);align-items:center;gap:.35rem;font-weight:700;display:inline-flex}.choice{text-align:center;border-top:1px dashed #2563eb47;margin-top:1.6rem;padding-top:1.3rem}.choice__title{letter-spacing:-.01em;font-size:clamp(1.15rem,4.6vw,1.4rem)}.choice__area{flex-direction:column;justify-content:flex-start;align-items:center;min-height:12.5rem;margin-top:.5rem;padding:.75rem 0;display:flex;position:relative;overflow:visible}@media (width>=640px){.choice__area{min-height:10rem}}.choice__row{justify-content:center;width:100%;display:flex}.choice__hint{color:#8296b5;min-height:1.35rem;margin-top:.15rem;font-size:.85rem;font-weight:600}.celebrate__eyebrow{background:var(--primary-soft);color:var(--primary-dark);text-transform:uppercase;letter-spacing:.04em;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.78rem;font-weight:700;display:inline-flex}.celebrate__title{letter-spacing:-.03em;margin-top:1rem;font-size:clamp(1.8rem,8vw,2.5rem);animation:.5s cubic-bezier(.34,1.56,.64,1) both pop-in}.celebrate__lede{color:var(--muted);margin-top:.6rem;font-size:1rem;line-height:1.55}.celebrate__big{color:var(--muted);margin-top:1rem;font-size:.95rem}.celebrate__highlight{color:var(--primary-dark);justify-content:center;align-items:center;gap:.5rem;margin-top:.35rem;font-size:clamp(1.2rem,5.6vw,1.7rem);font-weight:800;display:flex}.celebrate__highlight svg{color:var(--primary)}.section__title{letter-spacing:-.02em;text-align:center;justify-content:center;align-items:center;gap:.5rem;font-size:clamp(1.2rem,5vw,1.5rem);line-height:1.3;display:flex}.inline-heart{color:var(--primary);flex:none}.section__lede{color:var(--muted);text-align:center;margin-top:.5rem;font-size:.95rem;line-height:1.5}.summary{gap:.6rem;margin:1.25rem 0 0;display:grid}.summary__row{border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--line);text-align:left;background:linear-gradient(135deg,#f5f9ff 0%,#fff 100%);flex-direction:column;gap:.2rem;padding:.7rem .95rem;display:flex}.summary__key{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:.4rem;font-size:.78rem;font-weight:700;display:flex}.summary__value{overflow-wrap:anywhere;white-space:pre-wrap;font-size:1rem;font-weight:600;line-height:1.45}.actions{align-items:center;gap:.6rem;margin-top:1rem;display:flex}.actions--spread{justify-content:space-between}.decor{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.decor__blob{filter:blur(60px);opacity:.55;border-radius:50%;animation:26s ease-in-out infinite alternate drift;position:absolute}.decor__blob--a{background:#dbeafe;width:22rem;height:22rem;top:-8rem;left:-7rem}.decor__blob--b{background:#bfdbfe;width:18rem;height:18rem;animation-delay:-8s;bottom:-4rem;right:-6rem}.decor__blob--c{background:#e0ecff;width:14rem;height:14rem;animation-delay:-15s;top:4%;right:12%}@keyframes drift{0%{transform:translate(0,0)scale(1)}to{transform:translate(2.5rem,1.75rem)scale(1.12)}}.decor__item{color:var(--primary);opacity:.42;animation:floaty var(--dur,10s) ease-in-out var(--delay,0s) infinite alternate;position:absolute}.decor--party .decor__item{opacity:.6;animation-duration:calc(var(--dur,10s) * .7)}@keyframes floaty{0%{transform:translate(0,0)rotate(-6deg)}to{transform:translate(.5rem,-1.6rem)rotate(8deg)}}.confetti{z-index:40;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.modal{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a73;place-items:center;padding:1.1rem;animation:.25s both fade-in;display:grid;position:fixed;inset:0}.modal__card{text-align:center;background:var(--white);border-radius:var(--radius);width:min(25rem,100%);box-shadow:var(--shadow);padding:1.75rem 1.5rem;animation:.35s cubic-bezier(.34,1.56,.64,1) both pop-in}.modal__emoji{margin-bottom:.6rem;font-size:2rem;line-height:1;display:block}.modal__title{letter-spacing:-.01em;font-size:clamp(1.05rem,4.4vw,1.25rem);line-height:1.4}.modal__text{color:var(--muted);margin:.5rem 0 1.25rem;font-size:.98rem}.modal__card .btn{width:100%}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.toast{left:50%;bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:70;background:var(--primary-dark);max-width:calc(100% - 2rem);color:var(--white);box-shadow:var(--shadow-soft);border-radius:999px;align-items:center;gap:.5rem;padding:.7rem 1.1rem;font-size:.9rem;font-weight:600;animation:.3s cubic-bezier(.34,1.56,.64,1) both toast-in;display:flex;position:fixed;transform:translate(-50%)}.toast svg{color:#93c5fd;flex:none}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,.9rem)}to{opacity:1;transform:translate(-50%)}}@media (width<=380px){.card{padding:1rem}.hero__eyebrow{padding:.28rem .6rem;font-size:.68rem}.hero__title{margin-top:.7rem;font-size:1.45rem}.hero__lede{margin-top:.45rem;font-size:.94rem}.hero__big{margin-top:.3rem}.hero__highlight{padding:.3rem .8rem;font-size:1.05rem}.hero__aside{margin-top:.6rem;font-size:.85rem}.choice{margin-top:1rem;padding-top:.8rem}.choice__title{font-size:1.05rem}.choice__area{min-height:11.5rem;margin-top:.25rem}.choice__hint{font-size:.78rem}.field-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.btn--no{will-change:auto}.decor__item,.decor__blob{animation:none!important}}
