@import"https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700;800;900&display=swap";:root{--bg: #fdf0f7;--panel: rgba(255, 255, 255, .93);--text: #2d1a28;--muted: #7a5872;--line: rgba(120, 80, 110, .16);--primary: #e63c83;--primary-strong: #c9246b;--danger: #b72c43;--r-xl: 24px;--r-lg: 18px;--r-md: 14px;--r-sm: 10px;--shadow-card: 0 8px 24px rgba(100, 40, 80, .1);--shadow-btn: 0 4px 14px rgba(230, 60, 131, .32);--font-brand: "Montserrat", "Avenir Next", "Segoe UI", sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}button{font-family:inherit;cursor:pointer}p,h1,h2,h3{margin:0}body{background:linear-gradient(160deg,#fce4f3,#f5e8ff 40%,#ffe8f0) fixed;color:var(--text);font-family:var(--font-brand);-webkit-font-smoothing:antialiased;overscroll-behavior:none}.screen{width:min(100%,430px);margin:0 auto;padding:16px 14px calc(88px + env(safe-area-inset-bottom));min-height:100dvh}.page{display:flex;flex-direction:column;width:min(100%,430px);margin:0 auto;height:100dvh;overflow:hidden}.bottom-cta{position:fixed;left:50%;transform:translate(-50%);width:min(100%,430px);bottom:0;padding:12px 14px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#fce4f300,#fce4f3f5 30%);z-index:10}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);padding:16px;box-shadow:var(--shadow-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn{border:0;min-height:52px;border-radius:999px;padding:0 22px;font-weight:700;font-size:.95rem;letter-spacing:.01em;transition:opacity .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.97)}.btn-primary{color:#fff;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-strong) 100%);box-shadow:var(--shadow-btn)}.btn-secondary{color:var(--text);background:var(--secondary);border:1.5px solid var(--line)}.btn-danger{color:var(--danger);background:#fff3f5;border:1px solid rgba(183,44,67,.25)}.btn-full{width:100%}.btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.page-header{display:flex;align-items:center;gap:10px;padding:14px 14px 0;flex-shrink:0}.page-header-back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1.5px solid var(--line);border-radius:50%;background:var(--panel);font-size:1rem;color:var(--text);flex-shrink:0;-webkit-tap-highlight-color:transparent}.page-header-text{flex:1}.page-header-title{font-size:1.15rem;font-weight:800;line-height:1.2}.page-header-sub{font-size:.78rem;color:var(--muted);margin-top:2px}.header{padding-bottom:4px}.header h1{margin:0;font-size:1.4rem;font-weight:800}.header p{margin:4px 0 0;color:var(--muted);font-size:.85rem}.text-btn{background:transparent;border:0;color:#8b2f67;font-weight:700;padding:0;margin-bottom:6px;font-size:.85rem}.landing-page{display:flex;flex-direction:column;width:min(100%,430px);margin:0 auto;min-height:100dvh;padding:0 14px;font-family:var(--font-brand)}.landing-hero{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 0 24px;gap:0}.landing-logo-wrap{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.landing-logo-wrap img{width:min(320px,84vw);height:auto;display:block}.landing-title{font-size:1.7rem;font-family:var(--font-brand);font-weight:800;line-height:1.2;letter-spacing:-.04em;background:linear-gradient(135deg,#e63c83,#9b27af);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:10px}.landing-sub{font-size:.92rem;color:var(--muted);line-height:1.6;font-weight:600;letter-spacing:-.01em;margin-bottom:32px}.landing-steps{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);padding:14px 20px;box-shadow:var(--shadow-card)}.landing-install{width:min(100%,360px);margin-top:16px;text-align:center;display:grid;gap:10px}.landing-install-title{font-size:.95rem;font-weight:800}.landing-install-copy{font-size:.82rem;color:var(--muted);line-height:1.5}.step-item{display:flex;flex-direction:column;align-items:center;gap:4px}.step-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e63c831f,#9b27af1a);border-radius:10px;color:var(--primary)}.step-label{font-size:.68rem;font-weight:700;color:var(--muted);letter-spacing:.02em;margin-top:4px}.step-arrow{color:var(--primary);flex-shrink:0;opacity:.6;display:flex;align-items:center}.landing-cta{padding:16px 0 calc(20px + env(safe-area-inset-bottom));flex-shrink:0}.landing-page .btn{font-family:var(--font-brand);font-weight:800;letter-spacing:.01em}.capture-page{display:flex;flex-direction:column;width:min(100%,430px);margin:0 auto;height:100dvh;overflow:hidden;background:#0d0a10}.capture-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;flex-shrink:0;position:relative;z-index:2}.capture-back-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1.5px solid rgba(255,255,255,.2);background:#ffffff1f;color:#fff;font-size:1rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.capture-header-title{position:absolute;left:50%;transform:translate(-50%);font-size:.9rem;font-weight:700;color:#fff;letter-spacing:.04em}.capture-progress-dots{display:flex;gap:6px}.capture-dot{width:16px;height:5px;border-radius:3px;background:#ffffff40;transition:background .22s,width .22s,box-shadow .22s}.capture-dot.done{background:var(--primary);width:22px}.capture-dot.current{background:#fff;width:22px;box-shadow:0 0 0 2px #e63c8373}.capture-camera-wrap{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:16px;background:radial-gradient(circle at top,rgba(230,60,131,.18),transparent 46%),#0d0a10}.capture-stage{position:relative;width:min(100%,390px);aspect-ratio:4 / 5;border-radius:18px;overflow:hidden;background:#160f15;box-shadow:0 20px 60px #00000061}.capture-camera-wrap video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.capture-shot-frame{position:absolute;top:0;right:0;bottom:0;left:0;border:3px solid rgba(255,255,255,.7);border-radius:18px;box-shadow:inset 0 0 0 1px #0000000d;pointer-events:none}.capture-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0000008c;padding:24px}.capture-mask-text{text-align:center;color:#fff}.capture-mask-icon{display:flex;align-items:center;justify-content:center;margin-bottom:12px;opacity:.85}.capture-mask-label{font-size:1rem;font-weight:700;line-height:1.5}.capture-alert{position:absolute;bottom:80px;left:16px;right:16px;background:#b72c43e6;color:#fff;border-radius:var(--r-md);padding:12px 16px;font-size:.85rem;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.countdown-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000061;pointer-events:none}.countdown-number{font-size:7rem;font-weight:900;font-family:var(--font-brand);color:#fff;text-shadow:0 4px 32px rgba(230,60,131,.5),0 2px 12px rgba(0,0,0,.4);line-height:1;animation:countdown-pop .3s ease}@keyframes countdown-pop{0%{transform:scale(1.4);opacity:.5}to{transform:scale(1);opacity:1}}@keyframes flash-capture{0%{opacity:.88}to{opacity:0}}.capture-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;border-radius:18px;pointer-events:none;z-index:10;animation:flash-capture .3s ease-out forwards}.capture-actions{flex-shrink:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px 14px calc(14px + env(safe-area-inset-bottom));background:#0d0a10}.capture-start-btn{grid-column:1 / -1}.edit-screen{display:flex;flex-direction:column;width:min(100%,430px);margin:0 auto;height:100dvh;overflow:hidden;padding:12px 14px calc(12px + env(safe-area-inset-bottom))}.edit-screen .header{flex-shrink:0}.edit-workspace{display:grid;grid-template-columns:minmax(148px,164px) minmax(0,1fr);gap:12px;align-items:stretch;flex:1;min-height:0;margin-top:10px}.edit-preview-wrap{display:flex;justify-content:flex-end;align-items:center;min-height:0}.edit-preview-wrap .preview-stage{aspect-ratio:480 / 1367;width:min(100%,220px);max-height:100%;background:transparent;border:0;box-shadow:0 12px 36px #64285024}.edit-controls{display:flex;flex-direction:column;gap:8px;min-width:0;min-height:0}.edit-tab-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;flex-shrink:0;background:#ffffffb8;border:1px solid var(--line);border-radius:var(--r-lg);padding:5px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.edit-tab-btn{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:46px;border-radius:13px;border:none;background:transparent;transition:background .18s,transform .12s;-webkit-tap-highlight-color:transparent}.edit-tab-btn:active{transform:scale(.94)}.edit-tab-btn.active{background:linear-gradient(135deg,#e73f85,#c6236d);box-shadow:0 4px 12px #e63c8352}.edit-tab-icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);line-height:1}.edit-tab-icon svg{width:18px;height:18px;display:block}.edit-tab-label{font-size:.64rem;font-weight:700;color:var(--muted);letter-spacing:.02em}.edit-tab-btn.active .edit-tab-label,.edit-tab-btn.active .edit-tab-icon{color:#fff}.edit-panel-scroll{min-height:0;flex:1;overflow-y:auto;padding-right:2px}.edit-panel{min-height:100%;margin-top:0!important;padding:12px}.edit-panel-hint{margin:0 0 8px;font-size:.66rem;color:var(--muted);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.edit-actions{flex-shrink:0;margin-top:auto;padding-top:2px}.filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.filter-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;border:2px solid transparent;border-radius:var(--r-md);background:#fff;padding:6px 4px;transition:border-color .15s,box-shadow .15s,transform .1s;-webkit-tap-highlight-color:transparent}.filter-card:active{transform:scale(.93)}.filter-card.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 4px 12px #e63c8333}.filter-swatch{width:100%;aspect-ratio:1 / 1;border-radius:8px;border:1px solid rgba(0,0,0,.05)}.filter-name{font-size:.52rem;font-weight:700;color:var(--muted);text-align:center;line-height:1.2}.filter-card.active .filter-name{color:var(--primary-strong)}.filter-check{position:absolute;top:4px;right:5px;color:var(--primary);display:flex;align-items:center;justify-content:center;width:14px;height:14px;background:#e63c831a;border-radius:50%}.sticker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.sticker-thumb-v2{border:1.5px solid var(--line);border-radius:var(--r-sm);background:#fff;padding:4px;transition:border-color .13s,transform .1s,box-shadow .13s;-webkit-tap-highlight-color:transparent}.sticker-thumb-v2:active{transform:scale(.88);border-color:var(--primary)}.sticker-thumb-v2 img{width:100%;aspect-ratio:1 / 1;object-fit:contain;display:block}.sticker-editor{margin-top:8px;padding:10px;border-radius:var(--r-md);background:linear-gradient(135deg,#fff5f9,#fff0fb);border:1px solid rgba(230,60,131,.15);display:grid;gap:8px}.gesture-hint{font-size:.72rem;line-height:1.45;color:var(--muted)}.sticker-editor-header{display:flex;justify-content:space-between;align-items:center}.sticker-editor-title{font-size:.8rem;font-weight:700;color:var(--muted)}.sticker-delete-btn{border:1px solid rgba(183,44,67,.28);background:#fff3f5;color:var(--danger);font-size:.76rem;font-weight:700;border-radius:999px;padding:5px 12px;min-height:32px}.scale-row{display:flex;align-items:center;gap:8px}.scale-icon{font-size:.85rem;flex-shrink:0}.scale-slider{flex:1;accent-color:var(--primary);cursor:pointer;height:4px}.text-input-wrapper{position:relative}.text-input-v2{width:100%;border-radius:var(--r-md);border:1.5px solid var(--line);padding:13px 52px 13px 14px;font:inherit;font-size:1rem;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}.text-input-v2:focus{border-color:var(--primary);box-shadow:0 0 0 3px #e63c831a}.char-counter{position:absolute;right:13px;top:50%;transform:translateY(-50%);font-size:.7rem;font-weight:700;color:var(--muted);pointer-events:none}.font-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.font-card{display:flex;flex-direction:column;align-items:center;gap:4px;border:2px solid var(--line);border-radius:var(--r-md);background:#fff;padding:10px 6px;transition:border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}.font-card:active{transform:scale(.95)}.font-card.active{border-color:var(--primary);background:#fff5f9;box-shadow:0 0 0 1px var(--primary),0 4px 12px #e63c832e}.font-preview{font-size:1.5rem;line-height:1;color:var(--text)}.font-name{font-size:.62rem;font-weight:700;color:var(--muted);text-align:center;font-family:system-ui,sans-serif}.font-card.active .font-name{color:var(--primary-strong)}.preview-stage{position:relative;width:100%;aspect-ratio:480 / 1367;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);background:#fff;touch-action:none}.preview-image{width:100%;height:100%;object-fit:contain}.sticker{position:absolute;transform:translate(-50%,-50%);touch-action:none}.sticker img{width:100%;display:block}.sticker.selected img{filter:drop-shadow(0 0 8px rgba(230,60,131,.75)) drop-shadow(0 0 2px rgba(230,60,131,.4))}.preview-page{display:flex;flex-direction:column;width:min(100%,430px);margin:0 auto;height:100dvh;overflow:hidden}.preview-image-wrap{flex-shrink:0;padding:0 14px;margin-top:10px}.preview-image-wrap-only{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:8px 18px 12px}.preview-image-shell{border-radius:var(--r-xl);overflow:hidden;border:1px solid var(--line);aspect-ratio:480 / 1367;background:#f0eaf2;box-shadow:0 16px 48px #64285038,0 4px 12px #6428501f;display:flex;align-items:center;justify-content:center;width:min(270px,68vw);max-height:100%;margin:0 auto}.preview-image-shell img{width:100%;height:100%;object-fit:contain}.preview-rendering-text{font-size:.85rem;color:var(--muted);font-weight:600}.preview-bottom-cta{flex-shrink:0;padding:10px 14px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#fce4f300,#fce4f3f7 24%)}.preview-save-toast{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;font-size:.8rem;font-weight:700;color:#1a7a4a;background:#edfbf3;border:1px solid #a3e6c0;border-radius:999px;padding:6px 14px}.btn-save-label{display:inline-flex;align-items:center;gap:8px}.save-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e0a198c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;animation:fade-in .2s ease;padding:16px}.save-sheet{background:#fff;border-radius:28px;width:min(100%,430px);max-height:min(92dvh,760px);padding:16px 18px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:12px;animation:sheet-up .32s cubic-bezier(.34,1.12,.64,1)}.save-sheet-header{display:flex;align-items:center;justify-content:space-between;width:100%}.save-sheet-title{font-size:1.05rem;font-weight:800;color:var(--text);font-family:var(--font-brand)}.save-sheet-x{width:32px;height:32px;border-radius:50%;background:#f3edf5;border:none;color:var(--muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.save-sheet-hint{font-size:.84rem;color:var(--muted);text-align:center;line-height:1.5;width:100%}.save-sheet-hint strong{color:var(--primary)}.save-sheet-img-wrap{position:relative;width:min(100%,240px);max-height:calc(92dvh - 180px)}.save-sheet-img{width:100%;max-height:100%;border-radius:16px;box-shadow:0 8px 28px #64285038;display:block;object-fit:contain;-webkit-touch-callout:default;touch-action:manipulation}.save-sheet-img-wrap:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:22px;border:2.5px solid var(--primary);opacity:0;animation:pulse-ring 2s ease-in-out .5s infinite;pointer-events:none}@keyframes pulse-ring{0%{opacity:0;transform:scale(.95)}40%{opacity:.55}to{opacity:0;transform:scale(1.04)}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.alert{margin:10px 14px 0;border-radius:var(--r-md);border:1px solid rgba(180,42,75,.28);background:#fff3f7;padding:12px 14px;flex-shrink:0}.alert p{font-size:.86rem;color:var(--danger);margin-bottom:8px}.landing-panel{text-align:center;margin-top:22vh}.brand-logo{width:186px;max-width:80%;display:block;margin:0 auto 14px}.camera-panel{padding:12px}.camera-view{position:relative;border-radius:var(--r-md);overflow:hidden;aspect-ratio:4 / 5;border:1px solid var(--line);background:#ddd}.camera-view video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.camera-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#00000047;color:#fff;font-weight:700;text-align:center;padding:14px}.countdown{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0000004d;color:#fff;font-size:4rem;font-weight:900}.progress-label{margin:10px 0 0;text-align:center;font-weight:700}.stack-row{display:grid;grid-template-columns:1fr 1.5fr;gap:10px}.tabs{margin-top:12px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tab-btn{min-height:40px;border-radius:999px;border:1px solid var(--line);background:#fff;font-weight:700}.tab-btn.active{border-color:transparent;color:#fff;background:linear-gradient(135deg,#e73f85,#c6236d)}.chip-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.chip-btn{min-height:42px;border-radius:999px;border:1px solid var(--line);background:#fff;font-weight:700}.chip-btn.active{border-color:#cf3f87;color:#a62059;background:#fff2f7}.control-panel{min-height:134px}.field-label{display:block;margin-bottom:6px;font-weight:700}.text-input,.caption-box{width:100%;border-radius:var(--r-sm);border:1px solid var(--line);padding:10px 12px;font:inherit}.caption-box{resize:vertical;margin-bottom:10px}.ig-shell{border-radius:var(--r-md);border:1px solid var(--line);overflow:hidden;background:#fff;aspect-ratio:4 / 5;display:grid;place-items:center}.ig-shell img{width:100%;height:100%;object-fit:cover}.template-grid{margin-top:16px;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.template-card{position:relative;width:100%;text-align:center;border-radius:var(--r-lg);border:2.5px solid transparent;background:var(--panel);padding:8px 8px 10px;cursor:pointer;box-shadow:var(--shadow-card);transition:border-color .15s,box-shadow .15s,transform .1s;-webkit-tap-highlight-color:transparent}.template-card:active{transform:scale(.97)}.template-card.selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--shadow-card)}.template-preview{position:relative;border-radius:var(--r-sm);overflow:hidden;aspect-ratio:483 / 1376;background:#f0eaf4}.template-preview img{width:100%;height:100%;object-fit:cover;display:block}.template-check-badge{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:var(--primary);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #00000040}.template-name{display:block;margin-top:8px;font-size:.8rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.frame-row{display:flex;flex-direction:row;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.frame-row::-webkit-scrollbar{display:none}.frame-row .template-card{flex:0 0 90px;width:90px}@media(min-width:760px){.screen,.page,.landing-page,.capture-page,.edit-screen,.preview-page,.bottom-cta,.preview-bottom-cta{width:min(100%,480px)}.capture-actions{grid-template-columns:1fr 1fr 1.6fr}}@media(min-width:860px){.edit-screen{width:min(100%,980px)}.edit-workspace{grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px}.edit-preview-wrap{justify-content:flex-start}.edit-preview-wrap .preview-stage{width:min(320px,100%)}.edit-controls{min-width:0}.filter-grid{grid-template-columns:repeat(3,1fr)}.sticker-grid{grid-template-columns:repeat(5,1fr)}}
