.frame-selector{margin-bottom:var(--space-lg)}.section-title{font-size:var(--font-size-lg);font-weight:700;display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs)}.section-icon{font-size:var(--font-size-xl)}.section-description{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-lg)}.frame-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:var(--space-md)}.frame-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-md);background:var(--glass-bg);border:2px solid transparent;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-normal);animation:fadeInScale var(--transition-slow) ease-out both;position:relative;overflow:hidden;font-family:inherit;color:inherit}.frame-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,transparent 0%,rgba(124,92,252,.05) 100%);opacity:0;transition:opacity var(--transition-normal)}.frame-card:hover:before,.frame-card.hovered:before{opacity:1}.frame-card:hover,.frame-card.hovered{border-color:var(--color-border-active);transform:translateY(-2px);box-shadow:var(--shadow-md)}.frame-card.selected{border-color:var(--color-primary);background:#7c5cfc1a;box-shadow:var(--shadow-glow)}.frame-card:focus-visible{outline:2px solid var(--color-primary-light);outline-offset:2px}.frame-thumbnail-wrapper{width:100%;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;position:relative;background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center}.frame-thumbnail-wrapper.round{border-radius:50%}.frame-thumbnail{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-normal)}.frame-card:hover .frame-thumbnail{transform:scale(1.05)}.frame-check{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;background:var(--color-primary);display:flex;align-items:center;justify-content:center;color:#fff;animation:fadeInScale .3s ease-out;box-shadow:0 2px 8px #7c5cfc80}.frame-info{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%}.frame-label{font-size:var(--font-size-xs);font-weight:600;text-align:center;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.frame-shape-badge{font-size:10px;color:var(--color-text-muted);letter-spacing:.02em}.frame-card-skeleton{aspect-ratio:.85;min-height:160px}.frame-error{text-align:center;padding:var(--space-xl)}.error-icon{font-size:2rem;display:block;margin-bottom:var(--space-sm)}.frame-error p{color:var(--color-text-secondary);font-size:var(--font-size-sm)}@media(max-width:360px){.frame-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.frame-card{padding:var(--space-sm)}}.image-uploader{margin-bottom:var(--space-lg)}.upload-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl) var(--space-lg);border:2px dashed var(--color-border);cursor:pointer;transition:all var(--transition-normal);text-align:center;position:relative;overflow:hidden}.upload-dropzone:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,transparent,rgba(124,92,252,.03));opacity:0;transition:opacity var(--transition-normal)}.upload-dropzone:hover:before,.upload-dropzone.dragging:before{opacity:1}.upload-dropzone:hover{border-color:var(--color-border-active);transform:translateY(-1px)}.upload-dropzone.dragging{border-color:var(--color-primary);background:#7c5cfc14;box-shadow:var(--shadow-glow)}.upload-dropzone:focus-visible{outline:2px solid var(--color-primary-light);outline-offset:2px}.upload-input-hidden{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.upload-icon-wrapper{width:72px;height:72px;border-radius:50%;background:#7c5cfc1a;display:flex;align-items:center;justify-content:center;color:var(--color-primary-light);transition:all var(--transition-normal)}.upload-dropzone:hover .upload-icon-wrapper{background:#7c5cfc26;transform:scale(1.05)}.upload-dropzone.dragging .upload-icon-wrapper{background:#7c5cfc33;transform:scale(1.1);animation:glow-pulse 1.5s ease-in-out infinite}.upload-text{font-size:var(--font-size-sm);color:var(--color-text-primary)}.upload-text strong{color:var(--color-primary-light)}.upload-hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.upload-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-lg) 0}.upload-divider:before,.upload-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.upload-divider span{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.upload-webcam-btn{width:100%}.webcam-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.webcam-video{width:100%;max-width:400px;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-lg);background:var(--color-bg-secondary);transform:scaleX(-1)}.webcam-actions{display:flex;gap:var(--space-md)}.upload-error{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);background:#f871711a;border:1px solid rgba(248,113,113,.3);border-radius:var(--radius-md);color:var(--color-error);font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--space-sm)}.crop-canvas-section{margin-bottom:var(--space-lg)}.crop-canvas-wrapper{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.canvas-container{width:100%;max-width:400px;aspect-ratio:1;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);position:relative}.canvas-container.round{border-radius:50%}.crop-canvas{width:100%;height:100%;cursor:grab;display:block;touch-action:none}.crop-canvas.grabbing{cursor:grabbing}.zoom-controls{display:flex;align-items:center;gap:var(--space-md);width:100%;max-width:350px}.zoom-label{color:var(--color-text-muted);display:flex;align-items:center;flex-shrink:0}.zoom-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--color-border);border-radius:var(--radius-full);outline:none;cursor:pointer}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--color-primary);cursor:pointer;box-shadow:0 0 8px var(--color-primary-glow);transition:all var(--transition-fast)}.zoom-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 0 16px var(--color-primary-glow)}.zoom-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:none;box-shadow:0 0 8px var(--color-primary-glow)}.crop-actions{display:flex;gap:var(--space-md);width:100%;justify-content:space-between}.crop-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-3xl)}.crop-loading p{color:var(--color-text-secondary);font-size:var(--font-size-sm)}@media(max-width:480px){.canvas-container{max-width:300px}.crop-actions{flex-direction:column-reverse}.crop-actions .btn{width:100%}}.preview-export{margin-bottom:var(--space-lg)}.preview-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.preview-image-wrapper{width:100%;max-width:350px;aspect-ratio:1;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);animation:fadeInScale .5s ease-out;position:relative}.preview-image-wrapper.round{border-radius:50%}.preview-image-wrapper:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 1px #ffffff1a;pointer-events:none}.preview-image{width:100%;height:100%;object-fit:cover;display:block}.export-actions{display:flex;gap:var(--space-md);width:100%}.export-btn{flex:1}.export-btn.success{background:linear-gradient(135deg,var(--color-success),#22b47f)!important;color:#fff!important;box-shadow:0 0 20px #34d3994d!important}.preview-secondary-actions{display:flex;gap:var(--space-md);width:100%}.preview-secondary-actions .btn{flex:1}.preview-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-3xl)}.preview-loading p{color:var(--color-text-secondary);font-size:var(--font-size-sm)}@media(max-width:480px){.export-actions,.preview-secondary-actions{flex-direction:column}.preview-image-wrapper{max-width:280px}}:root{--color-bg-primary: #0a0a1a;--color-bg-secondary: #12122a;--color-bg-card: rgba(26, 26, 58, .6);--color-bg-card-hover: rgba(36, 36, 78, .8);--color-bg-glass: rgba(255, 255, 255, .04);--color-bg-glass-hover: rgba(255, 255, 255, .08);--color-primary: #7c5cfc;--color-primary-light: #9d85fd;--color-primary-dark: #5a3de8;--color-primary-glow: rgba(124, 92, 252, .3);--color-accent: #00d4ff;--color-accent-glow: rgba(0, 212, 255, .25);--color-success: #34d399;--color-warning: #fbbf24;--color-error: #f87171;--color-text-primary: #f0f0ff;--color-text-secondary: #a0a0c0;--color-text-muted: #6b6b8a;--color-border: rgba(255, 255, 255, .08);--color-border-active: rgba(124, 92, 252, .5);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .2);--shadow-md: 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--shadow-glow: 0 0 20px var(--color-primary-glow);--shadow-glow-accent: 0 0 20px var(--color-accent-glow);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--glass-blur: blur(16px);--glass-bg: rgba(255, 255, 255, .04);--glass-border: 1px solid rgba(255, 255, 255, .08)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden}body.embed-mode{background:transparent;min-height:auto}#root{min-height:100vh;display:flex;flex-direction:column}body.embed-mode #root{min-height:auto}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-bg-primary)}::-webkit-scrollbar-thumb{background:var(--color-text-muted);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;letter-spacing:-.02em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:none;border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all var(--transition-normal);text-decoration:none;white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;position:relative;overflow:hidden}.btn:focus-visible{outline:2px solid var(--color-primary-light);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff;box-shadow:var(--shadow-glow)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 0 30px var(--color-primary-glow);filter:brightness(1.1)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--glass-bg);color:var(--color-text-primary);border:var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.btn-secondary:hover{background:var(--color-bg-glass-hover);border-color:var(--color-border-active)}.btn-accent{background:linear-gradient(135deg,var(--color-accent),#0099cc);color:#0a0a1a;font-weight:700;box-shadow:var(--shadow-glow-accent)}.btn-accent:hover{transform:translateY(-1px);box-shadow:0 0 30px var(--color-accent-glow);filter:brightness(1.1)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-md);border-radius:var(--radius-lg)}.btn-icon{width:40px;height:40px;padding:0;border-radius:var(--radius-md)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}.glass-card{background:var(--glass-bg);border:var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);padding:var(--space-lg)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes glow-pulse{0%,to{box-shadow:0 0 15px var(--color-primary-glow)}50%{box-shadow:0 0 30px var(--color-primary-glow),0 0 60px #7c5cfc1a}}.animate-fade-in{animation:fadeIn var(--transition-slow) ease-out}.animate-fade-in-scale{animation:fadeInScale var(--transition-slow) ease-out}.animate-slide-up{animation:slideUp var(--transition-slow) ease-out}.step-indicator{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) 0}.step-dot{width:10px;height:10px;border-radius:var(--radius-full);background:var(--color-text-muted);transition:all var(--transition-normal);cursor:pointer}.step-dot.active{background:var(--color-primary);box-shadow:0 0 10px var(--color-primary-glow);transform:scale(1.3)}.step-dot.completed{background:var(--color-success)}.step-connector{width:40px;height:2px;background:var(--color-text-muted);transition:background var(--transition-normal)}.step-connector.active{background:linear-gradient(90deg,var(--color-success),var(--color-primary))}.spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-lg{width:48px;height:48px;border-width:4px}.skeleton{background:linear-gradient(90deg,var(--color-bg-card) 25%,var(--color-bg-card-hover) 50%,var(--color-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.text-center{text-align:center}.text-muted{color:var(--color-text-secondary)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.app-container{width:100%;max-width:520px;margin:0 auto;padding:var(--space-lg);min-height:100vh;display:flex;flex-direction:column}body.embed-mode .app-container{min-height:auto;padding:var(--space-md)}.app-header{text-align:center;padding:var(--space-xl) 0 var(--space-lg);animation:fadeIn .6s ease-out}body.embed-mode .app-header{padding:var(--space-md) 0 var(--space-sm)}.app-header h1{font-size:var(--font-size-2xl);background:linear-gradient(135deg,var(--color-text-primary),var(--color-primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}body.embed-mode .app-header h1{font-size:var(--font-size-xl)}.app-header p{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-top:var(--space-xs)}.app-content{flex:1;display:flex;flex-direction:column}.bg-decoration{position:fixed;pointer-events:none;z-index:-1}.bg-orb-1{top:-100px;right:-100px;width:400px;height:400px;background:radial-gradient(circle,var(--color-primary-glow) 0%,transparent 70%);border-radius:50%;filter:blur(60px)}.bg-orb-2{bottom:-150px;left:-150px;width:500px;height:500px;background:radial-gradient(circle,var(--color-accent-glow) 0%,transparent 70%);border-radius:50%;filter:blur(80px)}body.embed-mode .bg-decoration{display:none}@media(max-width:480px){.app-container{padding:var(--space-md)}.app-header h1{font-size:var(--font-size-xl)}.btn-lg{padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-sm)}}
