*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root,[data-theme=default]{--color-bg: #0a0a0f;--color-surface: rgba(18, 18, 28, .72);--color-surface-hover: rgba(28, 28, 42, .85);--color-border: rgba(255, 255, 255, .08);--color-text: #e8e8f0;--color-text-dim: #8888a0;--color-accent: #6c63ff;--color-accent-glow: rgba(108, 99, 255, .45);--color-accent-hover: #8078ff;--color-success: #34d399;--color-danger: #f87171;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow);--font-family: "Inter", system-ui, -apple-system, sans-serif;--transition-fast: .18s cubic-bezier(.4, 0, .2, 1);--transition-med: .3s cubic-bezier(.4, 0, .2, 1)}[data-theme=ubuntu]{--color-bg: #1e1e1e;--color-surface: rgba(48, 48, 48, .72);--color-surface-hover: rgba(60, 60, 60, .85);--color-text: #f7f7f7;--color-text-dim: #9d9d9d;--color-accent: #e95420;--color-accent-glow: rgba(233, 84, 32, .45);--color-accent-hover: #ff7242;--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow)}[data-theme=kde]{--color-bg: #232629;--color-surface: rgba(49, 54, 59, .72);--color-surface-hover: rgba(61, 68, 74, .85);--color-text: #eff0f1;--color-text-dim: #bdc3c7;--color-accent: #3daee9;--color-accent-glow: rgba(61, 174, 233, .45);--color-accent-hover: #5bc0f2;--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow)}[data-theme=mint]{--color-bg: #1e2021;--color-surface: rgba(47, 52, 63, .72);--color-surface-hover: rgba(59, 65, 78, .85);--color-text: #dfdfdf;--color-text-dim: #9b9b9b;--color-accent: #87c095;--color-accent-glow: rgba(135, 192, 149, .5);--color-accent-hover: #9cd4aa;--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow)}[data-theme=gnome]{--color-bg: #242424;--color-surface: rgba(48, 48, 48, .72);--color-surface-hover: rgba(60, 60, 60, .85);--color-text: #ffffff;--color-text-dim: #9a9a9a;--color-accent: #3584e4;--color-accent-glow: rgba(53, 132, 228, .45);--color-accent-hover: #5b9ff9;--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow)}[data-theme]{--shadow-halo-sm: 0 0 8px var(--color-accent-glow);--shadow-halo: 0 0 16px var(--color-accent-glow);--shadow-halo-lg: 0 0 24px var(--color-accent-glow);--shadow-panel: -4px 8px 32px rgba(0, 0, 0, .45), 0 0 0 1px var(--color-border), 0 0 22px var(--color-accent-glow)}html,body{width:100%;height:100%;overflow:hidden;background:var(--color-bg);font-family:var(--font-family);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#canvas-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}#canvas-container canvas{display:block;width:100%!important;height:100%!important;touch-action:none;outline:none}#ui-overlay{position:fixed;top:0;left:0;z-index:100;pointer-events:none;width:100%;height:100%}.ui-panel-container{position:fixed;top:20px;right:0;z-index:100;pointer-events:none;display:flex;align-items:flex-start;transform:translate(0);transition:transform var(--transition-med)}.ui-panel-container.collapsed{transform:translate(100%)}.panel-tag{position:absolute;right:100%;top:16px;width:36px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);border-right:none;border-radius:12px 0 0 12px;box-shadow:-4px 4px 16px #00000059,0 0 16px var(--color-accent-glow);color:var(--color-accent);cursor:pointer;pointer-events:auto;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.panel-tag:hover{background:var(--color-surface-hover);color:var(--color-accent-hover);box-shadow:-6px 4px 24px var(--color-accent-glow),0 0 16px var(--color-accent-glow),-2px 0 8px #0006}.panel-tag-icon{width:18px;height:18px;transition:transform var(--transition-fast)}.ui-panel-container.collapsed .panel-tag-icon{transform:rotate(180deg)}#ui-panel{pointer-events:auto;width:260px;max-height:calc(100vh - 40px);overflow-y:auto;overflow-x:hidden;padding:22px 20px;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);border-right:none;border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg);border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:var(--shadow-panel);transition:box-shadow var(--transition-med),background var(--transition-fast),border-color var(--transition-fast);display:flex;flex-direction:column;gap:18px;user-select:none;-webkit-user-select:none;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}#ui-panel::-webkit-scrollbar{width:4px}#ui-panel::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}#panel-title{font-size:16px;font-weight:700;letter-spacing:.04em;text-transform:none;background:linear-gradient(135deg,#ffffff 15%,var(--color-accent-hover) 85%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0}.panel-header{display:flex;align-items:center;justify-content:space-between}.icon-btn{background:transparent;border:none;color:var(--color-text-dim);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast),background var(--transition-fast)}.icon-btn:hover{color:var(--color-text);background:#ffffff1a}.panel-header-icon,.icon-btn svg{width:18px;height:18px;transition:transform var(--transition-fast)}.ui-panel-container.collapsed .panel-header-icon{transform:rotate(180deg)}.control-group{display:flex;align-items:center;justify-content:space-between;gap:12px}.control-label{font-size:13px;font-weight:500;color:var(--color-text-dim);-webkit-user-select:none;user-select:none;white-space:nowrap}.theme-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff0a;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:6px 28px 6px 12px;font-family:var(--font-family);font-size:12px;font-weight:600;cursor:pointer;outline:none;box-shadow:0 0 8px var(--color-accent-glow);background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e8e8f0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:14px;transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.theme-select:hover{background-color:#ffffff14;box-shadow:0 0 16px var(--color-accent-glow)}.theme-select:focus-visible{border-color:var(--color-accent);box-shadow:0 0 18px var(--color-accent-glow)}.theme-select option{background:var(--color-bg);color:var(--color-text)}.toggle-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;cursor:pointer;padding:0;outline:none;user-select:none;-webkit-user-select:none}.toggle-track{position:relative;display:block;width:44px;height:24px;border-radius:99px;background:#ffffff1a;border:1px solid rgba(255,255,255,.06);transition:background var(--transition-fast),box-shadow var(--transition-fast)}.toggle-thumb{position:absolute;top:1px;left:1px;width:20px;height:20px;border-radius:50%;background:var(--color-text-dim);transition:transform var(--transition-fast),background var(--transition-fast);box-shadow:0 1px 4px #0000004d}.toggle-btn[aria-pressed=true] .toggle-track{background:var(--color-accent);box-shadow:0 0 12px var(--color-accent-glow)}.toggle-btn[aria-pressed=true] .toggle-thumb{transform:translate(20px);background:#fff}.toggle-btn:focus-visible .toggle-track{outline:2px solid var(--color-accent);outline-offset:2px}.range-slider{width:85px;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer;height:4px;border-radius:2px;transition:filter var(--transition-fast)}.range-slider:hover,.range-slider:focus-visible{filter:drop-shadow(0 0 6px var(--color-accent-glow))}.mode-switcher{display:flex;gap:0;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--color-border)}.mode-btn{flex:1;width:50%;display:flex;justify-content:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:#ffffff0a;color:var(--color-text-dim);font-family:var(--font-family);font-size:12px;font-weight:600;padding:6px 0;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);-webkit-user-select:none;user-select:none}.mode-btn:not(:last-child){border-right:1px solid var(--color-border)}.mode-btn:hover{background:#ffffff14;color:var(--color-text)}.mode-btn.active{background:var(--color-accent);color:#fff;box-shadow:0 0 10px var(--color-accent-glow)}.mode-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.loading-indicator{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px 14px;background:color-mix(in srgb,var(--color-accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--color-accent) 20%,transparent);border-radius:var(--radius-sm);transition:opacity var(--transition-med),transform var(--transition-med)}.loading-indicator.hidden{opacity:0;transform:translateY(-4px);pointer-events:none}.loading-status-row{display:flex;align-items:center;gap:10px}.progress-bar-container{width:100%;height:4px;background:#ffffff14;border-radius:99px;overflow:hidden;margin-top:4px}.progress-bar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--color-accent),var(--color-accent-hover));border-radius:99px;transition:width .15s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px var(--color-accent-glow)}.spinner{width:16px;height:16px;border:2px solid color-mix(in srgb,var(--color-accent) 25%,transparent);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:13px;font-weight:500;opacity:.8}.drop-zone-panel{margin-top:12px;border:1.5px dashed var(--color-border);border-radius:var(--radius-md);padding:16px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--color-text-dim);font-size:13px;font-weight:500;text-align:center;transition:var(--transition-fast);background:#0000000d;box-shadow:0 0 10px var(--color-accent-glow)}[data-theme] .drop-zone-panel{background:#ffffff08}.drop-zone-panel.dragover,.drop-zone-panel:hover{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 12%,transparent);color:var(--color-text);box-shadow:0 0 20px var(--color-accent-glow)}.drop-zone-icon{width:20px;height:20px;opacity:.7}@media(max-width:480px){#ui-panel{width:min(280px,calc(100vw - 48px))}}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;background:#0a0a0fe0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:opacity var(--transition-med)}.drop-overlay.hidden{opacity:0;pointer-events:none}.drop-overlay-content{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 64px;border:2px dashed var(--color-accent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-accent) 8%,transparent);animation:drop-pulse 2s ease-in-out infinite alternate}@keyframes drop-pulse{0%{border-color:var(--color-accent);box-shadow:0 0 20px var(--color-accent-glow)}to{border-color:var(--color-accent-hover);box-shadow:0 0 40px var(--color-accent-glow)}}.drop-icon{width:48px;height:48px;color:var(--color-accent);transform:rotate(180deg)}.drop-text{font-size:18px;font-weight:600;color:var(--color-text)}.drop-formats{font-size:12px;font-weight:500;color:var(--color-text-dim);letter-spacing:.06em}.file-picker-group{gap:8px}.file-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-accent) 12%,transparent);color:var(--color-accent);font-family:var(--font-family);font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 0 10px var(--color-accent-glow);transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);-webkit-user-select:none;user-select:none}.file-btn:hover{background:color-mix(in srgb,var(--color-accent) 22%,transparent);border-color:color-mix(in srgb,var(--color-accent) 45%,transparent);color:var(--color-accent-hover);box-shadow:0 0 18px var(--color-accent-glow)}.file-btn:active{transform:scale(.97)}.file-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.file-btn-icon{width:16px;height:16px;flex-shrink:0}.panel-action-btn{width:100%;justify-content:center;margin-bottom:.5rem}.color-wheel-icon{display:inline-block;width:18px;height:18px;border-radius:50%;flex-shrink:0;border:2px solid transparent;box-sizing:border-box;background:conic-gradient(from 0deg,red,#ff8000,#ff0,#0f0,#0ff,#00f,#8000ff,red);background-image:url(/color-spectrum.png);background-origin:border-box;background-size:108% 108%;background-position:center;background-repeat:no-repeat;transition:transform var(--transition-fast),border-color var(--transition-fast)}.panel-btn-wrapper:hover .color-wheel-icon{transform:scale(1.15)}.panel-btn-wrapper{position:relative;width:100%}.panel-color-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;z-index:2}.panel-btn-wrapper:hover .file-btn{background:color-mix(in srgb,var(--color-accent) 22%,transparent);border-color:color-mix(in srgb,var(--color-accent) 45%,transparent);color:var(--color-accent-hover);box-shadow:0 0 18px var(--color-accent-glow)}.file-badge{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#34d3990f;border:1px solid rgba(52,211,153,.15);border-radius:var(--radius-sm);transition:opacity var(--transition-med),transform var(--transition-med)}.file-badge.hidden{display:none}.file-badge-name{font-size:12px;font-weight:600;color:var(--color-success);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.file-badge-size{font-size:11px;font-weight:500;color:var(--color-text-dim);margin-left:auto;flex-shrink:0}.divider{height:1px;background:var(--color-border);margin:2px 0}.range-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:85px;flex-shrink:0;height:6px;border-radius:99px;background:#ffffff1a;outline:none;transition:background var(--transition-fast)}.range-slider:hover{background:#ffffff26}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent);cursor:pointer;box-shadow:0 0 8px var(--color-accent-glow);transition:transform var(--transition-fast),background var(--transition-fast)}.range-slider::-webkit-slider-thumb:hover{transform:scale(1.2);background:var(--color-accent-hover)}.range-slider::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:var(--color-accent);cursor:pointer;box-shadow:0 0 8px var(--color-accent-glow);transition:transform var(--transition-fast),background var(--transition-fast)}.range-slider::-moz-range-thumb:hover{transform:scale(1.2);background:var(--color-accent-hover)}#rotate-speed-val{color:var(--color-accent);font-weight:700;margin-left:4px}#watermark{position:absolute;bottom:24px;left:24px;font-family:var(--font-family);font-size:14px;font-weight:600;color:var(--color-text-dim);opacity:.6;pointer-events:auto;z-index:10;-webkit-user-select:none;user-select:none;letter-spacing:.5px;text-shadow:0 2px 4px rgba(0,0,0,.8)}.watermark-link{color:inherit;text-decoration:none;transition:color var(--transition-fast),opacity var(--transition-fast)}.watermark-link:hover{opacity:1;color:#fff}.btn-info{position:absolute;bottom:24px;right:24px;width:36px;height:36px;z-index:100;cursor:pointer;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--color-text-dim);box-shadow:0 4px 16px #00000059,0 0 16px var(--color-accent-glow);transition:all var(--transition-fast);font-family:var(--font-family);font-size:14px;font-weight:600}.btn-info:hover,.btn-info.active{color:var(--color-accent);background:#ffffff1a;border-color:var(--color-accent);box-shadow:0 0 24px var(--color-accent-glow),0 4px 16px #00000073}#interaction-guide{position:absolute;bottom:72px;right:24px;z-index:10;pointer-events:none;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px 20px;box-shadow:0 8px 32px #00000073,0 0 0 1px var(--color-border),0 0 22px var(--color-accent-glow);display:flex;flex-direction:column;gap:12px;-webkit-user-select:none;user-select:none;transition:opacity .2s ease,transform .2s ease,box-shadow var(--transition-med);transform:translateY(10px);opacity:0}#interaction-guide.visible{opacity:1;transform:translateY(0)}.guide-item{display:flex;justify-content:flex-end;align-items:center;gap:24px}.guide-divider{height:1px;background:var(--color-border);margin:2px 0}.guide-desc{font-size:12px;font-weight:500;color:var(--color-text-dim)}.guide-action{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--color-accent);text-align:right;min-width:44px}#gizmo-container{position:absolute;bottom:64px;left:24px;width:120px;height:120px;z-index:100;pointer-events:auto;cursor:pointer;border-radius:8px;background:transparent;filter:drop-shadow(0 0 14px var(--color-accent-glow));transition:opacity .3s ease,filter .3s ease;user-select:none;-webkit-user-select:none}#gizmo-container:hover{filter:drop-shadow(0 0 22px var(--color-accent-glow))}#gizmo-container canvas{display:block}.gizmo-arrow{position:absolute;width:20px;height:20px;display:flex;align-items:center;justify-content:center;padding-bottom:1.5px;box-sizing:border-box;color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-border);border-radius:50%;font-size:10px;cursor:pointer;z-index:101;opacity:.7;box-shadow:0 0 8px var(--color-accent-glow);transition:opacity .2s,transform .2s,color .2s,box-shadow .2s}.gizmo-arrow:hover{opacity:1;transform:scale(1.2);color:#fff;box-shadow:0 0 16px var(--color-accent-glow)}.gizmo-arrow-top{top:-10px;left:50%;margin-left:-10px}.gizmo-arrow-bottom{bottom:-10px;left:50%;margin-left:-10px;transform:rotate(180deg)}.gizmo-arrow-bottom:hover{transform:rotate(180deg) scale(1.2)}.gizmo-arrow-left{left:-10px;top:50%;margin-top:-10px;transform:rotate(-90deg)}.gizmo-arrow-left:hover{transform:rotate(-90deg) scale(1.2)}.gizmo-arrow-right{right:-10px;top:50%;margin-top:-10px;transform:rotate(90deg)}.gizmo-arrow-right:hover{transform:rotate(90deg) scale(1.2)}.spacemouse-warning{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);padding:.75rem 1.25rem;border-radius:8px;display:flex;align-items:center;gap:.75rem;box-shadow:0 4px 16px #0006,0 0 16px var(--color-accent-glow);z-index:2000;transition:opacity .3s ease,transform .3s ease,box-shadow var(--transition-med)}.spacemouse-warning.hidden{display:none!important}.spacemouse-warning svg{width:20px;height:20px;color:var(--color-accent)}@media(max-width:768px){#ui-panel{width:min(280px,calc(100vw - 48px));max-height:85vh;overflow-y:auto;padding:18px 16px;gap:16px}.file-btn,.mode-btn,.theme-select{min-height:44px}.toggle-btn{min-height:44px;min-width:54px;display:flex;align-items:center;justify-content:flex-end}.toggle-track{transform:scale(1.15)}.range-slider::-webkit-slider-thumb{width:24px;height:24px}.range-slider::-moz-range-thumb{width:24px;height:24px}.range-slider{height:32px}.control-label{font-size:14px}#panel-title{font-size:18px}.icon-btn{min-width:44px;min-height:44px}#btn-info{min-width:44px;min-height:44px;font-size:20px}}.drawing-overlay-root{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:150;overflow:hidden;user-select:none;-webkit-user-select:none}.drawing-canvas{position:absolute;top:0;left:0;width:100%;height:100%;display:block;pointer-events:none}.drawing-overlay-root.active .fore-canvas{pointer-events:auto;cursor:crosshair;touch-action:none}.drawing-overlay-root.active.tool-pen .fore-canvas,.drawing-overlay-root.active.tool-brush .fore-canvas{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M12 19l7-7 3 3-7 7-3-3z" stroke="%23000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z" stroke="%23000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M12 19l7-7 3 3-7 7-3-3z" fill="rgba(255,255,255,0.2)" stroke="%23ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z" fill="rgba(233,84,32,0.4)" stroke="%23ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>') 2 2,crosshair}.drawing-overlay-root.active.tool-arrow .fore-canvas{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><line x1="20" y1="20" x2="4" y2="4" stroke="%23000000" stroke-width="4" stroke-linecap="round"/><polyline points="14 4 4 4 4 14" stroke="%23000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><line x1="20" y1="20" x2="4" y2="4" stroke="%23ffffff" stroke-width="1.8" stroke-linecap="round"/><polyline points="14 4 4 4 4 14" stroke="%23ffffff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>') 4 4,crosshair}.drawing-overlay-root.active.tool-text .fore-canvas{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" stroke="%23000000" stroke-width="3" stroke-linejoin="round"/><polyline points="14 2 14 8 20 8" stroke="%23000000" stroke-width="3" stroke-linejoin="round"/><line x1="16" y1="13" x2="8" y2="13" stroke="%23000000" stroke-width="3" stroke-linecap="round"/><line x1="16" y1="17" x2="8" y2="17" stroke="%23000000" stroke-width="3" stroke-linecap="round"/><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" fill="rgba(254,240,138,0.4)" stroke="%23ffffff" stroke-width="1.5" stroke-linejoin="round"/><polyline points="14 2 14 8 20 8" stroke="%23ffffff" stroke-width="1.5" stroke-linejoin="round"/><line x1="16" y1="13" x2="8" y2="13" stroke="%23ffffff" stroke-width="1.5" stroke-linecap="round"/><line x1="16" y1="17" x2="8" y2="17" stroke="%23ffffff" stroke-width="1.5" stroke-linecap="round"/></svg>') 4 2,cell}.drawing-overlay-root.active.tool-eraser .fore-canvas{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M20 20H7L3 16C2 15 2 13 3 12L13 2C14 1 16 1 17 2L21 6C22 7 22 9 21 10L14 17" stroke="%23000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 13L15 4" stroke="%23000000" stroke-width="3"/><path d="M20 20H7L3 16C2 15 2 13 3 12L13 2C14 1 16 1 17 2L21 6C22 7 22 9 21 10L14 17" fill="rgba(244,63,94,0.4)" stroke="%23ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 13L15 4" stroke="%23ffffff" stroke-width="1.5"/></svg>') 3 16,auto}.drawing-overlay-root.active:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 0 2px var(--color-accent),inset 0 0 24px var(--color-accent-glow);pointer-events:none;opacity:.45;transition:opacity var(--transition-med),box-shadow var(--transition-med)}.sticky-notes-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:155}.sticky-note{position:absolute;min-width:240px;min-height:160px;width:260px;border-radius:8px;box-shadow:0 12px 32px #00000073,0 2px 8px #0003;display:flex;flex-direction:column;pointer-events:auto;user-select:text;-webkit-user-select:text;resize:both;overflow:hidden;transition:box-shadow var(--transition-fast, .18s);animation:notePopIn .18s cubic-bezier(.175,.885,.32,1.275)}.sticky-note:focus-within,.sticky-note.dragging{box-shadow:0 16px 40px #000000a6,0 0 0 2px #00000040;z-index:10}@keyframes notePopIn{0%{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.sticky-note.theme-yellow{background:#fff8a5;color:#1c1917;--header-bg: #fef08a;--fmt-btn-hover: rgba(0, 0, 0, .08)}.sticky-note.theme-green{background:#cbf9d8;color:#14532d;--header-bg: #a7f3d0;--fmt-btn-hover: rgba(0, 0, 0, .08)}.sticky-note.theme-pink{background:#fcd7ec;color:#831843;--header-bg: #fbcfe8;--fmt-btn-hover: rgba(0, 0, 0, .08)}.sticky-note.theme-purple{background:#f1e0ff;color:#581c87;--header-bg: #e9d5ff;--fmt-btn-hover: rgba(0, 0, 0, .08)}.sticky-note.theme-blue{background:#cce9ff;color:#0c4a6e;--header-bg: #bae6fd;--fmt-btn-hover: rgba(0, 0, 0, .08)}.sticky-note.theme-charcoal{background:#2b2b2e;color:#f5f5f5;--header-bg: #38383c;--fmt-btn-hover: rgba(255, 255, 255, .12)}.sticky-note-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 8px 6px 12px;background:var(--header-bg);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;border-bottom:1px solid rgba(0,0,0,.06)}.sticky-note-header:active{cursor:grabbing}.sticky-note-title-input{flex:1;min-width:80px;background:transparent;border:1px solid transparent;border-radius:4px;padding:2px 4px;font-family:inherit;font-size:13px;font-weight:700;color:inherit;outline:none;cursor:text;transition:all var(--transition-fast, .18s)}.sticky-note-title-input:hover{background:#0000000a}.sticky-note-title-input:focus{background:#ffffff4d;border-color:#00000026}.sticky-note.theme-charcoal .sticky-note-title-input:focus{background:#0000004d;border-color:#fff3}.sticky-note-header-actions{display:flex;align-items:center;gap:2px}.sticky-note-hdr-btn{background:transparent;border:none;color:inherit;opacity:.7;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:all var(--transition-fast, .18s)}.sticky-note-hdr-btn:hover{opacity:1;background:#00000014}.sticky-note.theme-charcoal .sticky-note-hdr-btn:hover{background:#ffffff26}.sticky-note-hdr-btn.close:hover{background:#ef4444;color:#fff}.sticky-note-hdr-btn svg{width:14px;height:14px;stroke:currentColor;stroke-width:2.2}.sticky-note-popup{display:none;flex-direction:column;gap:8px;padding:8px 12px;background:var(--header-bg);border-bottom:1px solid rgba(0,0,0,.08);animation:fadeInDown .14s ease-out}.sticky-note-popup.visible{display:flex}.sticky-note-popup-colors{display:flex;align-items:center;justify-content:flex-start;gap:8px}.sticky-note-popup-divider{width:100%;height:1px;background:#00000014}.sticky-note.theme-charcoal .sticky-note-popup-divider{background:#ffffff1f}.sticky-note-popup-formatting{display:flex;align-items:center;gap:4px}.note-color-circle{width:22px;height:22px;border-radius:50%;border:2px solid rgba(0,0,0,.15);cursor:pointer;transition:transform var(--transition-fast, .18s),border-color var(--transition-fast, .18s)}.note-color-circle:hover{transform:scale(1.2);border-color:#0006}.note-color-circle.active{transform:scale(1.2);border-color:#000;box-shadow:0 0 6px #00000059}.sticky-note.theme-charcoal .note-color-circle.active{border-color:#fff;box-shadow:0 0 6px #ffffff80}.fmt-btn{width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:inherit;opacity:.75;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;transition:all var(--transition-fast, .18s)}.fmt-btn:hover{opacity:1;background:var(--fmt-btn-hover)}.fmt-btn.active{opacity:1;background:#00000026}.sticky-note.theme-charcoal .fmt-btn.active{background:#fff3}.fmt-btn svg{width:14px;height:14px;stroke:currentColor;stroke-width:2.2}.sticky-note-body{flex:1;display:flex;flex-direction:column;padding:10px 14px;cursor:text;overflow:visible}.sticky-note-content{flex:1;min-height:80px;outline:none;font-family:var(--font-family, "Inter", -apple-system, sans-serif);font-size:14px;line-height:1.5;color:inherit;white-space:pre-wrap;word-break:break-word;overflow-y:hidden}.sticky-note-content[data-placeholder]:empty:before{content:attr(data-placeholder);opacity:.45;pointer-events:none}.sticky-note-content ul{padding-left:20px;margin:4px 0}.drawing-overlay-root:not(.active) .sticky-note{pointer-events:auto;opacity:.96}.drawing-toolbar{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 8px 32px #00000073,0 0 0 1px var(--color-border),0 0 22px var(--color-accent-glow);pointer-events:auto;z-index:160;transition:transform var(--transition-med),opacity var(--transition-med),box-shadow var(--transition-med)}.drawing-toolbar.minimized{transform:translate(-50%) translateY(calc(100% + 40px));opacity:0;pointer-events:none}.toolbar-group{display:flex;align-items:center;gap:4px}.toolbar-separator{width:1px;height:24px;background:var(--color-border);margin:0 4px}.tool-btn{display:flex;align-items:center;gap:6px;height:36px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-dim);font-family:var(--font-family);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.tool-btn:hover{color:var(--color-text);background:var(--color-surface-hover);border-color:var(--color-border)}.tool-btn.active{color:#fff;background:var(--color-accent);border-color:var(--color-accent-hover);box-shadow:0 0 14px var(--color-accent-glow)}.tool-btn svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.tool-btn.btn-exit:hover{background:color-mix(in srgb,var(--color-danger) 18%,transparent);color:var(--color-danger);border-color:color-mix(in srgb,var(--color-danger) 35%,transparent)}.color-swatch-list{display:flex;align-items:center;gap:6px}.color-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--transition-fast),border-color var(--transition-fast)}.color-swatch:hover{transform:scale(1.15)}.color-swatch.active{border-color:#fff;box-shadow:0 0 8px #fff9;transform:scale(1.15)}.color-wheel-btn{position:relative;width:22px;height:22px;border-radius:50%;border:2px solid transparent;background:conic-gradient(from 0deg,red,#ff8000,#ff0,#0f0,#0ff,#00f,#8000ff,red);background-image:url(/color-spectrum.png);background-origin:border-box;background-size:108% 108%;background-position:center;background-repeat:no-repeat;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),border-color var(--transition-fast);overflow:hidden;flex-shrink:0;box-sizing:border-box}.color-wheel-btn:hover{transform:scale(1.15)}.color-wheel-btn.active{border-color:#fff;box-shadow:0 0 8px #fff9;transform:scale(1.15)}.color-wheel-input{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;width:200%;height:200%;opacity:0;cursor:pointer;border:none;padding:0;z-index:2}.width-slider-container{display:flex;align-items:center;gap:8px;padding:0 4px}.width-slider{width:65px;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff26;border-radius:2px;outline:none;cursor:pointer}.width-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 6px #0006,0 0 8px var(--color-accent-glow)}.width-badge{font-size:11px;font-weight:600;color:var(--color-text-dim);font-family:var(--font-family);min-width:20px;text-align:center}.drawing-status-badge{position:fixed;top:18px;left:50%;transform:translate(-50%);padding:6px 14px;background:var(--color-surface);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--color-accent);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-family);font-size:12px;font-weight:600;letter-spacing:.02em;display:flex;align-items:center;gap:8px;pointer-events:none;z-index:160;box-shadow:0 4px 20px var(--color-accent-glow),0 0 16px var(--color-accent-glow);animation:fadeInDown .2s ease-out}.drawing-status-badge .badge-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 10px var(--color-accent)}.panel-draw-toggle-btn{width:100%;justify-content:center;margin-bottom:.5rem;transition:all var(--transition-fast)}.panel-draw-toggle-btn.active{display:none!important}@keyframes fadeInDown{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}
