@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulseGlow{0%,to{opacity:.5}50%{opacity:1}}:root{color-scheme:light dark;--font-body: "DM Sans", "Avenir Next", "Segoe UI", sans-serif;--font-display: "Plus Jakarta Sans", "DM Sans", "Avenir Next", sans-serif;--font-mono: "SF Mono", "Fira Code", "Consolas", monospace;--ink: #18181b;--ink-secondary: #3f3f46;--muted: #71717a;--faint: #a1a1aa;--ghost: #d4d4d8;--bg: #f6f5f2;--bg-subtle: linear-gradient(168deg, #f6f5f2 0%, #efeee9 100%);--raised: #ffffff;--inset: #eeede8;--overlay: rgba(255, 255, 255, .78);--border: rgba(0, 0, 0, .07);--border-strong: rgba(0, 0, 0, .12);--border-accent: color-mix(in srgb, var(--accent) 28%, transparent);--accent: #7a5af8;--accent-secondary: #5e5ce6;--accent-surface: #ede8ff;--accent-surface-hover: #e2daff;--accent-glow: color-mix(in srgb, var(--accent) 12%, transparent);--accent-glow-strong: color-mix(in srgb, var(--accent) 22%, transparent);--error: #dc2626;--error-surface: #fef2f2;--success: #16a34a;--success-surface: #f0fdf4;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .1);--shadow-glow: 0 0 24px var(--accent-glow);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}[data-theme=dark]{--ink: #ececec;--ink-secondary: #b0ada6;--muted: #807d76;--faint: #585550;--ghost: #3a3835;--bg: #111113;--bg-subtle: linear-gradient(168deg, #111113 0%, #161618 50%, #131315 100%);--raised: #1c1c1f;--inset: #151517;--overlay: rgba(22, 22, 24, .85);--border: rgba(255, 255, 255, .06);--border-strong: rgba(255, 255, 255, .1);--accent-surface: rgba(122, 90, 248, .1);--accent-surface-hover: rgba(122, 90, 248, .16);--accent-glow: rgba(122, 90, 248, .08);--accent-glow-strong: rgba(122, 90, 248, .16);--error-surface: rgba(220, 38, 38, .1);--success-surface: rgba(22, 163, 74, .1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .6);--shadow-glow: 0 0 32px var(--accent-glow-strong)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ink: #ececec;--ink-secondary: #b0ada6;--muted: #807d76;--faint: #585550;--ghost: #3a3835;--bg: #111113;--bg-subtle: linear-gradient(168deg, #111113 0%, #161618 50%, #131315 100%);--raised: #1c1c1f;--inset: #151517;--overlay: rgba(22, 22, 24, .85);--border: rgba(255, 255, 255, .06);--border-strong: rgba(255, 255, 255, .1);--accent-surface: rgba(122, 90, 248, .1);--accent-surface-hover: rgba(122, 90, 248, .16);--accent-glow: rgba(122, 90, 248, .08);--accent-glow-strong: rgba(122, 90, 248, .16);--error-surface: rgba(220, 38, 38, .1);--success-surface: rgba(22, 163, 74, .1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .6);--shadow-glow: 0 0 32px var(--accent-glow-strong)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);font-size:.92rem;line-height:1.55;color:var(--ink);background:var(--bg-subtle);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-family:var(--font-display);color:var(--ink);letter-spacing:-.025em;line-height:1.15}h2{font-size:1.15rem;font-weight:700}h3{font-size:1rem;font-weight:700}p{margin:0}.app-root{width:min(960px,calc(100% - 2rem));margin:1rem auto 3rem;display:grid;gap:.65rem;animation:fadeInUp .6s var(--ease-out) both}.topbar{display:flex;justify-content:space-between;align-items:center;padding:.6rem .85rem;border-radius:var(--radius-lg);background:var(--overlay);border:1px solid var(--border);-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);box-shadow:var(--shadow-sm)}.brand-wrap{display:flex;align-items:center;gap:.6rem}.brand-title-block{display:grid;gap:.05rem}.brand-title-block h1{font-size:.98rem;font-weight:800;letter-spacing:-.03em}.brand-subtitle{font-size:.72rem;color:var(--muted);font-weight:500;letter-spacing:.01em}.brand-label{background:linear-gradient(135deg,var(--accent),var(--accent-secondary));color:#fff;font-family:var(--font-display);font-size:.58rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;border-radius:6px;padding:.24rem .48rem;box-shadow:0 2px 8px var(--accent-glow-strong)}.topbar-right{display:flex;align-items:center;gap:.4rem}.uid-chip{font-size:.68rem;font-family:var(--font-mono);color:var(--faint);padding:.18rem .42rem;border-radius:6px;border:1px solid var(--border);background:var(--inset)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:1.85rem;height:1.85rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--inset);color:var(--muted);cursor:pointer;transition:all .16s ease;font-size:.92rem;line-height:1;padding:0}.theme-toggle:hover{color:var(--ink);border-color:var(--border-strong);background:var(--raised);box-shadow:var(--shadow-sm)}.nav-row{display:flex;gap:.25rem;padding:.25rem;border-radius:var(--radius-md);background:var(--overlay);border:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.nav-pill{display:inline-flex;align-items:center;gap:.35rem;text-decoration:none;color:var(--muted);border:1px solid transparent;border-radius:var(--radius-sm);padding:.36rem .7rem;font-size:.82rem;font-weight:600;font-family:var(--font-display);transition:all .16s ease}.nav-pill:hover{color:var(--ink-secondary);background:var(--inset)}.nav-pill-dot{width:6px;height:6px;border-radius:50%;background:var(--ghost);transition:all .2s ease}.nav-pill-active{background:var(--accent-surface);color:var(--accent)}.nav-pill-active .nav-pill-dot{background:var(--accent);box-shadow:0 0 6px var(--accent-glow-strong)}.content-shell{display:grid;animation:fadeIn .4s ease 80ms both}.card{background:var(--raised);border-radius:var(--radius-lg);padding:1.25rem;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.page-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap}.page-header-left{display:grid;gap:.15rem}.subtitle{font-size:.82rem;color:var(--muted);line-height:1.4}.quota-badge{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .55rem .3rem .45rem;border-radius:var(--radius-sm);background:var(--inset);border:1px solid var(--border);font-size:.78rem;font-weight:600;color:var(--ink-secondary);text-decoration:none;transition:all .16s ease}.quota-badge:hover{border-color:var(--border-strong);background:var(--raised)}.quota-badge-ring{position:relative;width:22px;height:22px;flex-shrink:0}.quota-badge-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.quota-badge-ring-track{fill:none;stroke:var(--ghost);stroke-width:2.5}.quota-badge-ring-fill{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease-out)}.quota-badge-ring-fill-warning{stroke:#f59e0b}.quota-badge-ring-fill-empty{stroke:var(--error)}.quota-badge-text{white-space:nowrap}.quota-badge-tier{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-left:.1rem}.mode-tabs{display:flex;gap:.25rem;padding:.25rem;border-radius:var(--radius-md);background:var(--inset);border:1px solid var(--border)}.mode-tab{flex:1;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-family:var(--font-display);font-size:.84rem;font-weight:600;padding:.42rem .6rem;cursor:pointer;transition:all .16s ease;text-align:center}.mode-tab:hover{color:var(--ink-secondary)}.mode-tab-active{background:var(--raised);color:var(--ink);border-color:var(--border);box-shadow:var(--shadow-sm)}.upload-zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2.2rem 1.25rem;border:2px dashed var(--ghost);border-radius:var(--radius-lg);background:var(--inset);cursor:pointer;transition:all .2s ease;text-align:center}.upload-zone:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;opacity:0;background:linear-gradient(135deg,var(--accent-glow),var(--accent-glow-strong));transition:opacity .2s ease;z-index:-1}.upload-zone:hover{border-color:var(--accent);background:var(--accent-surface)}.upload-zone:hover:before{opacity:1}.upload-zone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.upload-zone-icon{width:44px;height:44px;border-radius:12px;background:var(--raised);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:var(--muted);box-shadow:var(--shadow-sm);transition:all .2s ease}.upload-zone:hover .upload-zone-icon{color:var(--accent);border-color:var(--border-accent);box-shadow:var(--shadow-glow)}.upload-zone-text{font-size:.84rem;color:var(--ink-secondary);font-weight:600}.upload-zone-hint{font-size:.72rem;color:var(--faint)}.upload-preview-wrap{position:relative;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border)}.upload-preview-wrap img{display:block;width:100%;max-height:240px;object-fit:cover}.upload-preview-remove{position:absolute;top:.5rem;right:.5rem;width:1.8rem;height:1.8rem;border-radius:50%;border:none;background:#0009;color:#fff;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .16s ease;padding:0;line-height:1}.upload-preview-remove:hover{background:#000c}.field-label{font-family:var(--font-display);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.option-group{display:grid;gap:.35rem}.option-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.option-pill{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--raised);color:var(--ink-secondary);font-family:var(--font-body);font-size:.82rem;font-weight:500;padding:.4rem .5rem;text-align:center;cursor:pointer;transition:all .14s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-pill:hover{border-color:var(--border-strong);background:var(--inset)}.option-pill-active{background:var(--accent-surface);color:var(--accent);border-color:var(--border-accent);font-weight:600;box-shadow:0 0 0 1px var(--accent-glow)}.option-pill-active:hover{background:var(--accent-surface-hover)}.workspace{display:grid;gap:1rem}.workspace-card{background:var(--raised);border-radius:var(--radius-lg);padding:1.25rem;border:1px solid var(--border);box-shadow:var(--shadow-sm);display:grid;gap:.75rem}.workspace-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.workspace-sections{display:grid;gap:.65rem}.generate-btn{font-family:var(--font-display);font-size:.95rem;font-weight:700;color:#fff;border:none;border-radius:var(--radius-md);padding:.7rem 1.25rem;cursor:pointer;background:linear-gradient(135deg,var(--accent),var(--accent-secondary));box-shadow:0 2px 12px var(--accent-glow-strong),var(--shadow-sm);transition:all .18s ease;position:relative;overflow:hidden}.generate-btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);background-size:200% 100%;opacity:0;transition:opacity .2s ease}.generate-btn:hover{transform:translateY(-1px);box-shadow:0 4px 20px var(--accent-glow-strong),var(--shadow-md)}.generate-btn:hover:after{opacity:1;animation:shimmer 1.5s ease infinite}.generate-btn:active{transform:translateY(0)}.generate-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.generate-btn:disabled:after{display:none}.results-card{background:var(--raised);border-radius:var(--radius-lg);padding:1.25rem;border:1px solid var(--border);box-shadow:var(--shadow-sm);display:grid;gap:.75rem}.results-header{display:flex;justify-content:space-between;align-items:center}.results-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem 1rem;border:1px dashed var(--ghost);border-radius:var(--radius-md);gap:.4rem;text-align:center}.results-empty-icon{font-size:1.8rem;color:var(--ghost);line-height:1}.results-empty-text{font-size:.82rem;color:var(--faint)}.results-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.result-card{display:grid;gap:.35rem}.result-image-btn{padding:0;margin:0;border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer;overflow:hidden;transition:transform .2s var(--ease-out),box-shadow .2s ease}.result-image-btn:hover{transform:scale(1.02);box-shadow:var(--shadow-md)}.result-image-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-glow-strong)}.result-image-btn img{display:block;width:100%;border-radius:var(--radius-md);border:1px solid var(--border)}.result-actions{display:flex;gap:.3rem}.result-actions button{flex:1}.btn-primary,.btn-secondary,.btn-ghost,.btn-danger{font-family:var(--font-display);font-size:.84rem;font-weight:600;border-radius:var(--radius-sm);padding:.48rem .85rem;cursor:pointer;transition:all .14s ease;line-height:1.35;display:inline-flex;align-items:center;justify-content:center;gap:.35rem}.btn-primary{color:#fff;border:none;background:var(--accent);box-shadow:0 1px 4px var(--accent-glow-strong)}.btn-primary:hover{filter:brightness(1.1);box-shadow:0 4px 12px var(--accent-glow-strong)}.btn-secondary{color:var(--ink-secondary);border:1px solid var(--border);background:var(--raised)}.btn-secondary:hover{border-color:var(--border-strong);background:var(--inset)}.btn-ghost{color:var(--muted);border:1px solid transparent;background:transparent;padding:.38rem .6rem}.btn-ghost:hover{color:var(--ink-secondary);background:var(--inset)}.btn-danger{color:var(--error);border:1px solid color-mix(in srgb,var(--error) 18%,transparent);background:var(--error-surface)}.btn-sm{font-size:.78rem;padding:.32rem .6rem}.btn-primary:disabled,.btn-secondary:disabled,.btn-ghost:disabled,.btn-danger:disabled{opacity:.45;cursor:not-allowed;filter:none}.btn-link{text-decoration:none}.primary-btn{composes:btn-primary}.secondary-btn{composes:btn-secondary}.button-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000d1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:grid;place-items:center;padding:1rem;animation:fadeIn .18s ease}.lightbox-modal{width:min(1000px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);background:var(--raised);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);display:grid;gap:.55rem;padding:.7rem}.lightbox-toolbar{display:flex;justify-content:space-between;align-items:center}.lightbox-counter{font-family:var(--font-display);font-size:.82rem;font-weight:600;color:var(--muted)}.lightbox-actions{display:flex;gap:.3rem}.lightbox-image-wrap{overflow:auto;border-radius:var(--radius-md);border:1px solid var(--border);background:#0a0a0b}.lightbox-image{width:100%;max-height:calc(100vh - 11rem);object-fit:contain;display:block}.lightbox-nav{display:flex;justify-content:space-between;gap:.5rem}.error-text{color:var(--error);font-size:.82rem;font-weight:500}.success-text{color:var(--success);font-size:.82rem;font-weight:500}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--ghost);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}.loading-state{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.84rem;padding:.4rem 0}.divider{height:1px;background:var(--border);border:none;margin:0}.gap-sm{gap:.4rem}.gap-md{gap:.65rem}.gap-lg{gap:1rem}.upgrade-banner{padding:.85rem;border-radius:var(--radius-md);background:var(--accent-surface);border:1px solid var(--border-accent);display:grid;gap:.5rem}.upgrade-banner p{color:var(--ink-secondary);font-size:.85rem}.panel-grid{display:grid;gap:.75rem;grid-template-columns:1.1fr 1fr}.panel{background:var(--raised);border-radius:var(--radius-lg);padding:1.25rem;border:1px solid var(--border);box-shadow:var(--shadow-sm);display:grid;gap:.85rem;align-content:start}.panel-subtitle{font-size:.84rem;color:var(--muted);line-height:1.45}.quota-meter{display:grid;gap:.5rem}.quota-meter-header{display:flex;justify-content:space-between;align-items:baseline}.quota-meter-value{font-family:var(--font-display);font-weight:800;font-size:1.6rem;color:var(--ink);letter-spacing:-.03em}.quota-meter-label{font-size:.78rem;color:var(--muted);font-weight:500}.quota-meter-bar{height:8px;border-radius:4px;background:var(--inset);overflow:hidden;border:1px solid var(--border)}.quota-meter-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent),var(--accent-secondary));transition:width .7s var(--ease-out)}.quota-meter-fill-warning{background:linear-gradient(90deg,#f59e0b,#d97706)}.quota-meter-fill-empty{background:var(--error)}.quota-tier-badge{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:6px;font-family:var(--font-display);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;width:fit-content}.quota-tier-free{background:var(--inset);color:var(--muted);border:1px solid var(--border)}.quota-tier-pro{background:var(--accent-surface);color:var(--accent);border:1px solid var(--border-accent)}.pricing-grid{display:grid;gap:.65rem;grid-template-columns:repeat(2,minmax(0,1fr))}.pricing-card{display:grid;gap:.5rem;border-radius:var(--radius-lg);padding:1.1rem;border:1px solid var(--border);background:var(--inset);transition:all .18s ease}.pricing-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.pricing-quota{font-family:var(--font-display);font-weight:700;color:var(--ink)}.info-card{display:grid;gap:.5rem;padding:.85rem;border-radius:var(--radius-md);background:var(--inset);border:1px solid var(--border)}.info-card p{font-size:.84rem;color:var(--ink-secondary);line-height:1.55}.action-row{display:flex;flex-wrap:wrap;gap:.4rem}.setup-state{width:min(440px,calc(100% - 2rem));margin:5rem auto;background:var(--raised);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:var(--radius-lg);padding:1.75rem;display:grid;gap:.75rem;animation:fadeInUp .6s var(--ease-out) both}.setup-state h1{font-size:1.4rem;font-weight:800}.setup-state p{color:var(--ink-secondary);font-size:.9rem;line-height:1.55}.setup-state code{font-size:.82rem;font-family:var(--font-mono);padding:.12rem .32rem;border-radius:5px;background:var(--inset);border:1px solid var(--border);color:var(--accent)}@media(max-width:768px){.app-root{width:calc(100% - 1.25rem)}.panel-grid,.workspace-row{grid-template-columns:1fr}.option-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.results-grid,.pricing-grid{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:flex-start;gap:.4rem}.topbar-right{align-self:flex-end}.lightbox-modal{width:calc(100vw - 1rem);max-height:calc(100vh - 1rem);padding:.55rem}.lightbox-toolbar{flex-direction:column;align-items:flex-start;gap:.3rem}.lightbox-actions{width:100%}.lightbox-actions button{flex:1}}.primary-btn{font-family:var(--font-display);font-size:.84rem;font-weight:600;color:#fff;border:none;background:var(--accent);border-radius:var(--radius-sm);padding:.48rem .85rem;cursor:pointer;transition:all .14s ease;box-shadow:0 1px 4px var(--accent-glow-strong)}.primary-btn:hover{filter:brightness(1.1)}.primary-btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.secondary-btn{font-family:var(--font-display);font-size:.84rem;font-weight:600;color:var(--ink-secondary);border:1px solid var(--border);background:var(--raised);border-radius:var(--radius-sm);padding:.48rem .85rem;cursor:pointer;transition:all .14s ease}.secondary-btn:hover{border-color:var(--border-strong);background:var(--inset)}.secondary-btn:disabled{opacity:.45;cursor:not-allowed}.danger-btn{font-family:var(--font-display);font-size:.84rem;font-weight:600;color:var(--error);border:1px solid color-mix(in srgb,var(--error) 18%,transparent);background:var(--error-surface);border-radius:var(--radius-sm);padding:.48rem .85rem;cursor:pointer;transition:all .14s ease;width:fit-content}.upgrade-note{padding:.85rem;border-radius:var(--radius-md);background:var(--accent-surface);border:1px solid var(--border-accent);display:grid;gap:.55rem}.upgrade-note p{color:var(--ink-secondary);font-size:.85rem}
