.tubesage-processing-modal { width: 150px; height: auto; min-height: 50px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; } .tubesage-transcript-form .error { color: var(--text-error); margin-bottom: var(--size-4-4); padding: var(--size-4-2); background: var(--background-modifier-error); border-radius: var(--radius-s); } .tubesage-error-visible { display: block; } .tubesage-error-hidden { display: none; } .tubesage-error { color: var(--text-normal); margin-top: var(--size-4-2); margin-bottom: var(--size-4-4); padding: var(--size-4-2); background: var(--background-modifier-error); border-radius: var(--radius-s); border: 1px solid var(--background-modifier-error-hover); } .tubesage-validation-visible { display: block; } .tubesage-validation-hidden { display: none; } .tubesage-validation-error { color: var(--text-error); } .tubesage-validation-success { color: var(--text-success); } .tubesage-validation-accent { color: var(--text-accent); } .tubesage-display-block { display: block; } .tubesage-display-none { display: none; } .tubesage-transcript-modal-container, .tubesage-transcript-form { width: 100%; padding: var(--size-4-5); } .tubesage-transcript-form .form-group { margin-bottom: var(--size-4-4); } .tubesage-transcript-form label { display: block; margin-bottom: var(--size-4-1); font-weight: 500; } .tubesage-transcript-form input { display: block; width: 100%; padding: var(--size-4-2); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: var(--background-primary); color: var(--text-normal); } .folder-search-input { width: 100%; padding: var(--size-4-2); margin-bottom: var(--size-4-4); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background-color: var(--background-secondary); color: var(--text-normal); font-size: 14px; } .folder-list { max-height: 300px; overflow-y: auto; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); margin-bottom: var(--size-4-4); background-color: var(--background-primary); } .folder-item { display: flex; align-items: center; padding: var(--size-4-1) var(--size-4-2); cursor: pointer; border-bottom: 1px solid var(--background-modifier-border); font-family: var(--font-interface); transition: background-color 0.1s ease; } .folder-item:hover { background-color: var(--background-modifier-hover); } .folder-item.selected { background-color: var(--background-modifier-hover); font-weight: 500; } .folder-icon { margin-right: var(--size-4-2); font-size: 16px; color: var(--text-accent); opacity: 0.8; } .folder-path { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 14px; } .empty-state { padding: var(--size-4-5); text-align: center; color: var(--text-muted); } .status-container { text-align: center; padding: var(--size-4-5); } .status-text { margin-bottom: var(--size-4-5); color: var(--text-normal); } .close-button, .back-button { display: block; width: 100%; padding: var(--size-4-2); margin-top: var(--size-4-4); background-color: var(--interactive-accent); color: var(--text-on-accent); border: none; border-radius: var(--radius-s); cursor: pointer; } .back-button { background-color: var(--background-modifier-border); color: var(--text-normal); } .error-message { color: var(--text-error); margin: var(--size-4-4) 0; padding: var(--size-4-2); background: var(--background-modifier-error); border-radius: var(--radius-s); } .toggle-container { display: flex; align-items: center; margin: var(--size-4-4) 0; padding: var(--size-4-2); background: var(--background-secondary); border-radius: var(--radius-s); } .toggle-label { flex: 1; font-size: 14px; margin-right: var(--size-4-2); } .summary-info { font-size: 12px; color: var(--text-muted); margin-top: var(--size-4-1); font-style: italic; } .tubesage-spinner { display: flex; justify-content: center; align-items: center; margin: 0 auto; min-height: 40px; font-family: var(--font-monospace); font-size: 14px; color: var(--text-normal); text-align: center; } .channel-options { margin-top: var(--size-4-4); background: var(--background-secondary); padding: var(--size-4-4); border-radius: var(--radius-s); } .channel-options .channel-message { margin-bottom: var(--size-4-2); font-style: italic; font-size: 12px; color: var(--text-muted); font-weight: 400; } .tubesage-process-btn-mobile { width: 100%; } .video-count-dropdown { padding: var(--size-4-1); border-radius: var(--radius-s); width: 60px; } .validation-message { margin-top: var(--size-4-1); font-size: 12px; } .tubesage-settings-container-disabled { opacity: 0.5; pointer-events: none; user-select: none; filter: grayscale(30%); } .tubesage-prompt-textarea.tubesage-prompt-textarea { width: 50%; flex: 0 0 50%; min-width: 300px; max-width: none; min-height: 100px; } .setting-item.tubesage-prompt-setting { display: flex; flex-wrap: nowrap; align-items: flex-start; } .setting-item.tubesage-prompt-setting .setting-item-info { width: 50%; flex: 0 0 50%; padding-right: var(--size-4-4); word-wrap: break-word; overflow-wrap: break-word; } .setting-item.tubesage-prompt-setting .setting-item-control { width: 50%; flex: 0 0 50%; } .tubesage-settings-prompt-subheader { margin-bottom: var(--size-4-2); } .tubesage-settings-prompt-subheader-extensive { margin-top: var(--size-4-5); } .tubesage-settings-info-icon { /* Pin the native setIcon glyph to the 16px the old hand-built SVG used. */ --icon-size: 16px; cursor: help; color: var(--text-muted); /* inline-flex (not flex) so the icon sits inline immediately after the setting title instead of dropping to its own centred line below it. */ display: inline-flex; align-items: center; justify-content: center; margin-left: var(--size-4-1); vertical-align: middle; } .template-list { max-height: 300px; overflow-y: auto; margin-top: var(--size-4-2); } .template-item { padding: var(--size-4-1); cursor: pointer; border-bottom: 1px solid var(--background-modifier-border); font-family: var(--font-interface); transition: background-color 0.1s ease; } .template-item:hover { background-color: var(--background-modifier-hover); } .tubesage-license-container { max-height: 500px; overflow-y: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); margin-top: var(--size-4-2); padding: var(--size-4-5); white-space: pre-wrap; line-height: 1.5; font-family: var(--font-monospace); } .tubesage-license-h3 { margin-top: var(--size-4-4); margin-bottom: var(--size-4-3); font-weight: 600; border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-4-2); } .tubesage-license-list-item { margin-bottom: var(--size-4-2); } .tubesage-license-list-item-title-segment { font-weight: bold; } .tubesage-license-sub-item { margin-left: var(--size-4-5); margin-bottom: 4px; } .tubesage-license-paragraph { margin-bottom: var(--size-4-2); max-width: 100%; word-break: normal; overflow-wrap: normal; white-space: pre-wrap; } .tubesage-license-spacer { height: 8px; } .tubesage-license-close-button { padding: var(--size-4-2) var(--size-4-4); background-color: var(--interactive-accent); color: var(--text-on-accent); border: none; border-radius: var(--radius-s); cursor: pointer; } .tubesage-license-load-error { color: var(--text-error); } .tubesage-license-footer { margin-top: var(--size-4-5); display: flex; justify-content: center; align-items: center; width: 100%; } .tubesage-license-required-title { text-align: center; color: var(--text-error); } .tubesage-license-required-icon-container { text-align: center; margin: var(--size-4-5) 0; } .tubesage-license-required-icon { font-size: 48px; color: var(--text-warning); } .tubesage-license-required-message-container { margin-bottom: var(--size-4-5); text-align: center; line-height: 1.5; } .tubesage-license-required-message-bold { font-weight: bold; margin-bottom: var(--size-4-2); } .tubesage-license-required-steps-container { background-color: var(--background-secondary); padding: var(--size-4-4); border-radius: var(--radius-m); margin-bottom: var(--size-4-5); } .tubesage-license-required-steps-title { font-weight: bold; margin-bottom: var(--size-4-2); } .tubesage-license-required-steps-list { margin-left: var(--size-4-4); margin-top: 0; } .tubesage-license-required-step-item { margin-bottom: var(--size-4-1); } .tubesage-license-required-button-container { display: flex; justify-content: space-between; margin-top: var(--size-4-5); } .tubesage-license-required-button-primary { padding: var(--size-4-2) var(--size-4-3); background-color: var(--interactive-accent); color: var(--text-on-accent); border: none; border-radius: var(--radius-s); cursor: pointer; flex: 1; margin-right: var(--size-4-2); } .tubesage-license-required-button-secondary { padding: var(--size-4-2) var(--size-4-3); background-color: var(--background-modifier-border); color: var(--text-normal); border: none; border-radius: var(--radius-s); cursor: pointer; flex: 1; margin-left: var(--size-4-2); } .tubesage-readme-modal-size.modal { width: 800px; max-width: 85vw; max-height: 90vh; overflow-y: auto; } .tubesage-readme-container { max-height: 550px; overflow-y: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); margin-top: var(--size-4-2); padding: var(--size-4-5); white-space: pre-wrap; line-height: 1.6; font-family: var(--font-interface); } .code-block-container { background: var(--background-secondary); border-radius: var(--radius-s); padding: var(--size-4-2); margin: var(--size-4-2) 0; overflow-x: auto; } .tubesage-readme-code-lang { font-size: 12px; color: var(--text-muted); margin-bottom: 4px; font-family: var(--font-monospace); } .tubesage-readme-code-pre { margin: 0; overflow-x: auto; } .tubesage-readme-code-inline { font-family: var(--font-monospace); display: block; } .tubesage-readme-h1 { margin-top: var(--size-4-4); margin-bottom: var(--size-4-3); font-weight: 700; border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-4-2); font-size: 1.8em; } .tubesage-readme-h2 { margin-top: var(--size-4-4); margin-bottom: var(--size-4-2); font-weight: 600; font-size: 1.5em; } .tubesage-readme-h3 { margin-top: 14px; margin-bottom: var(--size-4-2); font-weight: 600; font-size: 1.2em; } .tubesage-readme-h4 { margin-top: var(--size-4-3); margin-bottom: 6px; font-weight: 600; font-size: 1.1em; } .tubesage-readme-list-item { margin: 4px 0 4px var(--size-4-5); display: flex; } .tubesage-readme-list-bullet { margin-right: 6px; } .tubesage-readme-link { color: var(--text-accent); text-decoration: none; } .tubesage-readme-paragraph { margin-bottom: var(--size-4-3); max-width: 100%; line-height: 1.6; } .tubesage-readme-spacer { height: 8px; } .tubesage-modal-controls-container { display: flex; margin-bottom: var(--size-4-4); width: 100%; } .tubesage-modal-controls-container-mobile { flex-direction: column; gap: var(--size-4-3); } .tubesage-modal-controls-container-desktop { align-items: center; flex-wrap: nowrap; gap: var(--size-4-4); flex-direction: row; white-space: nowrap; } .tubesage-modal-radio-option, .tubesage-modal-limited-option-container { flex: 0 0 auto; white-space: nowrap; } .tubesage-modal-controls-container-desktop > * { flex: 0 0 auto; } .tubesage-modal-limited-option-container { display: flex; align-items: center; gap: var(--size-4-2); flex: 0 0 auto; } .tubesage-modal-limited-option-container-mobile { justify-content: flex-start; width: 100%; } .tubesage-modal-radio-option { display: flex; align-items: center; white-space: nowrap; } .tubesage-modal-radio-option-mobile { justify-content: flex-start; } .tubesage-modal-radio-label { cursor: pointer; margin-right: var(--size-4-1); } .tubesage-modal-process-btn-container { margin-left: auto; } .tubesage-modal-process-btn-container-mobile { width: 100%; display: flex; justify-content: flex-start; margin-top: var(--size-4-1); margin-left: 0; } .tubesage-template-view-modal-size.modal { width: 700px; max-width: 80vw; } .tubesage-template-view-title { font-size: 18px; line-height: 1.4; } .tubesage-template-view-container { max-height: 500px; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: var(--size-4-5); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); margin-top: var(--size-4-2); white-space: pre-wrap; font-family: var(--font-monospace); line-height: 1.5; } .tubesage-template-view-container-short { max-height: 250px; } .tubesage-template-view-copy-container { display: flex; justify-content: flex-end; width: 100%; margin-left: auto; text-align: right; margin-top: var(--size-4-2); margin-bottom: var(--size-4-2); --icon-size: 16px; } .tubesage-template-view-copy-text { font-size: 14px; margin-right: var(--size-4-2); cursor: pointer; } .tubesage-template-view-explanation { margin-top: var(--size-4-4); font-style: italic; color: var(--text-muted); } .tubesage-template-view-variables-container { margin-top: var(--size-4-4); border: 1px solid var(--background-modifier-border); padding: var(--size-4-4); border-radius: var(--radius-s); } .tubesage-settings-support-container { display: flex; flex-direction: column; align-items: center; text-align: center; margin-top: var(--size-4-2); margin-bottom: var(--size-4-8); } .tubesage-settings-support-heading { margin-bottom: var(--size-4-2); } .tubesage-settings-support-desc { margin-bottom: var(--size-4-3); color: var(--text-muted); font-size: 13px; } .tubesage-settings-bmc-container { margin: var(--size-4-3) 0; } .tubesage-settings-bmc-img { height: 40px; width: 145px; max-width: 145px; display: block; } .tubesage-settings-action-buttons-container { display: flex; flex-wrap: nowrap; justify-content: center; align-items: center; gap: var(--size-4-5); width: 100%; margin-bottom: var(--size-4-4); } .tubesage-settings-action-button-item-container { display: flex; justify-content: center; align-items: center; flex: 0 0 auto; --icon-size: 16px; } .tubesage-settings-action-button-label { font-size: 14px; margin-right: var(--size-4-2); } .tubesage-settings-heading-container { display: flex; align-items: center; gap: var(--size-4-2); } .setting-item-heading.tubesage-heading .setting-item-name { font-size: 1.4em; font-weight: 600; color: var(--text-accent); margin-bottom: var(--size-4-1); display: flex; align-items: center; justify-content: flex-start; gap: var(--size-4-3); } .setting-item-heading.tubesage-heading { margin-top: var(--size-4-2); margin-bottom: var(--size-4-1); padding-bottom: 2px; } .setting-item-heading.tubesage-heading .setting-item-info { text-align: left; justify-content: flex-start; } /* Provider header row — name + description only, no controls */ .tubesage-provider-header.tubesage-provider-header { padding-bottom: 4px; border-bottom: none; margin-bottom: 0; } .tubesage-provider-header .setting-item-control { display: none; } /* Provider controls row — API key, dropdown, refresh, custom model */ .tubesage-provider-controls.tubesage-provider-controls { border-top: none; padding-top: 4px; } .tubesage-provider-controls .setting-item-info { display: none; } /* Make the control row a single flex line filling full width */ .tubesage-provider-controls .setting-item-control { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; gap: 6px; width: 100%; } /* API key input and custom model input share space equally */ .tubesage-provider-controls .setting-item-control input[type="text"], .tubesage-provider-controls .setting-item-control input[type="password"] { flex: 1 1 0; min-width: 0; width: auto; } /* Model dropdown shares space equally */ .tubesage-provider-controls .setting-item-control select { flex: 1 1 0; min-width: 0; width: auto; } /* Refresh button stays fixed size */ .tubesage-provider-controls .setting-item-control button { flex: 0 0 auto; width: auto; } .tubesage-folder-picker-status-error { font-size: 12px; color: var(--text-error); text-align: center; margin-bottom: var(--size-4-2); } .tubesage-folder-picker-status-info { font-size: 12px; color: var(--text-muted); text-align: center; margin-bottom: var(--size-4-2); } .tubesage-license-modal-size.modal, .tubesage-readme-modal-size.modal { width: 700px; max-width: 80vw; max-height: 650px; overflow-y: hidden; } .tubesage-license-required-modal-size.modal { width: 500px; max-width: 80vw; max-height: 650px; overflow-y: auto; } /* Custom model parameters container */ .tubesage-custom-model-params { margin-top: var(--size-4-2); padding: var(--size-4-4); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); background-color: var(--background-secondary); } .tubesage-custom-params-header { margin: 0 0 var(--size-4-4); font-size: 16px; font-weight: 600; color: var(--text-accent); border-bottom: 1px solid var(--background-modifier-border); padding-bottom: var(--size-4-2); } /* Mobile optimizations */ @media (max-width: 768px) { /* Mobile-specific styles for custom model parameters */ .tubesage-custom-model-params { padding: var(--size-4-3); margin-top: var(--size-4-2); } .tubesage-custom-params-header { font-size: 15px; margin-bottom: var(--size-4-3); } /* Fix the modal container size on mobile - this is the real issue */ .tubesage-processing-modal.tubesage-processing-modal { width: fit-content; min-width: auto; max-width: fit-content; padding: var(--size-4-2); margin: 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; } /* Mobile-responsive prompt textareas */ .tubesage-prompt-textarea.tubesage-prompt-textarea { width: 100%; flex: 1; min-width: 0; max-width: 100%; min-height: 120px; margin-top: var(--size-4-2); } .setting-item.tubesage-prompt-setting { display: flex; flex-direction: column; flex-wrap: wrap; align-items: stretch; } .setting-item.tubesage-prompt-setting .setting-item-info { width: 100%; flex: 1; padding-right: 0; margin-bottom: var(--size-4-2); word-wrap: break-word; overflow-wrap: break-word; } .setting-item.tubesage-prompt-setting .setting-item-control { width: 100%; flex: 1; } /* Better spacing for mobile settings */ .setting-item.setting-item { padding: 18px 0; } /* Smaller modals on mobile */ .tubesage-license-modal-size.modal, .tubesage-readme-modal-size.modal { width: 95vw; max-width: 95vw; max-height: 85vh; } .tubesage-license-required-modal-size.modal { width: 90vw; max-width: 90vw; max-height: 85vh; } /* Template viewer: give the modal a mobile size and the content box a definite height so a usable portion of the template shows and scrolls. flex-shrink:0 is essential — the mobile modal content is a flex column, and without it the flex algorithm squeezes this box down to ~2 lines to make room for the sibling elements (title, copy row, variables list). */ .tubesage-template-view-modal-size.modal { width: 95vw; max-width: 95vw; max-height: 85vh; } .tubesage-template-view-container { flex-shrink: 0; height: 50vh; max-height: 50vh; } } .tubesage-divider { height: 1px; background-color: var(--background-modifier-border); margin: var(--size-4-3) 0; } .tubesage-row-end { display: flex; justify-content: flex-end; width: 100%; margin-left: auto; }