.floating-hearts{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.floating-heart{position:absolute;bottom:-60px;animation:floatUp linear infinite;-webkit-user-select:none;user-select:none}@keyframes floatUp{0%{transform:translateY(0) rotate(0);opacity:var(--heart-opacity)}to{transform:translateY(calc(-100vh - 80px)) rotate(20deg);opacity:0}}.captcha-card{background:#fff;border-radius:16px;box-shadow:0 8px 32px #ec489933;overflow:hidden;width:340px;max-width:90vw;margin:auto 0;animation:fadeIn .6s ease-out both;z-index:1}.captcha-header{background:linear-gradient(135deg,var(--pink-500),var(--pink-600));color:#fff;padding:16px 20px}.captcha-header h2{font-family:var(--font-body);font-size:1.1rem;font-weight:700;margin-bottom:4px}.captcha-header p{font-size:.85rem;opacity:.9}.captcha-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:16px}.captcha-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:48px;border:3px solid var(--pink-100);border-radius:12px;cursor:pointer;transition:all .15s ease;position:relative;background:var(--pink-50);user-select:none;-webkit-user-select:none;min-width:0;overflow:hidden}.captcha-cell:hover{border-color:var(--pink-300);background:#fff}.captcha-cell.selected{border-color:var(--pink-500);background:var(--pink-100)}.captcha-cell-image{font-size:unset;padding:2px}.captcha-cell-img{width:100%;height:100%;max-width:100%;object-fit:cover;border-radius:8px;user-select:none;-webkit-user-select:none;pointer-events:none}.captcha-cell.selected:after{content:"✓";position:absolute;top:4px;right:6px;font-size:14px;color:var(--pink-600);font-weight:700}.captcha-footer{padding:8px 16px 16px;display:flex;flex-direction:column;gap:10px}.captcha-error{color:var(--red-600);font-size:.85rem;font-weight:600;text-align:center;min-height:1.2em}.captcha-verify-btn{background:linear-gradient(135deg,var(--pink-500),var(--pink-600));color:#fff;border:none;border-radius:10px;padding:12px;font-family:var(--font-body);font-size:1rem;font-weight:700;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.captcha-verify-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px #ec489966}.captcha-verify-btn:active{transform:translateY(0)}.yes-btn{width:120px;height:110px;background:linear-gradient(135deg,var(--pink-400),var(--red-500));border:none;cursor:pointer;clip-path:path("M60 100 C60 100, 10 70, 10 40 C10 15, 35 5, 60 30 C85 5, 110 15, 110 40 C110 70, 60 100, 60 100Z");display:flex;align-items:center;justify-content:center;padding-bottom:10px;color:#fff;font-family:var(--font-body);font-size:1.3rem;font-weight:700;animation:pulse 1.5s ease-in-out infinite;transition:filter .2s;filter:drop-shadow(0 4px 12px rgba(239,68,68,.4))}.yes-btn:hover{filter:drop-shadow(0 6px 20px rgba(239,68,68,.6)) brightness(1.1)}.no-btn{background:var(--pink-200);color:var(--pink-700);border:2px solid var(--pink-300);border-radius:12px;padding:12px 28px;font-family:var(--font-body);font-size:1rem;font-weight:600;cursor:pointer;transition:transform .3s ease,left .3s ease,top .3s ease,opacity .3s ease,filter .3s ease;white-space:nowrap;user-select:none;-webkit-user-select:none}.no-btn.escaped{position:absolute;z-index:10}.particle-trail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;overflow:hidden}.particle{position:absolute;font-size:16px;pointer-events:none;-webkit-user-select:none;user-select:none;will-change:transform,opacity}.valentine-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px;width:100%;height:100%;position:relative;z-index:1;animation:fadeInOpacity .6s ease-out both}.valentine-title{font-family:var(--font-heading);font-size:clamp(1.8rem,5vw,3rem);color:var(--pink-600);text-align:center;text-shadow:0 2px 8px rgba(236,72,153,.2)}.valentine-buttons{display:flex;align-items:center;gap:32px}.spawned-yes-btn{position:absolute;z-index:5;animation:fadeInOpacity .4s ease-out both}.celebration-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;z-index:1;text-align:center;padding:20px;margin:auto 0}.celebration-title{font-family:var(--font-heading);font-size:clamp(2rem,6vw,3.5rem);color:var(--pink-600);animation:fadeIn .8s ease-out both,pulse 2s ease-in-out infinite;text-shadow:0 2px 12px rgba(236,72,153,.3)}.celebration-subtitle{font-size:clamp(1rem,3vw,1.4rem);color:var(--pink-500);animation:fadeIn .8s ease-out both;animation-delay:.8s;opacity:0}.step-nav{display:flex;gap:4px;padding:8px;background:#fff;border-radius:12px;box-shadow:0 2px 12px #00000014;overflow-x:auto;flex-shrink:0}.step-tab{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;border:none;border-radius:8px;background:transparent;cursor:pointer;font-family:var(--font-body);font-size:.7rem;font-weight:600;color:var(--pink-400);transition:all .2s;white-space:nowrap;flex:1;min-width:0}.step-tab:hover{background:var(--pink-50)}.step-tab.active{background:var(--pink-500);color:#fff}.step-tab.completed{color:var(--pink-600)}.step-icon{font-size:1.2rem}.step-label{font-size:.65rem}@media (max-width: 600px){.step-nav{gap:2px;padding:6px}.step-tab{padding:6px 8px}.step-label{display:none}}.emoji-picker{display:flex;flex-direction:column;gap:8px}.emoji-picker-label{font-weight:600;font-size:.9rem;color:var(--pink-700)}.emoji-selected{display:flex;flex-wrap:wrap;gap:6px;min-height:36px;padding:8px;background:var(--pink-50);border-radius:8px;border:1px solid var(--pink-200)}.emoji-placeholder{color:var(--pink-300);font-size:.85rem}.emoji-chip{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;background:#fff;border-radius:20px;font-size:1.1rem;cursor:pointer;border:1px solid var(--pink-200);transition:background .15s}.emoji-chip:hover{background:var(--pink-100)}.emoji-categories{display:flex;flex-wrap:wrap;gap:4px}.emoji-cat-btn{padding:4px 10px;border:1px solid var(--pink-200);border-radius:16px;background:#fff;font-family:var(--font-body);font-size:.75rem;font-weight:600;color:var(--pink-600);cursor:pointer;transition:all .15s}.emoji-cat-btn.active{background:var(--pink-500);color:#fff;border-color:var(--pink-500)}.emoji-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.emoji-grid-item{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:24px;border:2px solid transparent;border-radius:8px;background:#fff;cursor:pointer;transition:all .15s}.emoji-grid-item:hover{background:var(--pink-50);border-color:var(--pink-200)}.emoji-grid-item.picked{background:var(--pink-100);border-color:var(--pink-400)}.image-picker{display:flex;flex-direction:column;gap:8px}.image-picker-label{font-weight:600;font-size:.9rem;color:var(--pink-700)}.image-picker-thumbs{display:flex;flex-wrap:wrap;gap:8px;min-height:64px;padding:8px;background:var(--pink-50);border-radius:8px;border:1px solid var(--pink-200);align-items:center}.image-picker-placeholder{color:var(--pink-300);font-size:.85rem}.image-picker-thumb{position:relative;width:56px;height:56px;border-radius:8px;overflow:hidden;border:2px solid var(--pink-200)}.image-picker-thumb img{width:100%;height:100%;object-fit:cover;display:block}.image-picker-remove{position:absolute;top:-1px;right:-1px;width:20px;height:20px;border:none;border-radius:0 6px;background:var(--pink-500);color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.image-picker-remove:hover{background:var(--pink-700)}.image-picker-upload-btn{padding:8px 16px;border:1px solid var(--pink-300);border-radius:8px;background:#fff;font-family:var(--font-body);font-size:.85rem;font-weight:600;color:var(--pink-600);cursor:pointer;transition:all .15s;align-self:flex-start}.image-picker-upload-btn:hover:not(:disabled){background:var(--pink-50);border-color:var(--pink-400)}.image-picker-upload-btn:disabled{opacity:.5;cursor:not-allowed}.preview-panel{display:flex;flex-direction:column;gap:8px;flex-shrink:0;align-self:center}.preview-toggle{display:none;padding:8px;border:1px solid var(--pink-200);border-radius:8px;background:#fff;font-family:var(--font-body);font-weight:600;font-size:.85rem;color:var(--pink-600);cursor:pointer}.preview-tabs{display:flex;gap:4px}.preview-tab{flex:1;padding:6px 12px;border:1px solid var(--pink-200);border-radius:8px;background:#fff;font-family:var(--font-body);font-size:.75rem;font-weight:600;color:var(--pink-400);cursor:pointer;transition:all .15s}.preview-tab.active{background:var(--pink-500);color:#fff;border-color:var(--pink-500)}.preview-phone{width:320px;height:568px;border-radius:32px;border:4px solid #333;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 12%,white),color-mix(in srgb,var(--primary) 25%,white),color-mix(in srgb,var(--primary) 12%,white));position:relative;box-shadow:0 8px 32px #00000026}.preview-viewport{width:640px;height:1136px;transform:scale(.5);transform-origin:top left;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}@media (max-width: 900px){.preview-toggle{display:block}.preview-panel.collapsed .preview-tabs,.preview-panel.collapsed .preview-phone{display:none}.preview-phone{width:100%;height:400px;border-radius:16px}.preview-viewport{width:200%;height:200%;transform:scale(.5)}}.creator-layout{display:flex;gap:24px;width:100%;height:100%;max-width:960px;margin:0 auto;padding:16px;justify-content:center;overflow:hidden}.creator-editor{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0;max-width:480px;overflow:hidden;background:#fff;border-radius:20px;padding:24px;box-shadow:0 8px 32px #ec48991f}.creator-header{text-align:center;flex-shrink:0}.creator-title{font-family:var(--font-heading);font-size:clamp(1.4rem,3vw,2rem);color:var(--pink-600)}.creator-subtitle{font-size:.85rem;color:var(--pink-400)}.creator-step-content{flex:1;overflow-y:auto;padding-right:8px}.creator-step{display:flex;flex-direction:column;gap:16px}.step-title{font-family:var(--font-heading);font-size:1.3rem;color:var(--pink-600)}.step-description{font-size:.9rem;color:var(--pink-500)}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-weight:700;font-size:.85rem;color:var(--pink-700)}.form-input{padding:10px 14px;border:2px solid var(--pink-200);border-radius:10px;font-family:var(--font-body);font-size:.9rem;font-weight:500;color:var(--pink-700);background:#fff;transition:border-color .15s;outline:none}.form-input:focus{border-color:var(--pink-400)}.form-hint{font-size:.75rem;color:var(--pink-400)}.form-hint code{background:var(--pink-50);padding:1px 6px;border-radius:4px;font-size:.75rem}.mode-toggle{display:inline-flex;border:2px solid var(--pink-200);border-radius:10px;overflow:hidden}.mode-toggle-btn{padding:8px 20px;border:none;background:#fff;font-family:var(--font-body);font-size:.85rem;font-weight:600;color:var(--pink-500);cursor:pointer;transition:all .15s}.mode-toggle-btn+.mode-toggle-btn{border-left:2px solid var(--pink-200)}.mode-toggle-btn.active{background:var(--pink-500);color:#fff}.color-picker-row{display:flex;align-items:center;gap:12px}.color-picker-row input[type=color]{width:48px;height:48px;border:2px solid var(--pink-200);border-radius:10px;cursor:pointer;padding:2px}.color-value{font-family:monospace;font-size:.9rem;color:var(--pink-600)}.no-texts-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}.no-text-row{display:flex;align-items:center;gap:6px}.no-text-index{font-size:.75rem;color:var(--pink-400);width:24px;text-align:right;flex-shrink:0}.no-text-input{flex:1;padding:6px 10px;font-size:.85rem}.no-text-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--pink-200);border-radius:6px;background:#fff;font-size:.85rem;cursor:pointer;color:var(--pink-500);flex-shrink:0}.no-text-btn:hover{background:var(--pink-50)}.no-text-btn:disabled{opacity:.3;cursor:default}.no-text-remove{color:var(--red-500)}.add-no-text-btn{padding:8px;border:2px dashed var(--pink-200);border-radius:8px;background:transparent;font-family:var(--font-body);font-size:.85rem;font-weight:600;color:var(--pink-400);cursor:pointer;transition:all .15s}.add-no-text-btn:hover{border-color:var(--pink-400);color:var(--pink-600)}.share-url-box{display:flex;gap:8px}.share-url-input{flex:1;font-size:.8rem}.copy-btn{padding:10px 20px;background:linear-gradient(135deg,var(--pink-500),var(--pink-600));color:#fff;border:none;border-radius:10px;font-family:var(--font-body);font-size:.85rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .15s,box-shadow .15s}.copy-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px #ec489966}.creator-nav-buttons{display:flex;justify-content:space-between;gap:12px;flex-shrink:0}.nav-btn{padding:10px 24px;border-radius:10px;font-family:var(--font-body);font-size:.9rem;font-weight:700;cursor:pointer;transition:all .15s}.nav-btn-prev{background:#fff;color:var(--pink-600);border:2px solid var(--pink-200)}.nav-btn-prev:hover{border-color:var(--pink-400)}.nav-btn-next{background:linear-gradient(135deg,var(--pink-500),var(--pink-600));color:#fff;border:none;margin-left:auto}.nav-btn-next:hover{transform:translateY(-1px);box-shadow:0 4px 16px #ec489966}@media (max-width: 900px){.creator-layout{flex-direction:column;align-items:center;overflow-y:auto}.creator-editor{max-width:100%}}:root{--primary: #ec4899;--accent: #ef4444;--primary-light: color-mix(in srgb, var(--primary) 30%, white);--primary-dark: color-mix(in srgb, var(--primary) 80%, black);--pink-50: color-mix(in srgb, var(--primary) 5%, white);--pink-100: color-mix(in srgb, var(--primary) 12%, white);--pink-200: color-mix(in srgb, var(--primary) 25%, white);--pink-300: color-mix(in srgb, var(--primary) 40%, white);--pink-400: color-mix(in srgb, var(--primary) 60%, white);--pink-500: var(--primary);--pink-600: color-mix(in srgb, var(--primary) 85%, black);--pink-700: color-mix(in srgb, var(--primary) 65%, black);--red-500: var(--accent);--red-600: color-mix(in srgb, var(--accent) 85%, black);--font-heading: "Pacifico", cursive;--font-body: "Quicksand", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%}html,body{overflow:hidden}@keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}body{font-family:var(--font-body);font-weight:500;color:var(--pink-700);background:linear-gradient(135deg,var(--pink-100) 0%,var(--pink-200) 50%,var(--pink-100) 100%);min-height:100dvh}#root{display:flex;align-items:center;justify-content:center}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-6px)}20%,40%,60%,80%{transform:translate(6px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.fade-in{animation:fadeIn .6s ease-out both}.shake{animation:shake .5s ease-in-out}
