:root{--bg-light: #fafafa;--bg-dots-light: #e5e5e5;--node-bg-light: #ffffff;--border-light: #e5e5e5;--text-primary-light: #171717;--text-secondary-light: #737373;--accent-light: #2563eb;--accent-hover-light: #1d4ed8;--prompt-bg-light: #f5f5f5;--postit-bg-light: #fffeca;--shadow-light: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-hover-light: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.04);--bg-dark: #0a0a0a;--bg-dots-dark: #262626;--node-bg-dark: #171717;--border-dark: #262626;--text-primary-dark: #fafafa;--text-secondary-dark: #a3a3a3;--accent-dark: #3b82f6;--accent-hover-dark: #60a5fa;--prompt-bg-dark: #262626;--postit-bg-dark: #4a4a28;--shadow-dark: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow-hover-dark: 0 4px 6px rgba(0,0,0,.4), 0 2px 4px rgba(0,0,0,.3);--font-sans: "Courier Prime", monospace;--font-mono: "Courier Prime", monospace;--font-hand: "Courier Prime", monospace;--font-display: "Courier Prime", monospace;--font-body: "Courier Prime", monospace;--transition-base: all .2s cubic-bezier(.4, 0, .2, 1)}html.light{--bg-color: var(--bg-light);--bg-dots: var(--bg-dots-light);--node-bg: var(--node-bg-light);--border-color: var(--border-light);--text-primary: var(--text-primary-light);--text-secondary: var(--text-secondary-light);--accent-color: var(--accent-light);--accent-hover: var(--accent-hover-light);--prompt-bg: var(--prompt-bg-light);--postit-bg: var(--postit-bg-light);--shadow: var(--shadow-light);--shadow-hover: var(--shadow-hover-light)}html.dark{--bg-color: var(--bg-dark);--bg-dots: var(--bg-dots-dark);--node-bg: var(--node-bg-dark);--border-color: var(--border-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--accent-color: var(--accent-dark);--accent-hover: var(--accent-hover-dark);--prompt-bg: var(--prompt-bg-dark);--postit-bg: var(--postit-bg-dark);--shadow: var(--shadow-dark);--shadow-hover: var(--shadow-hover-dark)}*{box-sizing:border-box}body{background-color:var(--bg-color);color:var(--text-primary);font-family:var(--font-sans);overflow:auto;overscroll-behavior:none;transition:var(--transition-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#canvas{width:100vw;height:100vh;position:relative;overflow:hidden;cursor:grab;touch-action:none}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--node-bg);padding:2rem;border-radius:16px;width:90%;max-width:480px;border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-content h2{font-size:1.25rem;font-weight:600;margin-bottom:1.5rem;color:var(--text-primary)}.modal-buttons{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.modal-buttons button{padding:.5rem 1.25rem;border-radius:8px;font-size:.875rem;font-weight:500;border:none;cursor:pointer;transition:var(--transition-base)}.modal-buttons .cancel-btn{background-color:var(--prompt-bg);color:var(--text-secondary)}.modal-buttons .cancel-btn:hover{background-color:var(--border-color);color:var(--text-primary)}.modal-buttons .save-btn{background-color:var(--accent-color);color:#fff}.modal-buttons .save-btn:hover{background-color:var(--accent-hover)}#sketch-canvas{border:1px solid var(--border-color);border-radius:8px;cursor:crosshair;touch-action:none;background-color:var(--node-bg-light)}html.dark #sketch-canvas{background-color:var(--node-bg-dark)}.sketch-toolbar{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.sketch-toolbar label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text-secondary)}.sketch-toolbar input[type=color]{width:32px;height:32px;padding:0;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;background-color:transparent}.sketch-toolbar input[type=range]{width:120px}.sketch-toolbar button{background:var(--prompt-bg);border:1px solid var(--border-color);padding:.5rem;border-radius:6px;cursor:pointer;transition:var(--transition-base);display:flex;align-items:center;color:var(--text-secondary)}.sketch-toolbar button:hover{background-color:var(--border-color);color:var(--text-primary)}.sketch-toolbar button.active{background-color:var(--accent-color);color:#fff;border-color:var(--accent-color)}html.dark .youtube-node{background:#282828!important;border:1px solid rgba(255,255,255,.1)}.spotify-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:linear-gradient(135deg,#1db954,#1ed760);color:#fff;border-bottom:1px solid rgba(255,255,255,.1)}.spotify-logo{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1rem}.spotify-tabs{display:flex;gap:.5rem}.spotify-tab{background:none;border:none;color:#ffffffb3;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:var(--transition-base)}.spotify-tab:hover{color:#fff;background:#ffffff1a}.spotify-tab.active{color:#fff;background:#fff3}.spotify-actions{display:flex;align-items:center;gap:.5rem}.spotify-close-btn,.spotify-logout-btn{background:none;border:none;color:#fffc;cursor:pointer;padding:.25rem;border-radius:4px;transition:var(--transition-base);display:flex;align-items:center;justify-content:center}.spotify-close-btn:hover,.spotify-logout-btn:hover{color:#fff;background:#ffffff1a}.spotify-content{padding:1rem;height:calc(100% - 60px);overflow-y:auto;background:#191414}.spotify-auth{background:#191414!important}.spotify-auth-content{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center;color:#fff}.spotify-auth-icon{margin-bottom:1rem}.spotify-auth-content h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.spotify-auth-content p{margin:0 0 1.5rem;color:#ffffffb3;font-size:.875rem}.spotify-login-btn{background:#1db954;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;cursor:pointer;transition:var(--transition-base);display:flex;align-items:center;gap:.5rem}.spotify-login-btn:hover{background:#1ed760;transform:translateY(-1px)}.spotify-player{display:flex;flex-direction:column;gap:1rem;color:#fff}.track-info{display:flex;gap:1rem;align-items:center}.track-artwork{flex-shrink:0}.track-artwork img{width:60px;height:60px;border-radius:8px;object-fit:cover}.track-details{flex:1;min-width:0}.track-name{margin:0 0 .25rem;font-size:.875rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-artist{margin:0 0 .25rem;font-size:.75rem;color:#ffffffb3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-album{margin:0;font-size:.75rem;color:#ffffff80;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-controls{display:flex;align-items:center;justify-content:center;gap:1rem}.control-btn{background:none;border:none;color:#fff;cursor:pointer;padding:.5rem;border-radius:50%;transition:var(--transition-base);display:flex;align-items:center;justify-content:center}.control-btn:hover{background:#ffffff1a;transform:scale(1.1)}.play-btn{background:#1db954;padding:.75rem}.play-btn:hover{background:#1ed760}.volume-control{display:flex;align-items:center;gap:.5rem;color:#ffffffb3}.volume-slider{flex:1;height:4px;background:#fff3;border-radius:2px;outline:none;-webkit-appearance:none}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#1db954;border-radius:50%;cursor:pointer}.volume-slider::-moz-range-thumb{width:16px;height:16px;background:#1db954;border-radius:50%;cursor:pointer;border:none}.no-track{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#ffffffb3;text-align:center}.spotify-search{display:flex;flex-direction:column;gap:1rem;color:#fff}.search-input-container{display:flex;gap:.5rem}.search-input{flex:1;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.5rem .75rem;color:#fff;font-size:.875rem;outline:none;transition:var(--transition-base)}.search-input::placeholder{color:#ffffff80}.search-input:focus{border-color:#1db954;background:#ffffff26}.search-btn{background:#1db954;border:none;border-radius:8px;padding:.5rem .75rem;color:#fff;cursor:pointer;transition:var(--transition-base);display:flex;align-items:center;justify-content:center;min-width:40px}.search-btn:hover:not(:disabled){background:#1ed760}.search-btn:disabled{opacity:.6;cursor:not-allowed}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.search-results{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto}.search-result-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:8px;cursor:pointer;transition:var(--transition-base)}.search-result-item:hover{background:#ffffff1a}.result-artwork{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.result-info{flex:1;min-width:0}.result-info h5{margin:0 0 .25rem;font-size:.75rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-info p{margin:0;font-size:.625rem;color:#ffffffb3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-duration{font-size:.625rem;color:#ffffff80;flex-shrink:0}.spotify-playlists{color:#fff}.playlists-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto}.playlist-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:8px;cursor:pointer;transition:var(--transition-base)}.playlist-item:hover{background:#ffffff1a}.playlist-artwork{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.playlist-info{flex:1;min-width:0}.playlist-info h5{margin:0 0 .25rem;font-size:.75rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-info p{margin:0;font-size:.625rem;color:#ffffffb3}.playlist-arrow{margin-left:auto;opacity:.7}.playlist-tracks,.playlist-header{display:flex;flex-direction:column;gap:.75rem}.back-button{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:#ffffffb3;cursor:pointer;font-size:.75rem;padding:.25rem 0;transition:var(--transition-base)}.back-button:hover{color:#fff}.playlist-info-header{display:flex;align-items:center;gap:.75rem}.playlist-artwork-large{width:60px;height:60px;border-radius:8px;object-fit:cover;flex-shrink:0}.playlist-info-header h4{margin:0;font-size:.875rem;font-weight:600;color:#fff}.playlist-info-header p{margin:.25rem 0 0;font-size:.625rem;color:#ffffffb3}.tracks-list{display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto}.track-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:8px;cursor:pointer;transition:var(--transition-base)}.track-item:hover{background:#ffffff1a}.track-artwork{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0}.track-info{flex:1;min-width:0}.track-info h6{margin:0 0 .25rem;font-size:.75rem;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-info p{margin:0;font-size:.625rem;color:#ffffffb3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-duration{font-size:.625rem;color:#ffffffb3;flex-shrink:0}.input-prompt-clean{position:relative;display:flex;flex-direction:column;width:100%;min-height:100%;padding:1.5rem;gap:.75rem}.input-prompt-header-clean{display:flex;align-items:center;justify-content:space-between;margin-bottom:-.5rem}.input-prompt-label{font-size:.875rem;font-weight:600;color:var(--text-primary);letter-spacing:.025em}.input-close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:.25rem;border-radius:4px;transition:var(--transition-base);display:flex;align-items:center;justify-content:center;font-size:1.25rem;line-height:1}.input-close-btn:hover{color:var(--text-primary);background:var(--prompt-bg)}.input-prompt-field-clean{width:100%;min-height:80px;background:transparent;border:none;outline:none;color:var(--text-primary);font-family:var(--font-sans);font-size:1rem;line-height:1.6;resize:none;padding:0;overflow:hidden}.input-prompt-field-clean::placeholder{color:var(--text-secondary);opacity:.6}.prompt-tags-container{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 0;max-height:250px;overflow-y:auto;overflow-x:hidden}.prompt-tags-container::-webkit-scrollbar{width:6px}.prompt-tags-container::-webkit-scrollbar-track{background:transparent}.prompt-tags-container::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.prompt-tags-container::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.tag-category{display:flex;flex-direction:column;gap:.375rem}.tag-category-label{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.tag-chips{display:flex;flex-wrap:wrap;gap:.375rem}.tag-chip{padding:.25rem .625rem;background:none;border:1px solid var(--border-color);border-radius:12px;font-size:.75rem;color:var(--text-primary);cursor:pointer;transition:var(--transition-base);white-space:nowrap}.tag-chip:hover{background:var(--prompt-bg);border-color:var(--text-secondary)}.tag-chip.selected{background:var(--accent-color);border-color:var(--accent-color);color:#fff}.input-prompt-footer-clean{display:flex;align-items:center;gap:.5rem}.input-prompt-actions-clean{position:relative;display:flex;align-items:center;flex:1;z-index:1}.input-dropdown-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:none;border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-family:var(--font-sans);font-size:.875rem;cursor:pointer;transition:var(--transition-base);width:100%}.input-dropdown-btn:hover{background:var(--prompt-bg);border-color:var(--text-secondary)}.dropdown-icon{display:flex;align-items:center;justify-content:center}.dropdown-icon svg{width:18px;height:18px}.dropdown-label{flex:1;text-align:left;white-space:nowrap}.dropdown-arrow{font-size:.7rem;color:var(--text-secondary);margin-left:.25rem}.input-dropdown-menu{position:absolute;top:calc(100% + .5rem);left:0;right:0;background:var(--node-bg);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;box-shadow:var(--shadow-hover);z-index:1000;animation:slideDownFadeIn .15s ease-out}@keyframes slideDownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.input-dropdown-item{width:100%;display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;background:none;border:none;color:var(--text-primary);font-family:var(--font-sans);font-size:.875rem;text-align:left;cursor:pointer;transition:var(--transition-base);border-bottom:1px solid var(--border-color)}.input-dropdown-item:last-child{border-bottom:none}.input-dropdown-item:hover{background:var(--prompt-bg)}.input-dropdown-item.active{background:var(--accent-color);color:#fff}.input-submit-btn{width:36px;height:36px;background:var(--accent-color);border:none;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-base);color:#fff;flex-shrink:0}.input-submit-btn:hover:not(:disabled){background:var(--accent-hover);transform:scale(1.1)}.input-submit-btn:disabled{opacity:.4;cursor:not-allowed}.input-submit-btn svg{width:16px;height:16px}.input-prompt-submitted-compact{display:flex;flex-direction:column;width:100%;min-height:100%;padding:.75rem 1rem;gap:.5rem;overflow:visible;box-sizing:border-box;min-width:0;max-width:100%}.input-prompt-header-compact{display:flex;align-items:center}.input-prompt-label-compact{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em}.input-prompt-submitted-content{color:var(--text-primary);font-family:var(--font-sans);font-size:.95rem;line-height:1.5;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;width:100%;max-width:100%;box-sizing:border-box;word-break:break-word;overflow:visible;min-width:0;flex:0 1 auto;-webkit-hyphens:auto;hyphens:auto}.loading-content{display:flex;align-items:center;justify-content:center;min-height:150px;padding:2rem}.loading-animation{display:flex;flex-direction:column;align-items:center;gap:1rem}.loading-dots{display:flex;gap:.5rem;align-items:center}.loading-dots span{width:8px;height:8px;background:var(--accent-color);border-radius:50%;animation:loadingBounce 1.4s infinite ease-in-out both}.loading-dots span:nth-child(1){animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes loadingBounce{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.loading-text{margin:0;font-size:.875rem;color:var(--text-secondary);animation:loadingPulse 2s ease-in-out infinite}@keyframes loadingPulse{0%,to{opacity:.5}50%{opacity:1}}.loading-content-media{background:linear-gradient(135deg,var(--bg-color) 0%,var(--prompt-bg) 100%)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spinnerRotate .8s linear infinite}@keyframes spinnerRotate{to{transform:rotate(360deg)}}.branch-badge{position:absolute;top:12px;right:-10px;width:20px;height:20px;background:var(--border-color);border:1px solid var(--node-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-base);z-index:10;box-shadow:0 1px 4px #0000001a;color:var(--text-secondary);opacity:.8}.branch-badge:hover{background:var(--prompt-bg);opacity:1;transform:scale(1.1);box-shadow:0 2px 6px #00000026;color:var(--text-primary)}.branch-badge svg{width:12px;height:12px}.connection-line{animation:linePulse 3s ease-in-out infinite}@keyframes linePulse{0%,to{opacity:.4}50%{opacity:.7}}html.dark .connection-line{filter:brightness(1.1)}html.light .connection-line{filter:brightness(.9)}.node{animation:nodeSlideIn .4s cubic-bezier(.16,1,.3,1) forwards;transform-origin:left center}@keyframes nodeSlideIn{0%{opacity:0;transform:translate(-30px) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}
