:root{--fs-bg:#1c1c1e;--fs-bg-elev:#2c2c2e;--fs-fg:#f4f4f5;--fs-fg-muted:#a1a1aa;--fs-accent:#ff7a1a;--fs-border:#ffffff14;--fs-safe-top:env(safe-area-inset-top,0px);--fs-safe-bottom:env(safe-area-inset-bottom,0px);--fs-safe-left:env(safe-area-inset-left,0px);--fs-safe-right:env(safe-area-inset-right,0px);--fs-topbar-h:52px;--fs-tabbar-h:64px}*{box-sizing:border-box}html,body,#root{background:var(--fs-bg);height:100%;color:var(--fs-fg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,system-ui,sans-serif;overflow:hidden}body{-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}.fs-app{background:var(--fs-bg);flex-direction:column;height:100dvh;display:flex}.fs-topbar{padding:calc(var(--fs-safe-top) + 8px) 16px 8px;background:var(--fs-bg);border-bottom:1px solid var(--fs-border);min-height:calc(var(--fs-topbar-h) + var(--fs-safe-top));flex:none;align-items:center;gap:12px;display:flex}.fs-topbar-logo{object-fit:contain;opacity:.95;width:auto;height:26px}.fs-topbar-title{letter-spacing:.04em;text-transform:uppercase;color:var(--fs-fg-muted);margin-left:auto;font-size:14px;font-weight:600}.fs-main{flex:auto;position:relative;overflow:hidden}.fs-screen{-webkit-overflow-scrolling:touch;background:var(--fs-bg);position:absolute;inset:0;overflow:auto}.fs-screen[hidden]{display:none}.fs-tabbar{background:var(--fs-bg-elev);border-top:1px solid var(--fs-border);padding-bottom:var(--fs-safe-bottom);flex:none;grid-template-columns:repeat(3,1fr);gap:0;display:grid}.fs-tabbar-item{appearance:none;color:var(--fs-fg-muted);font:inherit;cursor:pointer;min-height:var(--fs-tabbar-h);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:10px 4px 8px;transition:color .12s;display:flex}.fs-tabbar-item:active{background:#ffffff0a}.fs-tabbar-item.is-active{color:var(--fs-accent)}.fs-tabbar-icon{justify-content:center;align-items:center;height:22px;font-size:22px;line-height:1;display:inline-flex}.fs-tabbar-icon-img{opacity:.85;width:auto;height:20px;display:block}.fs-tabbar-item.is-active .fs-tabbar-icon-img{opacity:1;filter:brightness(0)saturate()invert(58%)sepia(96%)saturate(2400%)hue-rotate(360deg)brightness(102%)contrast(101%)}.fs-tabbar-label{letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.fs-install-banner{left:12px;right:12px;bottom:calc(var(--fs-tabbar-h) + var(--fs-safe-bottom) + 12px);z-index:50;background:var(--fs-bg-elev);border:1px solid var(--fs-border);border-radius:14px;align-items:center;gap:12px;padding:12px 14px;font-size:13px;line-height:1.4;animation:.28s fs-install-pop;display:flex;position:fixed;box-shadow:0 14px 40px #00000080}@keyframes fs-install-pop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fs-install-copy{color:var(--fs-fg);flex-direction:column;flex:auto;gap:2px;display:flex}.fs-install-copy strong{font-size:14px}.fs-install-copy em{color:var(--fs-fg);font-style:normal;font-weight:600}.fs-install-share{color:var(--fs-accent);margin:0 1px;font-weight:700;display:inline-block}.fs-install-cta{appearance:none;background:var(--fs-accent);color:#0c0c0e;font:inherit;cursor:pointer;border:0;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600}.fs-install-close{appearance:none;color:var(--fs-fg-muted);cursor:pointer;background:0 0;border:0;padding:4px 8px;font-size:20px;line-height:1}.fs-lang{border:1px solid var(--fs-border);background:#ffffff0f;border-radius:999px;margin-left:8px;padding:2px;display:inline-flex}.fs-lang-btn{appearance:none;color:var(--fs-fg-muted);font:inherit;letter-spacing:.04em;cursor:pointer;background:0 0;border:0;border-radius:999px;min-width:32px;padding:4px 10px;font-size:12px;font-weight:600;line-height:1}.fs-lang-btn.is-active{background:var(--fs-fg);color:var(--fs-bg)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#1c1c1e;--panel:#2c2c2e;--panel-hover:#3a3a3c;--ink:#f4f4f5;--muted:#a1a1aa;--faint:#6f6f78;--border:#ffffff14;--border-strong:#ffffff29;--accent:#ff7a1a;--accent-light:#ff7a1a24;--skeleton-base:#2c2c2e;--skeleton-shine:#3a3a3c;--radius:16px;--radius-sm:10px;--radius-xs:6px;--shadow-card:0 2px 12px #00000073;--shadow-hover:0 8px 28px #0000008c;--shadow-modal:0 24px 64px #000000b3;--font:-apple-system, BlinkMacSystemFont, "Avenir Next", "Helvetica Neue", system-ui, sans-serif;--transition:.22s ease}html,body{background:var(--bg)}body{font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.gallery-root{flex-direction:column;max-width:1400px;margin:0 auto;padding:0 24px;display:flex;position:relative}.gallery-root.is-compact{max-height:2000px;overflow-y:auto}.gallery-root.is-embedded{padding:0 16px}.gallery-loader{justify-content:center;padding-top:clamp(32px,8vh,96px);display:flex}.loader-pill{background:var(--panel);box-shadow:var(--shadow-card);color:var(--muted);border-radius:999px;align-items:center;gap:12px;padding:14px 20px;display:inline-flex}.loader-dot{background:var(--muted);border-radius:999px;width:12px;height:12px;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 0 #6b6b6b4d}50%{transform:scale(1.15);box-shadow:0 0 0 10px #6b6b6b00}}.gallery-error{text-align:center;color:var(--muted);padding:80px 24px}.gallery-error h2{margin-bottom:8px;font-size:20px}.browse{flex-direction:column;flex:1;min-height:0;display:flex}.browse-header{flex-shrink:0;padding-top:28px}.browse-header-top{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:20px;display:flex}.browse-hero{flex:1;min-width:0}.browse-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:600}.browse-title{letter-spacing:-.02em;margin-bottom:6px;font-size:clamp(22px,3vw,32px);font-weight:700;line-height:1.15}.browse-subtitle{color:var(--muted);max-width:440px;font-size:14px;line-height:1.5}.browse-search-wrap{flex-shrink:0;width:clamp(200px,30vw,340px);padding-top:8px}.browse-search{border-radius:var(--radius-sm);background:var(--panel);border:1px solid var(--border);transition:border-color var(--transition), box-shadow var(--transition);align-items:center;gap:8px;padding:10px 14px;display:flex}.browse-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.search-icon{color:var(--faint);flex-shrink:0;display:flex}.browse-search input{font:inherit;width:100%;color:var(--ink);background:0 0;border:none;outline:none;font-size:14px}.browse-search input::placeholder{color:var(--faint)}.browse-chips{align-items:center;gap:12px;margin-bottom:16px;display:flex}.browse-chiprow{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex:1;gap:8px;padding:2px 0;display:flex;overflow-x:auto}.browse-chiprow::-webkit-scrollbar{display:none}.chip{background:var(--panel);border:1px solid var(--border);transition:all var(--transition);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:7px 16px;font-size:13px;font-weight:500}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.hue-picker-section{margin-bottom:16px}.hue-picker-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.hue-picker-label{color:var(--muted);font-size:13px;font-weight:600}.hue-bar{border-radius:var(--radius-xs);cursor:crosshair;touch-action:none;background:linear-gradient(#00000073 0%,#0000 35% 65%,#000000d9 100%),linear-gradient(90deg,#888 0% 14%,#ff3f33 14%,#ffb648 28%,#f2eb5d 38%,#57dc66 52%,#2fd3cb 62%,#4d8cff 74%,#7d5cff 86%,#ff3f33 100%);height:144px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff0a}.hue-bar-core{border-radius:inherit;display:block;position:absolute;inset:0}.hue-indicator{pointer-events:none;z-index:2;background:#fff;border:2.5px solid #fff;border-radius:999px;width:18px;height:18px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0000004d,inset 0 0 0 1px #0000001a}.browse-summary{color:var(--muted);margin-bottom:16px;font-size:13px}.browse-grid{flex:1;grid-template-columns:repeat(4,1fr);align-content:start;gap:16px;min-height:0;display:grid}.browse-empty{text-align:center;color:var(--muted);grid-column:1/-1;padding:48px 24px}.browse-empty h2{margin-bottom:8px;font-size:18px}.browse-empty p{font-size:14px}.color-card{border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-card);transition:transform var(--transition), box-shadow var(--transition);overflow:hidden}.color-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-3px)}.card-button{text-align:left;flex-direction:column;width:100%;display:flex}.card-media{aspect-ratio:1;background:linear-gradient(135deg, var(--skeleton-base) 0%, #16161a 100%);position:relative;overflow:hidden}.card-media:after{content:"";background:linear-gradient(90deg, var(--skeleton-base) 25%, var(--skeleton-shine) 50%, var(--skeleton-base) 75%);opacity:1;background-size:200% 100%;transition:opacity .3s;animation:1.5s ease-in-out infinite shimmer;position:absolute;inset:0}.card-media.is-loaded:after{opacity:0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.card-cover{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .4s}.card-media.is-loaded .card-cover{opacity:1}.card-hover{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .3s;position:absolute;inset:0}@media (hover:hover){.card-button:hover .card-hover.is-loaded{opacity:1}}.card-copy{padding:12px 14px 14px}.card-family{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:2px;font-size:11px;font-weight:600}.card-title{color:var(--ink);font-size:14px;font-weight:600;line-height:1.3}.browse-pagination,.detail-pagination{flex-shrink:0;justify-content:center;align-items:center;gap:16px;padding:16px 0 20px;display:flex}.pagination-status{color:var(--muted);text-align:center;min-width:100px;font-size:13px}.btn-subtle{border-radius:var(--radius-xs);color:var(--accent);transition:background var(--transition), opacity var(--transition);padding:8px 16px;font-size:13px;font-weight:500}.btn-subtle:hover:not(:disabled){background:var(--accent-light)}.btn-subtle:disabled{opacity:.35;cursor:default}.clear-all{white-space:nowrap;flex-shrink:0}.btn-back{border-radius:var(--radius-xs);color:var(--accent);transition:background var(--transition);align-items:center;gap:6px;margin-bottom:12px;padding:8px 14px 8px 10px;font-size:13px;font-weight:500;display:inline-flex}.btn-back:hover{background:var(--accent-light)}.detail-overlay{z-index:100;-webkit-backdrop-filter:blur(8px);background:#00000073;justify-content:center;align-items:flex-start;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0;overflow-y:auto}.is-embedded .detail-overlay{position:absolute;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.detail-panel{background:var(--panel);border-radius:var(--radius);width:100%;max-width:960px;max-height:1952px;box-shadow:var(--shadow-modal);padding:28px;animation:.25s slideUp;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.detail-top{gap:28px;margin-bottom:24px;display:flex}.detail-copy{flex:1;min-width:0}.detail-family{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:600}.detail-title{letter-spacing:-.01em;margin-bottom:6px;font-size:clamp(22px,3vw,28px);font-weight:700;line-height:1.15}.detail-meta{color:var(--muted);margin-bottom:10px;font-size:13px}.detail-description{color:var(--muted);font-size:14px;line-height:1.6}.detail-cover{aspect-ratio:4/3;border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--skeleton-base) 0%, #16161a 100%);flex-shrink:0;width:clamp(180px,28vw,320px);overflow:hidden}.detail-cover-img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .4s}.detail-cover.is-loaded .detail-cover-img{opacity:1}.detail-examples{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px;display:grid}.example-btn{text-align:left;border-radius:var(--radius-sm);background:var(--bg);width:100%;transition:transform var(--transition), box-shadow var(--transition);flex-direction:column;display:flex;overflow:hidden}.example-btn:hover{box-shadow:var(--shadow-card);transform:translateY(-2px)}.example-media{aspect-ratio:4/3;background:linear-gradient(135deg, var(--skeleton-base) 0%, #16161a 100%);position:relative;overflow:hidden}.example-media:after{content:"";background:linear-gradient(90deg, var(--skeleton-base) 25%, var(--skeleton-shine) 50%, var(--skeleton-base) 75%);background-size:200% 100%;transition:opacity .3s;animation:1.5s ease-in-out infinite shimmer;position:absolute;inset:0}.example-media.is-loaded:after{opacity:0}.example-img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .4s}.example-media.is-loaded .example-img{opacity:1}.example-copy{padding:8px 10px 10px}.example-index{color:var(--faint);margin-bottom:1px;font-size:11px;font-weight:600}.example-caption{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.35;display:-webkit-box;overflow:hidden}.image-viewer{flex-direction:column;height:100%;display:flex}.image-toolbar{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.image-nav{align-items:center;gap:12px;display:flex}.image-stage{border-radius:var(--radius-sm);background:#f0efed;flex:1;justify-content:center;align-items:center;min-height:300px;max-height:600px;margin-bottom:12px;display:flex;overflow:hidden}.focused-img{object-fit:contain;opacity:0;max-width:100%;max-height:100%;transition:opacity .4s}.image-stage.is-loaded .focused-img{opacity:1}.image-caption{color:var(--muted);text-align:center;font-size:13px}@media (width<=1100px){.browse-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=800px){.browse-grid,.detail-examples{grid-template-columns:repeat(2,1fr)}.detail-top{flex-direction:column}.detail-cover{width:100%;max-width:none}.browse-header-top{flex-direction:column;gap:12px}.browse-search-wrap{width:100%}}@media (width<=480px){.gallery-root{padding:0 12px}.browse-header{padding-top:16px}.browse-title{font-size:20px}.browse-subtitle{font-size:13px}.browse-grid{gap:10px}.card-copy{padding:10px 10px 12px}.card-title{font-size:13px}.detail-panel{padding:16px}.detail-examples{grid-template-columns:1fr}}.is-compact .browse-header{padding-top:16px}.is-compact .browse-title{font-size:20px}.is-compact .browse-subtitle{display:none}.is-compact .hue-bar{height:108px}.is-compact .browse-grid{gap:12px}:root{--vis-bg:#0a0a0a;--vis-bg-subtle:#111;--vis-surface:#1a1a1a;--vis-surface-hover:#242424;--vis-surface-active:#2e2e2e;--vis-border:#ffffff14;--vis-border-strong:#ffffff29;--vis-text:#fff;--vis-text-muted:#b0b0b0;--vis-text-dim:#737373;--vis-accent:#f97316;--vis-accent-hover:#ea680c;--vis-accent-text:#000;--vis-radius-sm:8px;--vis-radius-md:12px;--vis-radius-lg:16px;--vis-radius-xl:20px;--vis-transition:.16s ease;--vis-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--vis-font-heading:var(--font-heading,var(--vis-font))}:root[data-vis-theme=light]{--vis-bg:#f5f5f5;--vis-bg-subtle:#eee;--vis-surface:#fff;--vis-surface-hover:#f8f8f8;--vis-surface-active:#efefef;--vis-border:#00000014;--vis-border-strong:#00000029;--vis-text:#111;--vis-text-muted:#555;--vis-text-dim:#888;--vis-accent:#e86000;--vis-accent-hover:#c95500;--vis-accent-text:#fff}*,:before,:after{box-sizing:border-box;margin:0}html{height:100%}body{min-height:100dvh;font-family:var(--vis-font);color:var(--vis-text);background:var(--vis-bg);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}img{max-width:100%;display:block}button,input{font:inherit}button{cursor:pointer}.vis-sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.vis-kicker{letter-spacing:.18em;text-transform:uppercase;color:var(--vis-accent);margin-bottom:4px;font-size:.7rem;font-weight:700;display:block}.vis-hint{color:var(--vis-text-dim);margin-top:8px;font-size:.8rem}.vis-empty{text-align:center;color:var(--vis-text-dim);grid-column:1/-1;padding:32px 16px}.vis-error{border-radius:var(--vis-radius-md);color:#f08080;background:#dc3c3c1f;margin-top:12px;padding:12px 16px;font-size:.88rem}.vis-remaining{text-align:center;color:var(--vis-text-dim);margin-top:12px;font-size:.8rem}.vis-btn{border:1px solid var(--vis-border-strong);background:var(--vis-surface);min-height:44px;color:var(--vis-text);transition:all var(--vis-transition);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.vis-btn:hover:not(:disabled){background:var(--vis-surface-hover)}.vis-btn:disabled{opacity:.4;cursor:not-allowed}.vis-btn-sm{min-height:34px;padding:0 14px;font-size:.8rem}.vis-btn-lg{min-height:52px;padding:0 32px;font-size:1rem}.vis-btn-generate{border-color:var(--vis-accent);background:var(--vis-accent);color:var(--vis-accent-text)}.vis-btn-generate:hover:not(:disabled){background:var(--vis-accent-hover)}.vis-btn-generate:disabled{background:var(--vis-surface);border-color:var(--vis-border);color:var(--vis-text-dim)}.vis-btn-secondary{border-color:var(--vis-border-strong);color:var(--vis-text-muted);background:0 0}.vis-btn-secondary:hover:not(:disabled){background:var(--vis-surface);color:var(--vis-text)}.vis-spinner{border:3px solid var(--vis-border);border-top-color:var(--vis-accent);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite vis-spin}@keyframes vis-spin{to{transform:rotate(360deg)}}.vis-skeleton{background:linear-gradient(90deg, var(--vis-surface) 25%, var(--vis-surface-hover) 50%, var(--vis-surface) 75%);border-radius:var(--vis-radius-md);background-size:200% 100%;min-height:80px;animation:1.5s ease-in-out infinite vis-shimmer}@keyframes vis-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.vis{flex-direction:column;gap:16px;max-width:1200px;min-height:100dvh;margin:0 auto;padding:16px;display:flex}.vis-header{align-items:center;gap:16px;padding:12px 0;display:flex}.vis-logo-link{flex-shrink:0;text-decoration:none;display:inline-flex}.vis-logo{flex-shrink:0;width:clamp(100px,16vw,180px)}.vis-header-copy{flex:1}.vis-title{font:600 clamp(1.3rem, 3vw, 2rem)/1.05 var(--vis-font-heading);letter-spacing:-.04em}.vis-subtitle{color:var(--vis-text-muted);margin-top:2px;font-size:.88rem}.vis-theme-toggle{border:1px solid var(--vis-border-strong);background:var(--vis-surface);width:36px;height:36px;color:var(--vis-text);cursor:pointer;transition:background var(--vis-transition), border-color var(--vis-transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;display:flex}.vis-theme-toggle:hover{background:var(--vis-surface-hover)}.vis-stepper{gap:4px;padding-bottom:8px;display:flex;position:relative}.vis-stepper-track{background:var(--vis-surface);border-radius:2px;height:3px;position:absolute;bottom:0;left:0;right:0}.vis-stepper-fill{background:var(--vis-accent);border-radius:2px;height:100%;transition:width .4s}.vis-step{border-radius:var(--vis-radius-md);color:var(--vis-text-dim);text-align:left;transition:all var(--vis-transition);background:0 0;border:1px solid #0000;flex:1;align-items:center;gap:10px;padding:12px 16px;font-size:.88rem;font-weight:500;display:flex}.vis-step:hover:not(:disabled){background:var(--vis-surface)}.vis-step:disabled{cursor:default;opacity:.35}.vis-step.is-active{background:var(--vis-surface);border-color:var(--vis-border-strong);color:var(--vis-text)}.vis-step.is-done{color:var(--vis-text-muted)}.vis-step-num{background:var(--vis-surface);border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:.78rem;font-weight:700;display:grid}.vis-step.is-active .vis-step-num{background:var(--vis-accent);color:var(--vis-accent-text)}.vis-step.is-done .vis-step-num{color:var(--vis-accent);background:#f973162e}.vis-step-label{font-weight:600}.vis-step-selection{color:var(--vis-text-dim);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-weight:400;display:none;overflow:hidden}@media (width>=640px){.vis-step-selection{display:block}}.vis-main{flex:1;grid-template-columns:1fr;gap:16px;min-height:0;display:grid}@media (width>=900px){.vis-main{grid-template-columns:1fr 240px}}.vis-stage{min-height:0}.vis-sidebar{display:none}@media (width>=900px){.vis-sidebar{flex-direction:column;align-self:start;gap:16px;display:flex;position:sticky;top:16px}}.vis-sidebar-section{border-radius:var(--vis-radius-lg);background:var(--vis-surface);border:1px solid var(--vis-border);padding:14px}.vis-sidebar-label{letter-spacing:.16em;text-transform:uppercase;color:var(--vis-text-dim);margin-bottom:10px;font-size:.68rem;font-weight:700;display:block}.vis-sidebar-thumb-wrap{cursor:pointer;flex-direction:column;gap:6px;display:flex}.vis-sidebar-thumb{aspect-ratio:4/3;object-fit:cover;border-radius:var(--vis-radius-sm);width:100%}.vis-sidebar-thumb-swatch{aspect-ratio:1;object-fit:contain;background:var(--vis-bg);padding:8px}.vis-sidebar-name{font-size:.85rem;font-weight:600}.vis-sidebar-meta{color:var(--vis-text-dim);font-size:.78rem}.vis-sidebar-empty{border:1.5px dashed var(--vis-border-strong);border-radius:var(--vis-radius-sm);width:100%;min-height:60px;color:var(--vis-text-dim);cursor:pointer;transition:all var(--vis-transition);background:0 0;place-items:center;font-size:.85rem;display:grid}.vis-sidebar-empty:hover{border-color:var(--vis-accent);color:var(--vis-text)}.vis-sidebar-generate{width:100%}.vis-sidebar-remaining{text-align:center;color:var(--vis-text-dim);font-size:.75rem}.vis-panel-header{margin-bottom:16px}.vis-panel-title{font:600 clamp(1.4rem, 2.5vw, 1.8rem)/1.1 var(--vis-font-heading);letter-spacing:-.03em}.vis-panel-sub{color:var(--vis-text-muted);margin-top:4px;font-size:.88rem}.vis-source-tabs{gap:6px;margin-bottom:16px;display:flex}.vis-tab{border:1px solid var(--vis-border);min-height:40px;color:var(--vis-text-muted);transition:all var(--vis-transition);background:0 0;border-radius:999px;flex:1;justify-content:center;align-items:center;padding:0 12px;font-size:.85rem;font-weight:600;display:flex}.vis-tab:hover{background:var(--vis-surface)}.vis-tab.is-active{background:var(--vis-surface);border-color:var(--vis-border-strong);color:var(--vis-text)}.vis-presets-toolbar{justify-content:flex-end;margin-bottom:12px;display:flex}.vis-preset-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;display:grid}.vis-preset-card{border-radius:var(--vis-radius-lg);background:var(--vis-surface);color:var(--vis-text);cursor:pointer;transition:all var(--vis-transition);border:2px solid #0000;flex-direction:column;display:flex;overflow:hidden}.vis-preset-card:hover{border-color:var(--vis-border-strong);transform:translateY(-2px)}.vis-preset-card.is-selected{border-color:var(--vis-accent)}.vis-preset-img{aspect-ratio:4/3;object-fit:cover;background-color:var(--vis-surface);width:100%;display:block}.vis-preset-name{white-space:nowrap;text-overflow:ellipsis;padding:8px 10px;font-size:.82rem;font-weight:600;overflow:hidden}.vis-upload-zone{border:2px dashed var(--vis-border-strong);border-radius:var(--vis-radius-xl);background:var(--vis-surface);transition:all var(--vis-transition);overflow:hidden}.vis-upload-zone.is-dragging{border-color:var(--vis-accent);background:#f973160f}.vis-upload-empty{cursor:pointer;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:48px 24px;display:flex}.vis-upload-icon{color:var(--vis-text-dim)}.vis-upload-heading{font-weight:600}.vis-upload-sub{color:var(--vis-text-muted);font-size:.85rem}.vis-upload-hint{color:var(--vis-text-dim);font-size:.78rem}.vis-upload-preview{align-items:center;gap:16px;padding:16px;display:flex}.vis-upload-thumb{aspect-ratio:4/3;object-fit:cover;border-radius:var(--vis-radius-sm);width:120px}.vis-upload-info{flex-direction:column;gap:8px;min-width:0;display:flex}.vis-upload-name{white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:600;overflow:hidden}.vis-camera{flex-direction:column;gap:12px;display:flex}.vis-camera-frame{border-radius:var(--vis-radius-lg);aspect-ratio:4/3;background:#000;position:relative;overflow:hidden}.vis-camera-video{object-fit:cover;width:100%;height:100%}.vis-camera-overlay{color:var(--vis-text);text-align:center;background:#000000b3;place-content:center;place-items:center;gap:12px;padding:16px;display:grid;position:absolute;inset:0}.vis-camera-actions{justify-content:center;display:flex}.vis-camera-result{flex-direction:column;align-items:center;gap:12px;display:flex}.vis-camera-captured{border-radius:var(--vis-radius-lg);width:100%;max-width:400px}.vis-vehicle-chip{border:1px solid var(--vis-border);background:var(--vis-surface);border-radius:var(--vis-radius);cursor:pointer;text-align:left;width:100%;transition:background var(--vis-transition), border-color var(--vis-transition);align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px 10px 10px;display:flex}.vis-vehicle-chip:hover{background:var(--vis-surface-hover);border-color:var(--vis-border-strong)}.vis-vehicle-chip-img{object-fit:cover;border-radius:var(--vis-radius-sm);background:var(--vis-bg);flex-shrink:0;width:64px;height:48px}.vis-vehicle-chip-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.vis-vehicle-chip-label{text-transform:uppercase;letter-spacing:.08em;color:var(--vis-text-muted);font-size:.72rem}.vis-vehicle-chip-name{color:var(--vis-text);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.vis-vehicle-chip-change{color:var(--vis-accent);flex-shrink:0;font-size:.8rem;font-weight:500}.vis-finish-toolbar{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.vis-search-input{border:1px solid var(--vis-border);background:var(--vis-surface);width:100%;min-height:44px;color:var(--vis-text);transition:border-color var(--vis-transition);border-radius:999px;padding:0 16px;font-size:.9rem}.vis-search-input::placeholder{color:var(--vis-text-dim)}.vis-search-input:focus{border-color:var(--vis-accent);outline:none}.vis-family-chips{flex-wrap:wrap;gap:6px;display:flex}.vis-chip{border:1px solid var(--vis-border);min-height:34px;color:var(--vis-text-muted);cursor:pointer;transition:all var(--vis-transition);background:0 0;border-radius:999px;padding:0 14px;font-size:.8rem;font-weight:600}.vis-chip:hover{background:var(--vis-surface)}.vis-chip.is-active{background:var(--vis-text);border-color:var(--vis-text);color:var(--vis-bg)}.vis-color-grid{grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:8px;display:grid}.vis-color-card{border-radius:var(--vis-radius-md);background:var(--vis-surface);color:var(--vis-text);cursor:pointer;text-align:left;transition:all var(--vis-transition);border:2px solid #0000;flex-direction:column;display:flex;overflow:hidden}.vis-color-card:hover{border-color:var(--vis-border-strong)}.vis-color-card.is-selected{border-color:var(--vis-accent)}.vis-color-swatch{aspect-ratio:1;background:var(--vis-bg);overflow:hidden}.vis-color-swatch img{object-fit:contain;width:100%;height:100%}.vis-color-info{flex-direction:column;gap:2px;padding:8px 10px;display:flex}.vis-color-family{letter-spacing:.14em;text-transform:uppercase;color:var(--vis-text-dim);font-size:.65rem;font-weight:700}.vis-color-name{font-size:.82rem;font-weight:600}.vis-color-type{color:var(--vis-text-dim);font-size:.75rem}.vis-preview{flex-direction:column;gap:16px;display:flex}.vis-preview-actions{flex-wrap:wrap;gap:10px;display:flex}.vis-result-frame{aspect-ratio:1;border-radius:var(--vis-radius-xl);background:var(--vis-surface);border:1px solid var(--vis-border);width:100%;max-width:640px;margin:0 auto;position:relative;overflow:hidden}.vis-result-image{object-fit:contain;width:100%;height:100%}.vis-result-loading{text-align:center;place-content:center;place-items:center;gap:12px;display:grid;position:absolute;inset:0}.vis-result-loading-text{font-weight:600}.vis-result-loading-sub{color:var(--vis-text-dim);font-size:.82rem}.vis-result-placeholder{text-align:center;height:100%;color:var(--vis-text-dim);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.vis-result-placeholder-preview{width:100%;height:70%;position:relative}.vis-result-placeholder-car{object-fit:contain;opacity:.5;filter:grayscale(.5);width:100%;height:100%}.vis-result-placeholder-swatch{border-radius:var(--vis-radius-sm);border:2px solid var(--vis-border-strong);background:var(--vis-bg);width:56px;height:56px;position:absolute;bottom:8px;right:8px;overflow:hidden}.vis-result-placeholder-swatch img{object-fit:contain;width:100%;height:100%}.vis-result-swatch{border-radius:var(--vis-radius-sm);border:2px solid var(--vis-border-strong);background:var(--vis-bg);width:72px;height:72px;position:absolute;bottom:12px;left:12px;overflow:hidden;box-shadow:0 6px 18px #0000002e}.vis-result-watermark{opacity:.9;pointer-events:none;filter:drop-shadow(0 2px 6px #00000059);width:clamp(80px,14%,140px);height:auto;position:absolute;bottom:12px;right:12px}.vis-result-swatch img{object-fit:cover;width:100%;height:100%}.vis-gate{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000b3;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.vis-gate-card{border-radius:var(--vis-radius-xl);background:var(--vis-surface);border:1px solid var(--vis-border-strong);flex-direction:column;gap:16px;width:min(480px,100vw - 32px);padding:28px;display:flex}.vis-gate-logo{width:min(240px,60%)}.vis-gate-title{font:600 1.5rem/1.1 var(--vis-font-heading);letter-spacing:-.03em}.vis-gate-copy{color:var(--vis-text-muted);flex-direction:column;gap:8px;font-size:.9rem;line-height:1.55;display:flex}@media (width<=599px){.vis-header{flex-wrap:wrap;align-items:center;row-gap:8px}.vis-logo{width:clamp(200px,44vw,280px)}.vis-theme-toggle{margin-left:auto}.vis-header-copy{flex-basis:100%;order:3}.vis-step-label{font-size:.78rem}.vis-preset-grid,.vis-color-grid{grid-template-columns:repeat(2,1fr)}.vis-result-frame{aspect-ratio:auto;min-height:300px}}@media (width>=600px) and (width<=899px){.vis-preset-grid,.vis-color-grid{grid-template-columns:repeat(3,1fr)}}.vis.vis-mobile{flex-direction:column;min-height:100%;padding:0;display:flex}.vis-main.vis-main-mobile{grid-template-columns:1fr;gap:0;padding:12px 12px 0;display:block}.vis-mobile-actionbar{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));background:linear-gradient(180deg, #0c0c0e00 0%, #0c0c0ef2 35%, var(--fs-bg,#0c0c0e) 100%);z-index:4;flex-direction:column;align-items:stretch;gap:6px;display:flex;position:sticky;bottom:0}.vis-mobile-actionbar .vis-btn-generate{border-radius:12px;width:100%;padding:14px 16px;font-size:16px}.vis-mobile-remaining{text-align:center;color:var(--fs-fg-muted,#a1a1aa);margin:0;font-size:12px}.chat-root{background:var(--fs-bg,#0c0c0e);flex-direction:column;height:100%;display:flex}.chat-scroller{-webkit-overflow-scrolling:touch;flex-direction:column;flex:auto;gap:10px;padding:16px 14px 8px;display:flex;overflow-y:auto}.chat-msg{display:flex}.chat-msg-user{justify-content:flex-end}.chat-msg-assistant{justify-content:flex-start}.chat-bubble{word-wrap:break-word;background:var(--fs-bg-elev,#131317);max-width:min(82%,560px);color:var(--fs-fg,#f4f4f5);border:1px solid var(--fs-border,#ffffff14);border-radius:18px;padding:10px 14px;font-size:15px;line-height:1.45}.chat-msg-user .chat-bubble{background:var(--fs-accent,#ff7a1a);color:#0c0c0e;border-color:#0000;border-bottom-right-radius:6px}.chat-msg-assistant .chat-bubble{border-bottom-left-radius:6px}.chat-line{margin:0}.chat-line+.chat-line{margin-top:6px}.chat-bubble-typing{align-items:center;gap:6px;padding:14px 16px;display:inline-flex}.chat-dot{opacity:.5;background:currentColor;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chat-bounce}.chat-dot:nth-child(2){animation-delay:.15s}.chat-dot:nth-child(3){animation-delay:.3s}@keyframes chat-bounce{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.chat-citations{color:var(--fs-fg-muted,#a1a1aa);border-top:1px solid #ffffff14;margin-top:10px;padding-top:8px;font-size:12px}.chat-citations-label{text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-weight:600;display:block}.chat-citations ul{margin:0;padding-left:16px}.chat-error{color:#fecaca;text-align:center;background:#dc26261f;border:1px solid #dc26264d;border-radius:12px;flex-direction:column;align-self:center;gap:2px;padding:10px 14px;font-size:13px;display:flex}.chat-suggestions{-webkit-overflow-scrolling:touch;flex:none;gap:8px;padding:4px 14px 8px;display:flex;overflow-x:auto}.chat-suggestion{appearance:none;border:1px solid var(--fs-border,#ffffff14);background:var(--fs-bg-elev,#131317);color:var(--fs-fg,#f4f4f5);font:inherit;white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:8px 14px;font-size:13px}.chat-suggestion:active{background:#ffffff0f}.chat-composer{padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px));background:var(--fs-bg-elev,#131317);border-top:1px solid var(--fs-border,#ffffff14);flex:none;align-items:flex-end;gap:8px;display:flex}.chat-input{appearance:none;border:1px solid var(--fs-border,#ffffff14);background:var(--fs-bg,#0c0c0e);color:var(--fs-fg,#f4f4f5);font:inherit;resize:none;border-radius:14px;flex:auto;min-height:40px;max-height:140px;padding:10px 12px;font-size:16px;line-height:1.4}.chat-input:focus{border-color:var(--fs-accent,#ff7a1a);outline:none}.chat-send{appearance:none;background:var(--fs-accent,#ff7a1a);color:#0c0c0e;cursor:pointer;border:0;border-radius:50%;width:40px;height:40px;font-size:18px;font-weight:700}.chat-send:disabled{color:#ffffff4d;cursor:not-allowed;background:#ffffff14}.chat-thinking{color:var(--fs-fg-muted,#a1a1aa);background:#ffffff05;border:1px solid #ffffff0f;border-radius:12px;margin:-2px -4px 8px;font-size:12.5px;overflow:hidden}.chat-thinking-head{appearance:none;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;width:100%;min-height:32px;padding:8px 12px;font-size:12.5px;display:flex}.chat-thinking-head:active{background:#ffffff0a}.chat-thinking-icon{color:var(--fs-accent,#ff7a1a);opacity:.85;flex:none;font-size:11px}.chat-thinking-label{letter-spacing:.02em;color:var(--fs-fg,#f4f4f5);opacity:.85;flex:none;font-weight:600}.chat-thinking-teaser{text-overflow:ellipsis;white-space:nowrap;opacity:.7;flex:auto;min-width:0;font-style:italic;overflow:hidden}.chat-thinking-chevron{opacity:.5;flex:none;margin-left:auto;font-size:11px}.chat-thinking.is-open .chat-thinking-head{border-bottom:1px solid #ffffff0f}.chat-thinking-body{color:var(--fs-fg-muted,#a1a1aa);-webkit-overflow-scrolling:touch;background:#0003;max-height:360px;padding:10px 12px 12px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;font-size:12.5px;line-height:1.55;overflow-y:auto}.chat-thinking-line{margin:0}.chat-thinking-line+.chat-thinking-line{margin-top:6px}.chat-msg-user .chat-thinking{display:none}
