:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;--text-primary: #ffffff;--text-secondary: #cccccc;--control-bg: #1a1a1a;--control-bg-hover: #2a2a2a;--border-color: #444444;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff;--text-primary: #333333;--text-secondary: #666666;--control-bg: #ffffff;--control-bg-hover: #f9f9f9;--border-color: #cccccc}a:hover{color:#747bff}button{background-color:#f9f9f9}}.control-panel{position:fixed;top:0;right:0;width:320px;max-height:100vh;background:#fffffff2;border-radius:0;padding:0 20px 20px;box-shadow:0 8px 32px #0000001a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-right:none;border-top:none;overflow-y:auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;z-index:1000;transition:transform .3s ease,opacity .3s ease;transform:translate(0)}.control-panel.hidden{transform:translate(100%);opacity:0;pointer-events:none}.control-panel.dark{background:#141414f2;color:#fff;border:1px solid rgba(255,255,255,.1)}.control-tab{position:fixed;top:0;right:0;width:50px;height:50px;background:#fffffff2;border-radius:0 0 0 12px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:-4px 4px 16px #0000001a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-right:none;border-top:none;z-index:999;transition:all .3s ease;animation:slideInFromRight .3s ease-out}.control-tab.dark{background:#141414f2;color:#fff;border:1px solid rgba(255,255,255,.1);border-right:none;border-top:none}.control-tab:hover{transform:translate(-5px);box-shadow:-6px 6px 20px #00000026}.control-tab span{font-size:20px;-webkit-user-select:none;user-select:none}.control-header{position:sticky;top:0;background:inherit;display:flex;justify-content:space-between;align-items:center;margin:0 -20px 20px;padding:20px 20px 10px;border-bottom:1px solid rgba(0,0,0,.1);z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.control-panel.dark .control-header{border-bottom:1px solid rgba(255,255,255,.1);background:inherit}.control-header h3{margin:0;font-size:18px;font-weight:600}.control-actions button{background:none;border:none;font-size:18px;cursor:pointer;padding:6px;border-radius:6px;transition:background-color .2s ease}.control-actions button:hover{background:#0000001a}.control-panel.dark .control-actions button:hover{background:#ffffff1a}.control-actions .hide-button{font-size:16px;color:#666;margin-left:4px}.control-panel.dark .control-actions .hide-button{color:#ccc}.control-actions .hide-button:hover{color:#f44;background:#ff44441a}.control-sections{display:flex;flex-direction:column;gap:20px}.control-sections section{padding:16px;background:#00000008;border-radius:8px;border:1px solid rgba(0,0,0,.05)}.control-panel.dark .control-sections section{background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.control-sections h4{margin:0 0 12px;font-size:16px;font-weight:600;color:#333}.control-panel.dark .control-sections h4{color:#fff}.control-group{margin-bottom:16px}.control-group:last-child{margin-bottom:0}.control-group label{display:block;margin-bottom:6px;font-weight:500;color:#555}.control-panel.dark .control-group label{color:#ccc}.control-group input[type=range]{width:100%;height:6px;border-radius:3px;background:#ddd;outline:none;-webkit-appearance:none;appearance:none;cursor:pointer}.control-panel.dark .control-group input[type=range]{background:#444}.control-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#007aff;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003}.control-group input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#007aff;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003}.control-group select{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#333;font-size:14px;cursor:pointer}.control-panel.dark .control-group select{background:#333;border:1px solid #555;color:#fff}.config-buttons{display:flex;flex-direction:column;gap:8px}.config-buttons button,.file-input-label{padding:10px 16px;border:1px solid #007AFF;border-radius:6px;background:#007aff;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:center;display:block}.file-input-label{background:#34c759;border-color:#34c759}.reset-button{background:#ff3b30!important;border-color:#ff3b30!important}.config-buttons button:hover,.file-input-label:hover{opacity:.8;transform:translateY(-1px)}.config-buttons button:active,.file-input-label:active{transform:translateY(0)}.control-panel::-webkit-scrollbar{width:6px}.control-panel::-webkit-scrollbar-track{background:#0000001a;border-radius:3px}.control-panel::-webkit-scrollbar-thumb{background:#0000004d;border-radius:3px}.control-panel.dark::-webkit-scrollbar-track{background:#ffffff1a}.control-panel.dark::-webkit-scrollbar-thumb{background:#ffffff4d}@media (max-width: 768px){.control-panel{position:fixed;top:10px;right:10px;left:10px;width:auto;max-height:calc(100vh - 20px)}}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.control-panel{animation:slideIn .3s ease-out}@keyframes slideInFromRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.slider-input-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.slider-input-header label{flex:1;margin:0;font-weight:500;color:#555}.control-panel.dark .slider-input-header label{color:#ccc}.value-input{width:80px;padding:4px 8px;border:1px solid #ddd;border-radius:4px;background:#fff;color:#333;font-size:12px;text-align:center;font-family:monospace;transition:all .2s ease}.value-input:focus{outline:none;border-color:#007aff;box-shadow:0 0 0 2px #007aff33}.control-panel.dark .value-input{background:#333;border:1px solid #555;color:#fff}.control-panel.dark .value-input:focus{border-color:#007aff}.control-group .slider-input-header+input[type=range]{margin-top:0}.color-input-container{display:flex;align-items:center;gap:10px;margin-top:5px}.color-input{width:50px;height:30px;border:none;border-radius:6px;cursor:pointer;transition:transform .2s ease}.color-input:hover{transform:scale(1.05)}.color-value{font-family:monospace;font-size:12px;color:#666;background:#ffffffb3;padding:4px 8px;border-radius:4px;border:1px solid rgba(0,0,0,.1)}.control-panel.dark .color-value{color:#ccc;background:#000000b3;border:1px solid rgba(255,255,255,.1)}.control-panel.light{--text-primary: #333333;--text-secondary: #666666;--control-bg: #ffffff;--control-bg-hover: #f9f9f9;--border-color: #cccccc}.control-panel.dark{--text-primary: #ffffff;--text-secondary: #cccccc;--control-bg: #1a1a1a;--control-bg-hover: #2a2a2a;--border-color: #555555}.control-panel.light,.control-panel.light .control-sections h4{color:#333!important}.control-panel.light .control-group label{color:#555!important}.control-panel.light .control-actions .hide-button{color:#666!important}.control-panel.light .slider-input-header label{color:#555!important}.control-panel.light .color-value{color:#333!important;background:#ffffffe6;border:1px solid rgba(0,0,0,.1)}.gradient-editor{margin-bottom:1rem}.gradient-editor-label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-primary)}.gradient-preview{width:100%;height:20px;border-radius:4px;border:1px solid var(--border-color);margin-bottom:.5rem;box-shadow:inset 0 1px 3px #0000001a}.gradient-timeline{position:relative;width:100%;height:60px;background:var(--control-bg);border:1px solid var(--border-color);border-radius:4px;cursor:crosshair;margin-bottom:.5rem;overflow:visible}.gradient-stop{position:absolute;top:50%;transform:translate(-50%,-50%);width:20px;height:20px;border:2px solid #fff;border-radius:50%;cursor:grab;box-shadow:0 2px 4px #0003;transition:transform .1s ease}.gradient-stop:hover{transform:translate(-50%,-50%) scale(1.1)}.gradient-stop.dragging{cursor:grabbing;transform:translate(-50%,-50%) scale(1.2);z-index:10}.stop-controls{position:absolute;top:-45px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:4px;opacity:0;transition:opacity .2s ease;background:var(--control-bg);border:1px solid var(--border-color);border-radius:4px;padding:6px;box-shadow:0 2px 8px #0003;pointer-events:none;z-index:20;min-width:80px}.stop-controls.visible,.gradient-stop:hover .stop-controls{opacity:1;pointer-events:auto}.stop-color-input{width:100%;height:24px;border:1px solid var(--border-color);border-radius:4px;cursor:pointer;padding:0;margin-bottom:2px}.stop-remove-btn{width:20px;height:20px;border:none;background:#ff4757;color:#fff;border-radius:2px;cursor:pointer;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}.stop-position.visible,.gradient-stop:hover .stop-position{opacity:1}.gradient-instructions{font-size:11px;color:var(--text-secondary);text-align:center;margin-top:.25rem}.control-panel.dark .gradient-stop{border-color:#333}.control-panel.dark .stop-color-input{border-color:#555}.control-panel.dark .timeline-marker{background:#444}.control-panel.light .gradient-stop{border-color:#ddd!important}.control-panel.light .gradient-timeline{background:#fff!important;border-color:#ccc!important}.control-panel.light .stop-color-input{border-color:#ccc!important}.control-panel.light .gradient-editor-label{color:#333!important}.control-panel.light .timeline-label,.control-panel.light .stop-position,.control-panel.light .gradient-instructions{color:#666!important}.opacity-gradient-editor{margin-bottom:1rem}.opacity-gradient-editor-label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-primary)}.opacity-gradient-preview{position:relative;width:100%;height:20px;border-radius:4px;border:1px solid var(--border-color);margin-bottom:.5rem;overflow:hidden}.opacity-checkerboard{position:absolute;inset:0;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0px;z-index:1}.opacity-gradient-bar{position:absolute;inset:0;z-index:2}.opacity-gradient-timeline{position:relative;width:100%;height:60px;background:var(--control-bg);border:1px solid var(--border-color);border-radius:4px;cursor:crosshair;margin-bottom:.5rem;overflow:visible}.timeline-markers{position:absolute;inset:0;pointer-events:none}.timeline-marker{position:absolute;top:0;bottom:0;width:1px;background:var(--border-color);opacity:.5}.timeline-label{position:absolute;bottom:2px;left:50%;transform:translate(-50%);font-size:10px;color:var(--text-secondary);white-space:nowrap}.opacity-stop{position:absolute;top:50%;transform:translate(-50%,-50%);width:20px;height:20px;border:2px solid #333;border-radius:50%;cursor:grab;box-shadow:0 2px 4px #0003;transition:transform .1s ease;z-index:50}.opacity-stop.dragging{cursor:grabbing;transform:translate(-50%,-50%) scale(1.2);z-index:75}.stop-controls{position:absolute;top:-50px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:4px;opacity:0;transition:opacity .2s ease;background:var(--control-bg);border:1px solid var(--border-color);border-radius:4px;padding:6px;box-shadow:0 2px 8px #0003;min-width:80px;pointer-events:none;z-index:100}.stop-controls.visible{opacity:1;pointer-events:auto}.stop-controls.visible *{pointer-events:auto}.stop-opacity-input{width:60px;height:24px;margin:0;padding:4px 6px;border:1px solid var(--border-color);border-radius:4px;background:var(--control-bg);color:var(--text-primary);font-size:12px;text-align:center;pointer-events:auto!important;cursor:text!important;outline:none;position:relative;z-index:200}.stop-opacity-input:focus{border-color:#4a9eff;background:var(--control-bg-hover, var(--control-bg))}.opacity-value{font-size:10px;color:var(--text-secondary);text-align:center}.stop-remove-btn{width:20px;height:20px;border:none;background:#ff4757;color:#fff;border-radius:3px;cursor:pointer;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;align-self:center;margin-top:2px}.stop-remove-btn:hover{background:#ff3742}.stop-position{position:absolute;top:25px;left:50%;transform:translate(-50%);font-size:10px;color:var(--text-secondary);white-space:nowrap;opacity:0;transition:opacity .2s ease;background:var(--control-bg);padding:1px 3px;border-radius:2px;border:1px solid var(--border-color)}.stop-position.visible{opacity:1}.opacity-gradient-instructions{font-size:11px;color:var(--text-secondary);text-align:center;margin-top:.25rem}.control-panel.dark .opacity-stop{border-color:#555}.control-panel.dark .stop-controls{background:#2a2a2a!important;border-color:#555;box-shadow:0 2px 8px #0000004d}.control-panel.dark .stop-opacity-input{background:#1a1a1a;color:#fff;border-color:#555}.control-panel.dark .stop-opacity-input:focus{border-color:#4a9eff;background:#0a0a0a}.control-panel.dark .opacity-checkerboard{background-image:linear-gradient(45deg,#333 25%,transparent 25%),linear-gradient(-45deg,#333 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#333 75%),linear-gradient(-45deg,transparent 75%,#333 75%)}.control-panel.light .opacity-stop{border-color:#ddd!important}.control-panel.light .opacity-gradient-timeline{background:#fff!important;border-color:#ccc!important}.control-panel.light .timeline-marker{background:#ccc!important}.control-panel.light .stop-controls{background:#fff!important;border-color:#ccc!important;box-shadow:0 2px 8px #0000001a!important}.control-panel.light .stop-opacity-input{background:#fff!important;color:#333!important;border-color:#ccc!important}.control-panel.light .stop-opacity-input:focus{border-color:#4a9eff!important;background:#f9f9f9!important;color:#333!important}.control-panel.light .stop-position{background:#fff!important;border-color:#ccc!important;color:#666!important}.control-panel.light .opacity-checkerboard{background-image:linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%)}.control-panel.light .opacity-gradient-editor-label{color:#333!important}.control-panel.light .timeline-label,.control-panel.light .opacity-value,.control-panel.light .stop-position,.control-panel.light .opacity-gradient-instructions{color:#666!important}.sparkle-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:100}.sparkle-spinner-container{display:flex;flex-direction:column;align-items:center;gap:12px;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.sparkle-spinner{width:24px;height:24px;color:#ab7df8;animation:sparkle-spin 2s linear infinite}@keyframes sparkle-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-dots{font-size:14px;font-weight:500;color:#fff;display:flex;align-items:center;gap:1px}.dot{opacity:0;animation:dot-blink 1.5s infinite;animation-delay:calc(var(--i) * .2s)}@keyframes dot-blink{0%,20%,80%,to{opacity:0}40%,60%{opacity:1}}.app.light .sparkle-spinner-container{color:#24292f}.app.light .sparkle-spinner{color:#8250df}.app.light .loading-dots{color:#24292f}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.app{position:relative;width:100vw;height:100vh;background:#0a0a0a;display:flex;align-items:center;justify-content:center;transition:background-color .3s ease}.canvas-wrapper{width:90%;height:90%;border:1px solid rgba(61,68,77,.7);border-radius:12px;overflow:hidden;transition:border-color .3s ease}.app.light .canvas-wrapper{border:1px solid rgba(200,200,200,.7)}.canvas-container{width:100%;height:100%;position:relative;touch-action:none;user-select:none;-webkit-user-select:none}.info-overlay{position:absolute;top:20px;left:20px;z-index:100;pointer-events:none}.info-overlay h1{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:28px;font-weight:700;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);margin-bottom:8px}.info-overlay p{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;color:#ccc;text-shadow:0 1px 4px rgba(0,0,0,.5)}.app.light{background:#fff}.app.light .info-overlay h1{color:#333;text-shadow:0 2px 8px rgba(255,255,255,.5)}.app.light .info-overlay p{color:#666;text-shadow:0 1px 4px rgba(255,255,255,.5)}@media (max-width: 768px){.info-overlay{top:10px;left:10px}.info-overlay h1{font-size:24px}.info-overlay p{font-size:14px}.canvas-wrapper{width:95%;height:95%}.canvas-container{overscroll-behavior:contain}}@media (max-width: 480px){.canvas-wrapper{width:98%;height:98%;border-radius:8px}}.loading,.error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#fff}.loading h2,.error h2{font-size:24px;margin-bottom:10px}.loading p,.error p{font-size:16px;opacity:.8}.error{color:#f44}
