:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f0f1e}.app{min-height:100vh;background:linear-gradient(135deg,#0f0f1e,#1a1a2e,#16213e);display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,#141428f2,#1a1a2efa);padding:1rem 2rem;text-align:center;box-shadow:0 4px 20px #00000080;border-bottom:1px solid rgba(99,102,241,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;justify-content:space-between;align-items:center}.header-content{flex:1;text-align:center}.help-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#6366f133;border:1px solid rgba(99,102,241,.4);border-radius:8px;color:#a78bfa;cursor:pointer;font-size:.85rem;font-weight:600;transition:all .2s ease}.help-button:hover{background:#6366f14d;border-color:#8b5cf699;transform:translateY(-2px);box-shadow:0 4px 12px #6366f14d}.app-header h1{background:linear-gradient(135deg,#a78bfa,#6366f1,#4f46e5);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-size:1.75rem;margin-bottom:.25rem;display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:700}.header-icon{color:#a78bfa;filter:drop-shadow(0 0 10px rgba(167,139,250,.5))}.app-header p{color:#94a3b8;font-size:.9rem}.app-container{flex:1;display:flex;gap:.75rem;padding:.75rem;max-height:calc(100vh - 100px);overflow:hidden}.sidebar{background:linear-gradient(135deg,#1e1e32cc,#141423e6);border-radius:16px;padding:1rem;box-shadow:0 8px 32px #0006;overflow-y:auto;border:1px solid rgba(99,102,241,.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.left-sidebar{display:flex;flex-direction:column;justify-content:space-between;width:280px;flex-shrink:0;overflow-y:hidden}.left-sidebar .control-section{margin-bottom:.85rem}.left-sidebar .control-section h3{font-size:.85rem;margin-bottom:.4rem;padding-bottom:.4rem}.left-sidebar .section-hint{font-size:.7rem;margin:0 0 .5rem}.left-sidebar .instructions{padding:.5rem;margin-bottom:.5rem}.left-sidebar .instructions p{margin:.25rem 0;font-size:.75rem;line-height:1.3}.left-sidebar .btn{padding:.55rem 1rem;font-size:.85rem}.left-sidebar .btn-large{padding:.65rem 1.15rem;font-size:.9rem}.left-sidebar .point-count{padding:.5rem;font-size:.8rem}.left-sidebar .editing-indicator,.left-sidebar .preview-indicator{padding:.55rem;margin-bottom:.6rem;font-size:.8rem}.left-sidebar .hint-text{padding:.55rem;font-size:.75rem;margin-top:.6rem}.left-sidebar .error-message{padding:.6rem;margin-top:.6rem;font-size:.8rem}.right-sidebar{width:280px;flex-shrink:0}.canvas-container{flex:1;background:linear-gradient(135deg,#1e1e3299,#141423cc);border-radius:16px;box-shadow:0 8px 32px #0006;overflow:hidden;position:relative;border:1px solid rgba(99,102,241,.2)}.canvas-container.onboarding-click-step{border-color:#8b5cf680;box-shadow:0 0 30px #8b5cf640}.canvas-click-hint{position:absolute;right:40%;top:50%;pointer-events:none;z-index:5}.canvas-click-pulse{position:absolute;width:24px;height:24px;border-radius:50%;background:#8b5cf6e6;box-shadow:0 0 #8b5cf6b3;animation:click-pulse-dot 1.5s ease-out infinite}.canvas-click-text{position:absolute;bottom:20%;left:50%;transform:translate(-50%);font-size:1rem;font-weight:600;color:#e2e8f0f2;text-shadow:0 2px 8px rgba(0,0,0,.6);white-space:nowrap;animation:click-text-bounce 1.2s ease-in-out infinite}@keyframes click-pulse-dot{0%,to{transform:scale(1);box-shadow:0 0 #8b5cf6b3}50%{transform:scale(1.15);box-shadow:0 0 0 20px #8b5cf600}}@keyframes click-pulse-ring{0%{transform:scale(.6);opacity:1;border-color:#8b5cf6cc}to{transform:scale(1.4);opacity:0;border-color:#8b5cf633}}@keyframes click-text-bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-6px)}}.canvas-overlay-controls{top:1rem;left:1rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;padding:.85rem;z-index:10;min-width:240px;animation:slideInLeft .3s ease}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.overlay-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.65rem;padding-bottom:.5rem;border-bottom:1px solid rgba(99,102,241,.3)}.overlay-header h4{color:#e2e8f0;font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin:0}.point-count-overlay{background:#6366f133;color:#a78bfa;padding:.35rem .65rem;border-radius:6px;font-size:.75rem;font-weight:600;border:1px solid rgba(99,102,241,.3)}.overlay-instructions{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.65rem}.overlay-instructions span{color:#94a3b8;font-size:.75rem;line-height:1.4}.overlay-instructions strong{color:#a78bfa;font-weight:600}.overlay-buttons{display:flex;gap:.5rem}.btn-overlay{flex:1;background:#334155cc;border:1px solid rgba(99,102,241,.4);color:#e2e8f0;padding:.6rem;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;font-weight:600}.btn-overlay:hover:not(:disabled){background:#475569e6;border-color:#8b5cf699;color:#a78bfa;transform:translateY(-2px);box-shadow:0 4px 12px #6366f14d}.btn-overlay:disabled{opacity:.4;cursor:not-allowed}.control-section{margin-bottom:1.25rem}.control-section:last-child{margin-bottom:0}.control-section h3{color:#e2e8f0;font-size:.95rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:2px solid rgba(99,102,241,.4);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.section-hint{font-size:.75rem;color:#64748b;margin:0 0 .75rem;font-style:italic;line-height:1.3}.sample-images-section{margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(99,102,241,.2)}.sample-images-section h4{font-size:.75rem;color:#94a3b8;margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem;font-weight:500}.sample-images-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.sample-image-btn{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.4rem;background:#1e1e3299;border:2px solid rgba(99,102,241,.2);border-radius:8px;cursor:pointer;transition:all .2s ease}.sample-image-btn:hover{background:#6366f126;border-color:#6366f180;transform:translateY(-2px)}.sample-image-btn.active{border-color:#6366f1;background:#6366f133;box-shadow:0 0 12px #6366f14d}.sample-image-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.sample-image-btn img{width:100%;height:50px;object-fit:cover;border-radius:4px}.sample-thumb-placeholder{width:100%;height:50px;border-radius:4px;background:#1e293b99;color:#94a3b8;font-size:.7rem;display:flex;align-items:center;justify-content:center;text-align:center}.sample-image-btn span{font-size:.65rem;color:#94a3b8;font-weight:500}.sample-image-btn:hover span,.sample-image-btn.active span{color:#e2e8f0}.sample-image-btn.not-ready{opacity:.4;border-color:#ef44444d}.loading-samples,.no-samples{grid-column:span 2;text-align:center;color:#94a3b8;font-size:.75rem;padding:1rem}.btn{padding:.65rem 1.25rem;border:none;border-radius:10px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:.5rem;text-align:center;width:100%;position:relative;overflow:hidden}.btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.btn:hover:before{left:100%}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:before{display:none}.btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a78bfa);color:#fff;box-shadow:0 4px 15px #6366f166}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #6366f199}.btn-secondary{background:#334155cc;color:#e2e8f0;border:1px solid rgba(99,102,241,.3)}.btn-secondary:hover:not(:disabled){background:#475569e6;border-color:#6366f180}.btn-large{padding:.85rem 1.5rem;font-size:1rem}.instructions{background:#1e293b99;padding:.75rem;border-radius:10px;margin-bottom:.75rem;border:1px solid rgba(99,102,241,.2)}.instructions p{margin:.35rem 0;color:#94a3b8;font-size:.8rem;line-height:1.4}.instructions strong{color:#a78bfa}.point-controls{display:flex;gap:.5rem;margin-bottom:.5rem}.point-controls .btn{flex:1}.point-count{background:#1e293b99;padding:.65rem;border-radius:8px;text-align:center;color:#94a3b8;font-size:.85rem;border:1px solid rgba(99,102,241,.2)}.error-message{background:#ef444426;color:#fca5a5;padding:.75rem;border-radius:10px;border-left:3px solid #ef4444;margin-top:.75rem;display:flex;align-items:center;gap:.5rem;font-size:.85rem}.loading-overlay{position:fixed;inset:0;background:#0f0f1ed9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .3s ease}.loading-spinner{display:flex;background:#ffffff38;border-radius:10px;padding:3rem 4rem;box-shadow:0 0 10px #00000080;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.loading-card{background:linear-gradient(135deg,#1e1e32f2,#141423fa);padding:2.5rem 3.5rem;border-radius:20px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;align-items:center;gap:1.5rem;animation:scaleIn .3s ease;border:1px solid rgba(99,102,241,.3)}.spinner{width:60px;height:60px;border:4px solid rgba(99,102,241,.2);border-top-color:#a78bfa;border-radius:50%;animation:spin .8s linear infinite;filter:drop-shadow(0 0 10px rgba(167,139,250,.5))}.loading-text{font-size:1.05rem;font-weight:600;color:#e2e8f0;text-align:center;display:flex;align-items:center;justify-content:center;gap:.5rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.editing-indicator{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;padding:.65rem;border-radius:10px;text-align:center;font-weight:600;margin-bottom:.75rem;animation:pulse 2s infinite;display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.85rem;box-shadow:0 4px 15px #6366f166}.preview-indicator{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#1e1e1e;padding:.65rem;border-radius:10px;text-align:center;font-weight:600;margin-bottom:.75rem;animation:pulse 2s infinite;box-shadow:0 4px 15px #fbbf2466;display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.85rem}.new-mask-ready-banner{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;padding:.85rem 1rem;border-radius:10px;text-align:center;font-weight:700;margin-top:.75rem;margin-bottom:.5rem;animation:pulse 2s infinite;box-shadow:0 4px 20px #6366f180;display:flex;align-items:center;justify-content:center;gap:.6rem;font-size:.95rem}.hint-text{background:#1e293b66;color:#94a3b8;padding:.65rem;border-radius:8px;text-align:center;font-size:.8rem;margin-top:.75rem;border:1px dashed rgba(99,102,241,.3);display:flex;align-items:center;justify-content:center;gap:.5rem}.color-hint{background:linear-gradient(135deg,#667eea33,#764ba233);color:#a78bfa;padding:.65rem;border-radius:8px;text-align:center;font-size:.75rem;margin-top:.75rem;border:1px solid rgba(102,126,234,.4);display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:500}.paint-control{margin-bottom:1rem}.paint-label{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:#e2e8f0;font-weight:500;margin-bottom:.5rem}.paint-value{color:#a78bfa;font-weight:700;margin-left:auto}.opacity-slider{width:100%;height:8px;-webkit-appearance:none;appearance:none;background:linear-gradient(90deg,#6366f14d,#8b5cf6cc);border-radius:4px;outline:none;cursor:pointer}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:linear-gradient(135deg,#a78bfa,#6366f1);border-radius:50%;cursor:pointer;box-shadow:0 2px 8px #6366f180;transition:transform .2s ease,box-shadow .2s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 4px 12px #6366f1b3}.opacity-slider::-moz-range-thumb{width:20px;height:20px;background:linear-gradient(135deg,#a78bfa,#6366f1);border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 8px #6366f180}.slider-hints{display:flex;justify-content:space-between;margin-top:.25rem;font-size:.7rem;color:#64748b}.blend-mode-toggle{display:flex;gap:.5rem}.blend-btn{flex:1;padding:.6rem .8rem;border:2px solid rgba(99,102,241,.3);border-radius:8px;background:#1e293b99;color:#94a3b8;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease}.blend-btn:hover{border-color:#6366f180;background:#1e293bcc;color:#e2e8f0}.blend-btn.active{border-color:#a78bfa;background:linear-gradient(135deg,#6366f14d,#8b5cf64d);color:#a78bfa;box-shadow:0 0 10px #8b5cf64d}.blend-hint{font-size:.7rem;color:#64748b;margin-top:.5rem;text-align:center;font-style:italic}@keyframes pulse{0%,to{opacity:1}50%{opacity:.85}}.empty-canvas{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b4d,#0f172a80)}.empty-canvas-content{text-align:center;color:#64748b}.empty-icon{color:#475569;margin-bottom:1rem;filter:drop-shadow(0 0 20px rgba(99,102,241,.3))}.empty-canvas-content h2{color:#94a3b8;margin-bottom:.5rem;font-size:1.5rem}.empty-canvas-content p{color:#64748b;font-size:.95rem}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:#1e293b4d;border-radius:3px}.sidebar::-webkit-scrollbar-thumb{background:#6366f166;border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:#6366f199}.spotlight-overlay{position:fixed;inset:0;z-index:9998;pointer-events:auto;animation:fadeIn .3s ease}.spotlight-cutout{position:fixed;background:transparent;border-radius:12px;box-shadow:0 0 0 9999px #0a0a14d9;transition:all .4s cubic-bezier(.4,0,.2,1);pointer-events:none}.spotlight-highlight{position:fixed;border:3px solid #a78bfa;border-radius:12px;z-index:9999;pointer-events:none;box-shadow:0 0 20px #a78bfa80,0 0 40px #a78bfa4d,inset 0 0 20px #a78bfa1a;animation:pulse-border 2s infinite;transition:all .4s cubic-bezier(.4,0,.2,1)}@keyframes pulse-border{0%,to{box-shadow:0 0 20px #a78bfa80,0 0 40px #a78bfa4d,inset 0 0 20px #a78bfa1a}50%{box-shadow:0 0 30px #a78bfab3,0 0 60px #a78bfa66,inset 0 0 30px #a78bfa33}}.spotlight-tooltip{position:fixed;background:linear-gradient(135deg,#1e1e32fa,#141423fc);border-radius:16px;padding:1.25rem;width:320px;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px);overflow-y:auto;z-index:10000;border:1px solid rgba(99,102,241,.4);box-shadow:0 20px 60px #0009,0 0 40px #6366f126;animation:tooltipIn .3s ease;transition:top .3s ease-out,left .3s ease-out}@keyframes tooltipIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.spotlight-tooltip:before{content:"";position:absolute;width:14px;height:14px;background:linear-gradient(135deg,#1e1e32fa,#141423fc);border:1px solid rgba(99,102,241,.4);transform:rotate(45deg);display:none}@media(min-width:768px){.spotlight-tooltip.tooltip-right:before{left:-8px;top:24px;border-right:none;border-top:none}.spotlight-tooltip.tooltip-left:before{right:-8px;top:24px;border-left:none;border-bottom:none}.spotlight-tooltip.tooltip-bottom:before{top:-8px;left:24px;border-bottom:none;border-right:none}.spotlight-tooltip.tooltip-top:before{bottom:-8px;left:24px;border-top:none;border-left:none}}.spotlight-tooltip .onboarding-close{position:absolute;top:.75rem;right:.75rem;background:#33415599;border:1px solid rgba(99,102,241,.3);border-radius:6px;color:#94a3b8;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;padding:0}.spotlight-tooltip .onboarding-close:hover{background:#ef44444d;border-color:#ef444480;color:#fca5a5}.tooltip-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.step-icon-small{width:44px;height:44px;background:linear-gradient(135deg,#6366f14d,#8b5cf64d);border-radius:10px;display:flex;align-items:center;justify-content:center;color:#a78bfa;border:1px solid rgba(99,102,241,.4)}.step-badge{background:#6366f133;color:#a78bfa;padding:.2rem .6rem;border-radius:12px;font-size:.7rem;font-weight:600;border:1px solid rgba(99,102,241,.3)}.spotlight-tooltip h3{color:#e2e8f0;font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.spotlight-tooltip p{color:#94a3b8;font-size:.85rem;line-height:1.5;margin-bottom:1rem}.tooltip-dots{display:flex;justify-content:center;gap:.4rem;margin-bottom:1rem}.dot-small{width:8px;height:8px;border-radius:50%;background:#334155cc;border:1.5px solid rgba(99,102,241,.3);cursor:pointer;transition:all .3s ease;padding:0}.dot-small:hover{border-color:#6366f199;transform:scale(1.2)}.dot-small.active{background:linear-gradient(135deg,#a78bfa,#6366f1);border-color:#a78bfa;transform:scale(1.3);box-shadow:0 0 8px #a78bfa99}.dot-small.completed{background:#22c55e66;border-color:#22c55e}.tooltip-actions{display:flex;gap:.5rem;justify-content:center}.btn-tooltip{display:flex;align-items:center;gap:.3rem;padding:.5rem 1rem;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none}.btn-prev-small{background:#334155cc;color:#e2e8f0;border:1px solid rgba(99,102,241,.3);padding:.5rem .75rem}.btn-prev-small:hover:not(:disabled){background:#475569e6;border-color:#6366f180}.btn-prev-small:disabled{opacity:.4;cursor:not-allowed}.btn-next-small{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 2px 10px #6366f166;flex:1;justify-content:center}.btn-next-small:hover{transform:translateY(-1px);box-shadow:0 4px 15px #6366f199}.btn-tooltip:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-tooltip:disabled:hover{transform:none;box-shadow:inherit}.btn-finish-small{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;box-shadow:0 2px 10px #22c55e66;flex:1;justify-content:center}.btn-finish-small:hover{transform:translateY(-1px);box-shadow:0 4px 15px #22c55e99}.skip-tour-small{display:block;margin:.75rem auto 0;background:transparent;border:none;color:#64748b;font-size:.7rem;cursor:pointer;transition:color .2s ease}.skip-tour-small:hover{color:#94a3b8;text-decoration:underline}@media(max-width:1200px){.app-container{flex-direction:column;max-height:none;overflow-y:auto;overflow-x:hidden}.sidebar{width:100%;max-height:none}.left-sidebar,.right-sidebar{width:100%;flex-shrink:0}.canvas-container{height:60vh;min-height:400px;flex:none;flex-shrink:0}.detector-container{display:flex;flex-direction:column;grid-template-columns:none}.detector-container .left-sidebar,.detector-container .detector-sidebar,.detector-container .right-sidebar,.detector-container .detector-results-sidebar{width:100%;flex-shrink:0}.detector-container .canvas-container{height:60vh;min-height:400px;flex:none;flex-shrink:0}.detector-container .detected-objects-list{max-height:none}.app-header{flex-direction:column;gap:.75rem}.help-button{align-self:center}}@media(max-width:768px){.canvas-container,.detector-container .canvas-container{height:50vh;min-height:320px}.main-tabs{padding:0 .75rem}.main-tab{padding:.6rem 1rem;font-size:.85rem}.detected-object-card{padding:.6rem}.detected-swatch-wrap{gap:.35rem}.detected-swatch-label{min-width:auto;font-size:.75rem}.detected-swatch-hex{font-size:.7rem}}@media(max-width:768px){.spotlight-overlay{background:#0a0a14e6}.spotlight-tooltip{position:fixed!important;width:calc(100vw - 32px)!important;max-width:340px!important;left:50%!important;transform:translate(-50%)!important;bottom:16px!important;top:auto!important;max-height:calc(100vh - 100px);overflow-y:auto}.spotlight-highlight{border-width:2px}.spotlight-cutout{border-radius:8px}.tooltip-header{gap:.5rem}.step-icon-small{width:36px;height:36px}.step-icon-small svg{width:18px;height:18px}.spotlight-tooltip h3{font-size:1rem}.spotlight-tooltip p{font-size:.8rem;line-height:1.5}.tooltip-actions{gap:.5rem}.btn-tooltip{padding:.5rem 1rem;font-size:.8rem}.tooltip-dots{margin-bottom:1rem}.dot-small{width:8px;height:8px}}@media(max-width:480px){.canvas-container,.detector-container .canvas-container{height:45vh;min-height:280px}.main-tabs{padding:0 .5rem}.main-tab{padding:.5rem .75rem;font-size:.8rem;gap:.35rem}.app-header h1{font-size:1.3rem}.app-header p{font-size:.8rem}.detected-swatch,.detected-dominant-btn{width:20px;height:20px}.spotlight-tooltip{width:calc(100vw - 24px)!important;padding:1rem;border-radius:12px;bottom:12px!important;max-height:220px}.tooltip-header{margin-bottom:.4rem}.step-icon-small{width:32px;height:32px}.step-badge{font-size:.6rem;padding:.15rem .4rem}.spotlight-tooltip h3{font-size:.9rem;margin-bottom:.3rem}.spotlight-tooltip p{font-size:.72rem;line-height:1.35;margin-bottom:.6rem}.tooltip-dots{margin-bottom:.6rem;gap:.25rem}.dot-small{width:6px;height:6px}.tooltip-actions{gap:.4rem}.btn-tooltip{padding:.4rem .75rem;font-size:.72rem}.btn-prev-small{padding:.4rem .6rem}.btn-next-small,.btn-finish-small{flex:1;min-width:80px}.skip-tour-small{margin-top:.4rem;font-size:.6rem}.onboarding-close{width:24px;height:24px;top:.5rem;right:.5rem}.onboarding-close svg{width:14px;height:14px}}@media(max-width:360px){.spotlight-tooltip{width:calc(100vw - 16px)!important;padding:.75rem;max-height:200px}.tooltip-header{gap:.4rem}.step-icon-small{width:28px;height:28px}.step-badge{font-size:.55rem}.spotlight-tooltip h3{font-size:.85rem}.spotlight-tooltip p{font-size:.68rem}.btn-tooltip{padding:.35rem .6rem;font-size:.68rem}}.main-tabs{display:flex;gap:0;padding:0 1.5rem;background:#0f0f1e99;border-bottom:1px solid rgba(99,102,241,.25)}.main-tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:transparent;border:none;color:#94a3b8;font-size:.95rem;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;transition:color .2s,border-color .2s,background .2s}.main-tab:hover{color:#c4b5fd;background:#6366f114}.main-tab.active{color:#a78bfa;border-bottom-color:#6366f1;background:#6366f11f}.detector-sidebar .detector-hint{color:#94a3b8;font-size:.8rem;margin:.5rem 0 .75rem;line-height:1.35}.detector-preview-area,.detector-preview-img{width:100%;height:100%;object-fit:contain}.detector-results-sidebar .detector-placeholder{color:#64748b;font-size:.85rem;margin-top:.5rem}.detected-objects-list{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem;max-height:50vh;overflow-y:auto}.detected-object-card{background:#1e1e3299;border-radius:12px;padding:.75rem;border:1px solid rgba(99,102,241,.2)}.detected-object-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.detected-object-index{font-size:.85rem;font-weight:600;color:#e2e8f0}.detected-dominant-btn{width:24px;height:24px;border-radius:6px;border:2px solid rgba(255,255,255,.4);cursor:pointer;padding:0;flex-shrink:0;transition:transform .15s,box-shadow .15s}.detected-dominant-btn:hover{transform:scale(1.15);box-shadow:0 2px 12px #00000080}.detected-color-code{margin-bottom:.35rem;font-size:.8rem}.detected-meta-label{display:block;font-size:.7rem;color:#94a3b8;margin-bottom:.15rem}.detected-hex{font-family:ui-monospace,monospace;font-size:.85rem;color:#a78bfa;background:#0000004d;padding:.15rem .4rem;border-radius:4px}.detected-name{font-weight:600;color:#e2e8f0}.detected-color-row{margin-bottom:.4rem}.detected-color-row:last-child{margin-bottom:0}.detected-label{display:block;font-size:.7rem;color:#94a3b8;margin-bottom:.25rem}.detected-swatches-with-labels{display:flex;flex-direction:column;gap:.35rem;margin-top:.25rem}.detected-swatch-wrap{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.detected-swatch{width:24px;height:24px;border-radius:6px;border:2px solid rgba(255,255,255,.4);cursor:pointer;padding:0;transition:transform .15s,box-shadow .15s}.detected-swatch:hover{transform:scale(1.1);box-shadow:0 2px 8px #0006}.detected-swatch-label{font-size:.8rem;color:#e2e8f0;min-width:6rem}.detected-swatch-hex{font-family:ui-monospace,monospace;font-size:.75rem;color:#94a3b8}.btn-visualize{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .7rem;font-size:.75rem;font-weight:600;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .2s ease;margin-top:.4rem;margin-bottom:.3rem;width:100%;justify-content:center}.btn-visualize:hover{background:linear-gradient(135deg,#7c3aed,#a78bfa);transform:translateY(-1px);box-shadow:0 4px 16px #6366f166}.btn-visualize:active{transform:translateY(0)}.btn-swatch-visualize{display:inline-flex;align-items:center;gap:.2rem;padding:.15rem .4rem;font-size:.6rem;font-weight:600;background:#6366f14d;color:#c4b5fd;border:1px solid rgba(99,102,241,.4);border-radius:5px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-swatch-visualize:hover{background:#6366f199;color:#fff;border-color:#8b5cf699}.detector-multi-hint{font-size:.75rem;color:#94a3b8;margin-top:.5rem;line-height:1.35}.btn-small{padding:.5rem 1rem;font-size:.85rem}.color-preview-backdrop{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;padding:1rem}.color-preview-modal{background:linear-gradient(135deg,#1e1e32fa,#141423fc);border:1px solid rgba(99,102,241,.4);border-radius:20px;padding:2rem;max-width:90vw;position:relative;box-shadow:0 20px 60px #0009}.color-preview-close{position:absolute;top:.75rem;right:.75rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#e2e8f0;cursor:pointer;padding:.35rem;display:flex;align-items:center;justify-content:center}.color-preview-close:hover{background:#fff3}.color-preview-swatch{width:min(280px,50vmin);height:min(280px,50vmin);border-radius:16px;border:4px solid rgba(255,255,255,.3);margin:0 auto 1.25rem;box-shadow:0 8px 32px #0006}.color-preview-hex{font-family:ui-monospace,monospace;font-size:1.25rem;font-weight:600;color:#a78bfa;text-align:center;margin-bottom:.35rem}.color-preview-name{font-size:1.1rem;color:#e2e8f0;text-align:center;margin-bottom:.35rem}.color-preview-gloss-hint{font-size:.8rem;color:#94a3b8;text-align:center;margin-bottom:1.25rem}.color-preview-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.btn-visualize-modal{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.25rem;font-size:.9rem;font-weight:600;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:10px;cursor:pointer;transition:all .2s ease}.btn-visualize-modal:hover{background:linear-gradient(135deg,#7c3aed,#a78bfa);transform:translateY(-1px);box-shadow:0 4px 20px #6366f180}.btn-visualize-modal:active{transform:translateY(0)}.btn-visualize-modal-highlight{animation:visualize-highlight-pulse 2s ease-in-out infinite;box-shadow:0 0 0 3px #6366f180,0 4px 20px #6366f180}.btn-visualize-modal-highlight:hover{animation:none;box-shadow:0 0 0 3px #8b5cf6b3,0 4px 24px #6366f199}@keyframes visualize-highlight-pulse{0%,to{box-shadow:0 0 0 3px #6366f180,0 4px 20px #6366f180}50%{box-shadow:0 0 0 5px #6366f1b3,0 4px 28px #8b5cf699}}.image-canvas-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.image-canvas-container.disabled{cursor:wait}.image-canvas{cursor:crosshair;display:block}.image-canvas:active{cursor:pointer}.canvas-processing-overlay{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:10}.processing-indicator{display:flex;align-items:center;gap:10px;background:#000000bf;color:#fff;padding:12px 20px;border-radius:8px;font-size:14px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 4px 12px #0000004d}.processing-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.color-palette-toggle{position:fixed;left:0;top:50%;transform:translateY(-50%);width:40px;height:80px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:0 12px 12px 0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:2px 0 15px #667eea66;transition:all .3s ease;z-index:1000}.color-palette-toggle:hover{width:45px;box-shadow:2px 0 20px #667eea99}.color-palette-toggle.open{left:400px;background:linear-gradient(135deg,#f093fb,#f5576c)}.color-palette-panel{position:fixed;left:-400px;top:0;height:100vh;width:400px;background:linear-gradient(135deg,#1e1e2e,#2a1a3d);box-shadow:4px 0 20px #00000080;transition:left .3s ease;z-index:999;display:flex;flex-direction:column;overflow:hidden}.color-palette-panel.open{left:0}.color-palette-header{padding:1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 2px 10px #0000004d}.color-palette-header h3{margin:0 0 .5rem;font-size:1.5rem;font-weight:700}.apply-hint{font-size:.75rem;opacity:.9;display:block;margin-top:.25rem}.color-palette-content{flex:1;overflow-y:auto;padding:1rem}.color-palette-content::-webkit-scrollbar{width:8px}.color-palette-content::-webkit-scrollbar-track{background:#0003}.color-palette-content::-webkit-scrollbar-thumb{background:#667eea80;border-radius:4px}.color-palette-content::-webkit-scrollbar-thumb:hover{background:#667eeab3}.color-category{margin-bottom:.75rem;background:#ffffff0d;border-radius:12px;overflow:hidden;border:1px solid rgba(102,126,234,.2);transition:all .2s ease}.color-category:hover{border-color:#667eea66;background:#ffffff14}.category-header{width:100%;padding:.75rem 1rem;background:#667eea1a;border:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;color:#e2e8f0;font-weight:600;font-size:.9rem;transition:all .2s ease}.category-header:hover{background:#667eea33}.category-name{display:flex;align-items:center;gap:.5rem}.chevron{transition:transform .2s ease}.chevron.expanded{transform:rotate(90deg)}.color-shades{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem;padding:1rem;background:#0003}.color-shade{width:100%;aspect-ratio:1;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #0000004d;position:relative;scroll-margin:1rem}.color-shade:before{content:"";position:absolute;inset:0;border-radius:6px;background:linear-gradient(135deg,rgba(255,255,255,.3) 0%,transparent 100%);opacity:0;transition:opacity .2s ease}.color-shade:hover:before{opacity:1}.color-shade:hover{transform:scale(1.15);box-shadow:0 4px 15px #00000080;border-color:#a78bfa80;z-index:10}.color-shade.selected{border-color:#a78bfa;transform:scale(1.2);box-shadow:0 4px 20px #a78bfacc;z-index:11}.color-shade.selected:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.2rem;font-weight:700;text-shadow:0 0 5px rgba(0,0,0,.8)}.custom-color-section{margin-top:1rem;padding:1rem;background:#667eea1a;border-radius:12px;border:1px solid rgba(102,126,234,.3)}.custom-color-section label{font-weight:600;color:#94a3b8;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:.5rem}.custom-color-input{display:flex;gap:.5rem;align-items:center}.custom-color-input input[type=color]{width:50px;height:40px;border:2px solid rgba(99,102,241,.4);border-radius:8px;cursor:pointer;background:#0f172a99;transition:all .2s ease}.custom-color-input input[type=color]:hover{border-color:#8b5cf699;transform:scale(1.05)}.color-hex-input{flex:1;padding:.65rem;border:2px solid rgba(99,102,241,.4);border-radius:8px;font-family:Fira Code,Courier New,monospace;font-size:.85rem;background:#0f172a99;color:#e2e8f0;transition:all .2s ease}.color-hex-input::placeholder{color:#64748b}.color-hex-input:focus{outline:none;border-color:#8b5cf6;background:#0f172acc;box-shadow:0 0 0 3px #8b5cf633}.user-colors-category{border:1px solid rgba(139,92,246,.3);border-radius:10px;background:#8b5cf614;margin-bottom:.5rem;overflow:hidden}.user-colors-header{background:linear-gradient(135deg,#6366f126,#8b5cf626)!important}.user-colors-header .category-name{color:#c4b5fd!important;font-weight:700!important}.user-colors-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#8b5cf666;color:#e0d5ff;font-size:.65rem;font-weight:700;margin-left:.3rem}.user-color-shades{gap:6px!important}.user-color-shades .color-shade{width:32px!important;height:32px!important;border-radius:8px!important;border-width:2px!important}.color-palette-backdrop{position:fixed;inset:0;z-index:998}@media(max-width:768px){.color-palette-panel{width:100%;left:-100%}.color-palette-toggle.open{left:calc(100% - 40px)}.color-shades{grid-template-columns:repeat(4,1fr)}}.mask-list{display:flex;flex-direction:column;gap:.75rem}.mask-list-empty{text-align:center;padding:1.5rem 1rem;color:#64748b}.mask-list-empty p{margin:.5rem 0;font-size:.9rem}.mask-list-hint{font-size:.8rem;color:#475569}.mask-item{background:linear-gradient(135deg,#1e293b99,#0f172ab3);border-radius:12px;padding:.85rem;border:1px solid rgba(99,102,241,.3);transition:all .3s ease;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.mask-item:hover{border-color:#8b5cf699;box-shadow:0 4px 20px #6366f14d;transform:translateY(-2px)}.mask-item-selected{border-color:#8b5cf6!important;background:linear-gradient(135deg,#6366f133,#8b5cf626)!important;box-shadow:0 6px 25px #8b5cf666!important}.mask-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.mask-item-title{display:flex;align-items:center;gap:.5rem}.mask-number{font-weight:600;color:#e2e8f0;display:flex;align-items:center;gap:.5rem;font-size:.9rem}.btn-icon{background:#33415599;border:1px solid rgba(99,102,241,.3);border-radius:8px;cursor:pointer;padding:.35rem;transition:all .2s ease;color:#94a3b8;display:flex;align-items:center;justify-content:center}.btn-icon:hover{background:#475569cc;border-color:#8b5cf699;color:#a78bfa;transform:scale(1.1)}.btn-danger:hover{background:#ef444433!important;border-color:#ef444499!important;color:#fca5a5!important}.btn-icon:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.mask-item-body{display:flex;flex-direction:column;gap:.65rem}.mask-preview{width:100%;aspect-ratio:16/9;background:#0f172acc;border-radius:8px;overflow:hidden;border:1px solid rgba(99,102,241,.2)}.mask-preview img{width:100%;height:100%;object-fit:contain}.mask-color-picker{display:flex;flex-direction:column;gap:.5rem}.mask-color-picker label{font-weight:600;color:#94a3b8;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.mask-color-control{display:flex;align-items:center;gap:.5rem}.mask-color-preview{width:36px;height:36px;border-radius:8px;border:2px solid rgba(99,102,241,.4);box-shadow:0 4px 10px #0000004d;transition:transform .2s ease}.mask-color-preview:hover{transform:scale(1.1)}.mask-color-input{flex:1;height:36px;border:2px solid rgba(99,102,241,.4);border-radius:8px;cursor:pointer;background:#0f172a99;transition:all .2s ease}.mask-color-input:hover{border-color:#8b5cf699}.mask-opacity-control{display:flex;flex-direction:column;gap:.5rem}.mask-opacity-control label{font-weight:600;color:#94a3b8;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.opacity-slider{width:100%;height:6px;border-radius:5px;background:#1e293bcc;outline:none;appearance:none;-webkit-appearance:none;cursor:pointer}.opacity-slider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);cursor:pointer;box-shadow:0 2px 8px #6366f199;transition:all .2s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 4px 12px #8b5cf6cc}.opacity-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);cursor:pointer;border:none;box-shadow:0 2px 8px #6366f199}.mask-info{color:#94a3b8;font-size:.75rem;padding:.5rem;background:#1e293b66;border-radius:6px;text-align:center;border:1px solid rgba(99,102,241,.2)}.mask-item-body .btn{margin-top:.25rem}.apply-color-btn{flex:1;font-size:.78rem;padding:.4rem .6rem;border-radius:8px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;color:#e5e7eb;letter-spacing:.04em;font-weight:600;box-shadow:0 3px 10px #4f46e599;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.apply-color-btn:hover{transform:translateY(-1px) scale(1.03);box-shadow:0 5px 16px #818cf8cc;background:linear-gradient(135deg,#818cf8,#a855f7)}.apply-color-btn:active{transform:translateY(0);box-shadow:0 2px 8px #4f46e5b3}.editing-badge{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;padding:.5rem;border-radius:6px;text-align:center;font-size:.8rem;font-weight:600;margin-top:.5rem;box-shadow:0 2px 10px #6366f166}
