:root { --rip-ink: #2f180f; --rip-brown-900: #3a1d12; --rip-brown-800: #552919; --rip-brown-700: #6f3922; --rip-brown-600: #8e4d2d; --rip-gold-400: #d49c56; --rip-gold-300: #e7c17e; --rip-gold-200: #f2dcad; --rip-cream-100: #fbf2df; --rip-cream-50: #fffaf0; --rip-border: #d9bc8d; --rip-muted: #6a4d38; --rip-panel: #fffaf1; --rip-panel-soft: #fdf5e7; /* PrimeReact theme tokens */ --primary-color: var(--rip-brown-600); --primary-color-text: #fff7e9; --primary-50: #fef6ec; --primary-100: #f3d9b2; --primary-200: #e7bd87; --primary-300: #daa05c; --primary-400: #cd8331; --primary-500: #b56a2a; --primary-600: #965724; --primary-700: #77431c; --primary-800: #583015; --primary-900: #391e0d; --green-50: #fcf7ee; --green-100: #f4dec0; --green-200: #ebc594; --green-300: #e1ac68; --green-400: #d8933d; --green-500: #bf7832; --green-600: #9f642a; --green-700: #7f4f21; --green-800: #603a18; --green-900: #402510; --yellow-50: #fff8e9; --yellow-100: #f9e2b3; --yellow-200: #f2cb7f; --yellow-300: #ebb54c; --yellow-400: #e49e19; --yellow-500: #ca8616; --yellow-600: #a66f12; --yellow-700: #83580e; --yellow-800: #60410a; --yellow-900: #3d2a06; --blue-50: #f8f4ee; --blue-100: #e7d8c0; --blue-200: #d7bd96; --blue-300: #c7a16d; --blue-400: #b78643; --blue-500: #9d6d38; --blue-600: #825a2e; --blue-700: #664623; --blue-800: #4b3319; --blue-900: #301f0f; --red-50: #fdf2ed; --red-100: #f3cec0; --red-200: #eaa995; --red-300: #e18569; --red-400: #d7613e; --red-500: #bf4f33; --red-600: #9f422a; --red-700: #7f3521; --red-800: #602818; --red-900: #401b10; --surface-ground: #f2e7d1; --surface-section: var(--rip-cream-100); --surface-card: var(--rip-panel); --surface-overlay: #fffaf2; --surface-border: var(--rip-border); --surface-hover: #f4e7d0; --focus-ring: 0 0 0 0.2rem rgba(182, 107, 44, 0.35); --text-color: var(--rip-ink); --text-color-secondary: var(--rip-muted); --highlight-bg: var(--rip-gold-200); --highlight-text-color: var(--rip-brown-900); font-family: 'Source Sans 3', 'Segoe UI', sans-serif; color: var(--rip-ink); background: radial-gradient(circle at 12% 8%, #f8e3bc 0%, #f8ecd4 35%, #fdf8ee 68%, #fffdf8 100%); line-height: 1.4; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; background: inherit; color: var(--rip-ink); overflow-x: hidden; } .app-shell { min-height: 100vh; display: flex; flex-direction: column; } .app-header { padding: 0.95rem 1.25rem; border-bottom: 1px solid var(--rip-border); background: linear-gradient(105deg, #f1d09b 0%, #e1af6d 32%, #d89d57 60%, #be7441 100%); box-shadow: 0 8px 18px rgba(58, 29, 18, 0.12); display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; } .brand-block { display: flex; align-items: center; gap: 0.85rem; } .brand-logo { width: 72px; height: 72px; object-fit: contain; filter: drop-shadow(0 5px 9px rgba(58, 29, 18, 0.28)); } .brand-copy h1 { margin: 0; font-size: 1.75rem; line-height: 1.05; color: var(--rip-brown-900); } .brand-copy p { margin: 0.28rem 0 0; font-size: 0.92rem; color: var(--rip-brown-700); letter-spacing: 0.02em; } .brand-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem; } .app-version { display: inline-flex; align-items: center; min-height: 1.35rem; padding: 0.1rem 0.45rem; border: 1px solid rgba(58, 29, 18, 0.18); border-radius: 999px; background: rgba(255, 250, 240, 0.45); color: rgba(58, 29, 18, 0.72); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.03em; white-space: nowrap; } .nav-buttons { display: flex; gap: 0.5rem; flex-wrap: wrap; } .nav-btn.p-button { border-color: rgba(58, 29, 18, 0.36); color: var(--rip-brown-900); } .nav-btn.p-button:not(.p-button-outlined) { background: var(--rip-brown-700); border-color: var(--rip-brown-700); color: #fff8eb; } .nav-btn.p-button.p-button-outlined { background: rgba(255, 247, 232, 0.45); } .nav-btn.p-button.p-button-outlined:hover { background: rgba(255, 247, 232, 0.78); border-color: var(--rip-brown-700); color: var(--rip-brown-900); } .nav-btn-active.p-button { box-shadow: 0 0 0 1px rgba(58, 29, 18, 0.3); } .app-main { width: min(1280px, 96vw); margin: 1rem auto 2rem; } .page-grid { display: grid; gap: 1rem; } .page-grid > * { min-width: 0; } .page-grid .p-card, .page-grid .p-card .p-card-body, .page-grid .p-card .p-card-content { min-width: 0; } .status-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; } .status-row span { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .progress-wrap { margin-bottom: 1rem; } .actions-row { display: flex; gap: 0.5rem; flex-wrap: wrap; } .settings-expert-toggle { display: inline-flex; align-items: center; gap: 0.55rem; padding: 0.45rem 0.7rem; border: 1px solid var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); } .settings-expert-toggle > span { font-size: 0.9rem; font-weight: 600; white-space: nowrap; } .hardware-monitor-head { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-bottom: 0.7rem; } .hardware-monitor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; align-items: stretch; } .hardware-monitor-block { border: 1px solid var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); padding: 0.65rem; display: grid; gap: 0.55rem; align-content: start; } .hardware-monitor-block h4 { margin: 0; } .hardware-monitor-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.35rem 0.55rem; } .hardware-cpu-summary { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: stretch; } .hardware-cpu-chip { display: inline-flex; align-items: center; gap: 0.35rem; border: 1px solid var(--rip-border); border-radius: 999px; background: var(--rip-panel); padding: 0.22rem 0.55rem; font-size: 0.8rem; font-weight: 600; min-height: 2rem; height: 2rem; white-space: nowrap; } .hardware-cpu-chip span { line-height: 1; } .hardware-cpu-chip .pi { font-size: 0.82rem; color: var(--rip-brown-700); } .hardware-cpu-load-group { display: inline-flex; align-items: center; gap: 0.25rem; } .hardware-cpu-core-toggle-btn { border: 1px solid var(--rip-border); background: var(--rip-panel); color: var(--rip-brown-700); width: 2rem; min-width: 2rem; height: 2rem; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; } .hardware-cpu-core-toggle-btn:hover { background: #f1e1c8; } .hardware-cpu-core-toggle-btn .pi { font-size: 0.78rem; } .hardware-monitor-meta > div, .hardware-core-item, .hardware-gpu-item, .hardware-storage-item { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .hardware-core-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.45rem; } .hardware-core-item { border: 1px dashed var(--rip-border); border-radius: 0.4rem; padding: 0.42rem 0.5rem; background: var(--rip-panel); display: grid; gap: 0.12rem; } .hardware-core-grid.compact { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.32rem; } .hardware-core-item.compact { grid-template-columns: auto auto auto; align-items: center; justify-content: start; gap: 0.35rem; padding: 0.3rem 0.45rem; text-align: left; } .hardware-core-title { font-size: 0.74rem; font-weight: 700; color: var(--rip-brown-700); min-width: 2.2rem; } .hardware-core-metric { display: inline-flex; align-items: center; gap: 0.28rem; justify-self: start; } .hardware-core-metric .pi { font-size: 0.72rem; color: var(--rip-muted); } .hardware-gpu-list, .hardware-storage-list { display: grid; gap: 0.45rem; } .hardware-gpu-item, .hardware-storage-item { border: 1px dashed var(--rip-border); border-radius: 0.45rem; padding: 0.45rem 0.55rem; background: var(--rip-panel); display: grid; gap: 0.15rem; } .hardware-storage-item.compact { gap: 0.3rem; } .hardware-storage-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 0.5rem; } .hardware-storage-head strong { display: block; min-width: 0; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .hardware-storage-percent { font-size: 0.74rem; font-weight: 700; border-radius: 999px; padding: 0.1rem 0.45rem; border: 1px solid transparent; white-space: nowrap; justify-self: end; align-self: start; } .hardware-storage-percent.tone-ok { color: #18643a; background: #d8f1df; border-color: #9ed5ad; } .hardware-storage-percent.tone-warn { color: #7d4f00; background: #f8ebc4; border-color: #d7b46a; } .hardware-storage-percent.tone-high { color: #8e3d00; background: #f5dcc9; border-color: #d9a578; } .hardware-storage-percent.tone-critical { color: #8f1f17; background: #f6d6d5; border-color: #d89a97; } .hardware-storage-percent.tone-unknown { color: #5b4636; background: #eadfcc; border-color: #c8ad88; } .hardware-storage-bar .p-progressbar { height: 0.5rem; background: #eadbc1; } .hardware-storage-bar.tone-ok .p-progressbar-value { background: #2d9c4e; } .hardware-storage-bar.tone-warn .p-progressbar-value { background: #c58f00; } .hardware-storage-bar.tone-high .p-progressbar-value { background: #d6761f; } .hardware-storage-bar.tone-critical .p-progressbar-value { background: #c43c2e; } .hardware-storage-bar.tone-unknown .p-progressbar-value { background: #8a6a53; } .hardware-storage-summary { display: flex; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; } .hardware-storage-path { color: var(--rip-muted); } .hardware-storage-paths { display: flex; flex-wrap: wrap; gap: 0.25rem 0.4rem; align-items: baseline; margin-top: 0.1rem; } .hardware-storage-label-tag { color: var(--rip-muted); font-weight: 600; white-space: nowrap; } .pipeline-queue-meta { display: flex; gap: 0.45rem; flex-wrap: wrap; margin-bottom: 0.7rem; } .pipeline-queue-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; } .pipeline-queue-col { border: 1px solid var(--rip-border); border-radius: 0.5rem; padding: 0.55rem 0.6rem; background: var(--rip-panel-soft); display: grid; align-content: start; grid-auto-rows: min-content; gap: 0.45rem; } .pipeline-queue-col h4 { margin: 0; } .pipeline-queue-col-header { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; } .queue-add-entry-btn { background: none; border: 1px solid var(--rip-border); border-radius: 0.35rem; color: var(--rip-muted); cursor: pointer; font-size: 0.75rem; padding: 0.15rem 0.5rem; display: flex; align-items: center; gap: 0.25rem; transition: color 0.12s, border-color 0.12s, background 0.12s; white-space: nowrap; } .queue-add-entry-btn:hover { color: var(--rip-primary, #6366f1); border-color: var(--rip-primary, #6366f1); background: var(--rip-panel); } .queue-empty-hint { color: var(--rip-muted); font-size: 0.82rem; } .script-results-grid { display: flex; flex-direction: column; gap: 0.75rem; } .script-summary-block { display: flex; flex-direction: column; gap: 0.3rem; } .script-summary-counts { display: flex; gap: 0.6rem; font-size: 0.82rem; margin-left: 0.2rem; } .script-summary-counts .tone-success { color: #1c8a3a; font-weight: 600; } .script-summary-counts .tone-danger { color: #9c2d2d; font-weight: 600; } .script-summary-counts .tone-warning { color: #b45309; font-weight: 600; } .script-result-list { display: flex; flex-direction: column; gap: 0.25rem; margin-left: 0.5rem; margin-top: 0.15rem; } .script-result-row { display: flex; align-items: center; gap: 0.5rem; font-size: 0.83rem; } .script-result-name { flex: 1; color: var(--rip-text); } .script-result-status { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; } .script-result-status.tone-success { color: #1c8a3a; } .script-result-status.tone-danger { color: #9c2d2d; } .script-result-status.tone-warning { color: #b45309; } .script-result-error { font-size: 0.75rem; color: #9c2d2d; font-style: italic; } .job-step-inline-warn { display: inline-flex; align-items: center; gap: 0.28rem; color: #b45309; font-weight: 600; font-size: 0.8rem; } .job-step-inline-warn .pi { font-size: 0.85rem; } .pipeline-queue-item { border: 1px dashed var(--rip-border); border-radius: 0.45rem; padding: 0.42rem 0.5rem; background: var(--rip-panel); display: grid; gap: 0.15rem; } .pipeline-queue-item.running { border-style: solid; } .pipeline-queue-item.queue-job-item { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.45rem; } .pipeline-queue-item.queued { grid-template-columns: auto auto minmax(0, 1fr) auto; align-items: center; gap: 0.45rem; } .pipeline-queue-item.queued.non-job { border-style: dotted; background: var(--rip-surface); opacity: 0.92; } .pipeline-queue-type-icon { font-size: 0.82rem; color: var(--rip-muted); flex-shrink: 0; } .queue-job-tag { font-size: 0.72rem; color: var(--rip-muted); margin-left: 0.3rem; vertical-align: middle; } .pipeline-queue-item-actions { display: inline-flex; align-items: center; gap: 0.15rem; } .queue-job-expand-btn { width: 1.6rem; height: 1.6rem; border: 1px solid var(--rip-border); border-radius: 0.35rem; background: transparent; color: var(--rip-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; } .queue-job-expand-btn:hover { border-color: var(--rip-brown-600); color: var(--rip-brown-700); background: var(--rip-surface); } .queue-job-script-details { margin-top: 0.2rem; border: 1px dashed var(--rip-border); border-radius: 0.4rem; background: var(--rip-panel-soft); padding: 0.4rem 0.5rem; display: grid; gap: 0.3rem; } .queue-job-script-group { display: grid; gap: 0.1rem; } .queue-job-script-group strong { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; color: var(--rip-muted); } .queue-job-script-group small { font-size: 0.8rem; color: var(--rip-ink); white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .pipeline-queue-entry-wrap { display: flex; flex-direction: column; gap: 0; } .queue-insert-btn { align-self: center; background: none; border: 1px dashed var(--rip-border); border-radius: 999px; color: var(--rip-muted); cursor: pointer; font-size: 0.7rem; line-height: 1; padding: 0.1rem 0.5rem; margin: 0.15rem auto; opacity: 0.4; transition: opacity 0.15s; } .queue-insert-btn:hover { opacity: 1; color: var(--rip-primary, #6366f1); border-color: var(--rip-primary, #6366f1); } .pipeline-queue-empty { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; } .queue-insert-dialog-body { display: flex; flex-direction: column; gap: 1rem; } .queue-insert-dialog-hint { margin: 0; font-size: 0.82rem; color: var(--rip-muted); } .queue-insert-section { display: flex; flex-direction: column; gap: 0.4rem; padding-top: 0.5rem; border-top: 1px solid var(--rip-border); } .queue-insert-section:first-of-type { border-top: none; } .queue-insert-options { display: flex; flex-wrap: wrap; gap: 0.35rem; } .queue-insert-option { background: var(--rip-surface); border: 1px solid var(--rip-border); border-radius: 0.35rem; color: inherit; cursor: pointer; font-size: 0.82rem; padding: 0.3rem 0.65rem; transition: background 0.12s; } .queue-insert-option:hover { background: var(--rip-panel); border-color: var(--rip-primary, #6366f1); } .queue-insert-wait-row { display: flex; align-items: center; gap: 0.5rem; } .pipeline-queue-item.queued.dragging { opacity: 0.65; } .pipeline-queue-item-main { min-width: 0; display: grid; gap: 0.15rem; } .pipeline-queue-item-main strong, .pipeline-queue-item-main small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pipeline-queue-drag-handle { cursor: grab; color: var(--rip-muted); font-size: 0.9rem; border: 1px solid transparent; border-radius: 0.3rem; padding: 0.2rem; } .pipeline-queue-drag-handle.disabled { opacity: 0.45; cursor: not-allowed; } .pipeline-queue-remove-btn { width: 1.9rem; height: 1.9rem; } .dashboard-job-list { display: grid; gap: 0.6rem; } .dashboard-job-row { width: 100%; border: 1px solid var(--rip-border); border-radius: 0.55rem; padding: 0.6rem 0.7rem; background: var(--rip-panel-soft); display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 0.7rem; align-items: center; text-align: left; color: var(--rip-ink); cursor: pointer; } .dashboard-job-row:hover { border-color: var(--rip-brown-600); background: #fbf0df; } .dashboard-job-row-content { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.3rem 0.7rem; align-items: start; } .dashboard-job-row-main { display: grid; gap: 0.3rem; min-width: 0; } .dashboard-job-row-main strong, .dashboard-job-row-main small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dashboard-job-title-line { display: inline-flex; align-items: center; gap: 0.4rem; min-width: 0; } .dashboard-job-title-line > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .media-indicator-icon { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; display: inline-block; } .dashboard-job-row-progress { grid-column: 1 / -1; display: grid; gap: 0.2rem; } .dashboard-job-row-progress .p-progressbar { height: 0.42rem; } .dashboard-job-row-progress small { color: var(--rip-muted); white-space: normal; } .dashboard-job-badges { display: flex; align-items: center; gap: 0.35rem; flex-wrap: nowrap; justify-content: flex-end; } .job-step-checks { display: inline-flex; align-items: center; gap: 0.4rem; } .job-step-inline-ok { display: inline-flex; align-items: center; gap: 0.28rem; color: #1c8a3a; font-weight: 600; font-size: 0.8rem; } .job-step-inline-ok .pi { font-size: 0.85rem; } .job-step-inline-no { display: inline-flex; align-items: center; gap: 0.28rem; color: #9c2d2d; font-weight: 600; font-size: 0.8rem; } .job-step-inline-no .pi { font-size: 0.85rem; } .job-step-cell { display: inline-flex; align-items: center; gap: 0.4rem; } .job-step-ok-icon { color: #1c8a3a; } .muted-inline { color: var(--rip-muted); display: block; } .dashboard-job-poster-fallback { display: flex; align-items: center; justify-content: center; font-size: 0.56rem; color: var(--rip-muted); background: #f6ebd6; } .dashboard-job-expanded { border: 1px solid var(--rip-border); border-radius: 0.6rem; padding: 0.6rem; background: var(--rip-panel-soft); display: grid; gap: 0.6rem; } .dashboard-job-expanded-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; } .dashboard-job-expanded-title { display: grid; gap: 0.35rem; } .playlist-waiting-box { margin-top: 0.75rem; padding: 0.6rem 0.7rem; border: 1px solid var(--rip-border); border-radius: 0.45rem; background: var(--rip-panel-soft); display: grid; gap: 0.25rem; } .playlist-title-choice-list { display: grid; gap: 0.3rem; margin-top: 0.25rem; } .playlist-title-choice { display: grid; gap: 0.12rem; } .playlist-title-choice label { display: flex; align-items: flex-start; gap: 0.45rem; } .playlist-title-choice input { margin-top: 0.2rem; } .playlist-recommendation-box { border: 1px solid var(--rip-border); border-radius: 0.45rem; background: var(--rip-panel-soft); padding: 0.5rem 0.65rem; display: grid; gap: 0.2rem; } .dialog-actions { margin-top: 1rem; display: flex; justify-content: flex-end; gap: 0.5rem; flex-wrap: wrap; } .playlist-selection-box { margin-top: 0.9rem; padding: 0.75rem; border: 1px solid var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); display: grid; gap: 0.45rem; } .playlist-selection-box h4 { margin: 0; } .playlist-candidate-list { display: grid; gap: 0.2rem; } .search-row { display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; margin-bottom: 0.75rem; } .metadata-grid { margin-top: 0.75rem; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.5rem; } .cd-rip-config-panel { display: grid; gap: 0.85rem; } .cd-meta-summary { border: 1px solid var(--rip-border); border-radius: 0.45rem; background: var(--rip-panel-soft); padding: 0.55rem 0.65rem; display: grid; gap: 0.35rem; } .cd-media-meta-layout { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.75rem; align-items: start; } .cd-cover-wrap { width: 7rem; min-width: 7rem; border: 1px solid var(--rip-border); border-radius: 0.45rem; overflow: hidden; background: #fff; } .cd-cover-image { display: block; width: 100%; height: auto; aspect-ratio: 1/1; object-fit: cover; } .cd-format-field { display: grid; gap: 0.35rem; } .cd-format-field label { font-weight: 600; } .cd-format-field small { color: var(--rip-muted); } .cd-track-selection { border: 1px solid var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); padding: 0.65rem; display: grid; gap: 0.55rem; } .cd-track-list { overflow-x: auto; } .cd-track-table { width: 100%; min-width: 44rem; border-collapse: collapse; } .cd-track-table th, .cd-track-table td { border-bottom: 1px solid var(--rip-border); padding: 0.45rem 0.5rem; text-align: left; vertical-align: middle; } .cd-track-table thead th { color: var(--rip-muted); font-size: 0.8rem; letter-spacing: 0.02em; text-transform: uppercase; } .cd-track-table tbody tr.selected { background: rgba(175, 114, 7, 0.09); } .cd-track-table td.check, .cd-track-table th.check { width: 4.5rem; text-align: center; } .cd-track-table td.num, .cd-track-table th.num { width: 4rem; white-space: nowrap; } .cd-track-table td.duration, .cd-track-table th.duration { width: 5.5rem; white-space: nowrap; } .cd-track-table td.status, .cd-track-table th.status { width: 6.5rem; white-space: nowrap; text-align: center; } .cd-track-table td.artist .p-inputtext, .cd-track-table td.title .p-inputtext { width: 100%; } .device-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; } .settings-grid { display: grid; gap: 1rem; } .settings-tabview { margin-top: 0.75rem; } .settings-root-tabview { margin-top: 0.75rem; } .settings-root-tabview .p-tabview-panels { padding: 1rem 0 0; } .settings-tabview .p-tabview-panels { padding: 1rem 0 0; } .settings-sections { display: grid; gap: 0.85rem; } .settings-section.grouped { border: 1px solid var(--rip-border); border-radius: 0.55rem; background: #fff7ea; padding: 0.75rem; } .settings-section-head { display: grid; gap: 0.15rem; margin-bottom: 0.55rem; } .settings-section-head h4 { margin: 0; color: var(--rip-brown-800); font-size: 1rem; } .settings-section-head small { color: var(--rip-muted); } .setting-row { display: grid; gap: 0.35rem; padding: 0.75rem; border: 1px solid var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); } .setting-row .saved-tag { width: fit-content; } .setting-description { white-space: pre-wrap; } .notification-toggle-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; align-items: stretch; } .settings-grid + .notification-toggle-grid { margin-top: 1rem; } .notification-toggle-box { display: flex; flex-direction: column; gap: 0.5rem; height: 100%; } .notification-toggle-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.65rem; } .notification-toggle-head > label { margin: 0; line-height: 1.25; } .notification-toggle-head .p-inputswitch { flex-shrink: 0; } .notification-toggle-box .setting-description { white-space: normal; overflow-wrap: anywhere; word-break: break-word; line-height: 1.25; } .notification-toggle-box .saved-tag { margin-top: auto; } .setting-owner-row { display: grid; gap: 0.25rem; margin-top: 0.35rem; padding-top: 0.5rem; border-top: 1px dashed var(--rip-border); } .setting-owner-label { font-size: 0.8rem; color: var(--rip-muted); font-weight: 500; } .setting-owner-row .p-inputtext:disabled { opacity: 0.4; cursor: not-allowed; } .setting-owner-row .saved-tag { width: fit-content; } /* ── Path Category Tab ─────────────────────────────────────────────────────── */ .path-category-tab { display: grid; gap: 1.25rem; } .path-overview-card { border: 1px solid var(--rip-border); border-radius: 0.55rem; background: var(--rip-panel-soft); padding: 1rem; } .path-overview-header { display: grid; gap: 0.2rem; margin-bottom: 0.75rem; } .path-overview-header h4 { margin: 0; color: var(--rip-brown-800); font-size: 1rem; } .path-overview-header small { color: var(--rip-muted); } .path-overview-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; } .path-overview-table th { text-align: left; padding: 0.4rem 0.6rem; color: var(--rip-muted); font-weight: 600; border-bottom: 1px solid var(--rip-border); } .path-overview-table td { padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--rip-border); vertical-align: middle; } .path-overview-table tr:last-child td { border-bottom: none; } .path-overview-table code { font-size: 0.8rem; background: rgba(0, 0, 0, 0.06); padding: 0.15rem 0.4rem; border-radius: 3px; word-break: break-all; } .path-default-badge { display: inline-block; margin-left: 0.5rem; padding: 0.1rem 0.45rem; font-size: 0.7rem; background: var(--rip-border); color: var(--rip-muted); border-radius: 999px; vertical-align: middle; white-space: nowrap; } .path-medium-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; } .path-medium-card { border: 1px solid var(--rip-border); border-radius: 0.55rem; background: #fff7ea; overflow: hidden; } .path-medium-card-header { padding: 0.6rem 0.9rem; border-bottom: 1px solid var(--rip-border); background: rgba(0, 0, 0, 0.03); } .path-medium-card-header h4 { margin: 0; font-size: 0.95rem; color: var(--rip-brown-800); } .path-medium-card .settings-grid { padding: 0.75rem; } .script-manager-wrap { display: grid; gap: 0.8rem; } .script-list-box { border: 1px solid var(--rip-border); border-radius: 0.55rem; background: #fff7ea; padding: 0.75rem; display: grid; gap: 0.6rem; width: 100%; } .script-list-box h4 { margin: 0; color: var(--rip-brown-800); } .script-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem; } .script-list--reorderable { grid-template-columns: 1fr; } .script-order-list { display: flex; flex-direction: column; } .script-order-wrapper { display: flex; flex-direction: column; } .script-order-drop-zone { min-height: 0.5rem; border-radius: 0.25rem; transition: min-height 0.12s, background 0.12s; } .script-order-drop-zone--end { min-height: 1rem; } .script-order-drop-zone:hover, .script-order-drop-zone:focus-within { min-height: 1.2rem; background: var(--rip-gold-200); } .script-list-item { border: 1px solid var(--rip-border); border-radius: 0.45rem; background: var(--rip-panel-soft); padding: 0.5rem 0.6rem; display: grid; grid-template-columns: 1fr; gap: 0.55rem; } .script-list--reorderable .script-list-item:not(.script-list-item-editing) { grid-template-columns: auto minmax(0, 1fr) minmax(21rem, auto); align-items: center; gap: 0.65rem; } .script-list-item--dragging { opacity: 0.55; } .script-list-drag-handle { color: var(--rip-muted); cursor: grab; display: inline-flex; align-items: center; justify-content: center; width: 1.4rem; min-height: 1.4rem; border-radius: 0.25rem; } .script-list-drag-handle:hover { background: var(--rip-gold-200); color: var(--rip-brown-700); } .script-list-drag-handle.disabled { cursor: not-allowed; opacity: 0.45; } .script-list-item-editing { display: grid; grid-template-columns: 1fr; gap: 0.55rem; } .script-list-main { display: grid; gap: 0.45rem; min-width: 0; } .script-title-line { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 0.45rem; min-width: 0; } .script-id-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; } .script-title-input { width: 100%; } .script-list-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.45rem; } .script-list-actions--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .script-list-actions .p-button { width: 100%; justify-content: center; font-size: 0.82rem; padding: 0.38rem 0.7rem; } .script-list-actions .p-button .p-button-icon { font-size: 0.8rem; } .script-action-spacer { display: block; } .preset-media-type-tag { font-size: 0.8rem; opacity: 0.7; white-space: nowrap; } .preset-description-line { display: block; margin-top: 0.2rem; opacity: 0.8; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .script-editor-fields { display: grid; gap: 0.4rem; } .script-editor-fields .p-inputtextarea { width: 100%; font-family: 'JetBrains Mono', monospace; font-size: 0.82rem; } .script-test-result { border: 1px dashed var(--rip-border); border-radius: 0.5rem; background: var(--rip-panel-soft); padding: 0.6rem 0.7rem; display: grid; gap: 0.35rem; } .script-test-result h4 { margin: 0; } .script-test-result pre { margin: 0; background: #f7ecd7; border-radius: 0.35rem; padding: 0.5rem 0.55rem; font-family: 'JetBrains Mono', monospace; font-size: 0.76rem; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; } .script-test-step { display: grid; gap: 0.2rem; } .script-test-step strong { font-size: 0.82rem; } .required { color: #9d261b; margin-left: 0.25rem; } .error-text { color: #9d261b; } .full-width { width: 100%; } .table-filters { margin-bottom: 1rem; display: grid; grid-template-columns: 1fr 16rem auto; gap: 0.5rem; } .history-dataview .p-dataview-header { background: transparent; border: none; padding: 0; margin-bottom: 0.85rem; } .history-dataview .p-dataview-content { background: transparent; border: none; padding: 0; } .history-dataview .p-paginator { margin-top: 0.75rem; } .history-dv-toolbar { margin-bottom: 0.5rem; display: grid; grid-template-columns: minmax(0, 1fr) 12rem 10rem 13rem auto auto; gap: 0.5rem; align-items: center; } .history-dv-layout-toggle { display: flex; justify-content: flex-end; } .history-dataview .p-dataview-content .p-grid.grid { display: flex; flex-wrap: wrap; margin: 0 -0.35rem; } .history-dataview .p-dataview-content .p-grid.grid > .col-12, .history-dataview .p-dataview-content .p-grid.grid > .md-col-6, .history-dataview .p-dataview-content .p-grid.grid > .xl-col-4 { width: 100%; padding: 0.35rem; } @media (min-width: 900px) { .history-dataview.p-dataview-grid .p-dataview-content .p-grid.grid > .md-col-6 { width: 50%; } } @media (min-width: 1280px) { .history-dataview.p-dataview-grid .p-dataview-content .p-grid.grid > .xl-col-4 { width: 33.3333%; } } .history-dv-item { border: 1px solid var(--rip-border); border-radius: 0.55rem; background: var(--rip-panel-soft); box-shadow: 0 2px 7px rgba(58, 29, 18, 0.06); } .history-dv-item:focus-visible { outline: none; box-shadow: var(--focus-ring), 0 2px 7px rgba(58, 29, 18, 0.06); } .history-dv-item-list { display: grid; grid-template-columns: 60px minmax(0, 1fr) auto; gap: 0.75rem; align-items: start; padding: 0.6rem 0.7rem; } .history-dv-main { min-width: 0; display: grid; gap: 0.35rem; } .history-dv-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; } .history-dv-title-block { min-width: 0; display: grid; gap: 0.1rem; } .history-dv-title { margin: 0; overflow-wrap: anywhere; word-break: break-word; } .history-dv-subtle { color: var(--rip-muted); font-size: 0.78rem; } .history-dv-meta-row, .history-dv-flags-row, .history-dv-ratings-row { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: center; } .history-dv-chip { display: inline-flex; align-items: center; gap: 0.3rem; border: 1px solid var(--rip-border); border-radius: 999px; padding: 0.12rem 0.48rem; font-size: 0.76rem; background: var(--rip-panel); } .history-dv-chip.tone-ok { color: #176635; border-color: #9ed5ad; background: #dcf3e2; } .history-dv-chip.tone-no { color: #8b2c2c; border-color: #d4a29e; background: #f8e1df; } .history-dv-rating-chip { display: inline-flex; align-items: center; gap: 0.34rem; border: 1px dashed var(--rip-border); border-radius: 999px; padding: 0.12rem 0.5rem; font-size: 0.76rem; background: var(--rip-panel); } .history-dv-poster-wrap { width: 60px; } .history-dv-poster, .history-dv-poster-grid { display: block; width: 100%; object-fit: cover; border-radius: 0.35rem; border: 1px solid #cba266; background: #f6ebd6; } .history-dv-poster { height: 88px; } .history-dv-poster-grid { height: 164px; } .history-dv-poster-fallback { width: 100%; height: 88px; border-radius: 0.35rem; border: 1px dashed var(--rip-border); background: #f3e5cc; color: var(--rip-muted); font-size: 0.72rem; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0.3rem; } .history-dv-actions { display: flex; align-items: flex-start; } .history-dv-item-grid { display: grid; gap: 0.5rem; padding: 0.65rem; grid-template-rows: auto 1fr auto; } .history-dv-grid-poster-wrap { width: min(120px, 100%); margin: 0 auto; } .history-dv-grid-main { display: grid; gap: 0.35rem; min-width: 0; } .history-dv-actions-grid { justify-content: flex-end; } .history-delete-preview-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; margin-top: 0.75rem; } .history-delete-preview-grid h4 { margin: 0 0 0.35rem; font-size: 0.9rem; } .history-delete-preview-list { margin: 0; padding-left: 1rem; display: grid; gap: 0.22rem; max-height: 12rem; overflow: auto; font-size: 0.78rem; } .history-delete-preview-list li { overflow-wrap: anywhere; word-break: break-word; } .history-delete-preview-list .exists-yes { color: #176635; font-weight: 600; } .history-delete-preview-list .exists-no { color: #8b2c2c; font-weight: 600; } .table-scroll-wrap { width: 100%; max-width: 100%; min-width: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-scroll-wrap .p-datatable { min-width: 0; } .table-scroll-wrap .p-datatable-wrapper { max-width: 100%; overflow-x: auto; } .table-scroll-wrap .p-datatable-table { min-width: 44rem; } .table-scroll-wrap.table-scroll-medium .p-datatable-table { min-width: 54rem; } .table-scroll-wrap.table-scroll-wide .p-datatable-table { min-width: 72rem; } .clickable-table tbody tr { cursor: pointer; } .job-meta-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; margin-bottom: 1rem; } .job-meta-grid > div, .device-meta > div, .selected-meta > div, .pipeline-meta-inline .device-meta > div { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .job-head-row { display: grid; grid-template-columns: 11rem 1fr; gap: 1rem; margin-bottom: 1rem; } .job-detail-meta-wrap { display: grid; gap: 0.65rem; } .job-film-info-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; } .job-meta-block { border: 1px solid var(--rip-border); border-radius: 0.45rem; padding: 0.55rem 0.65rem; background: var(--rip-panel-soft); display: grid; gap: 0.45rem; } .job-meta-block.job-meta-block-film { padding: 0.55rem 0.65rem; } .job-meta-list { display: grid; gap: 0.4rem; font-size: 0.84rem; line-height: 1.3; } .job-meta-item { min-width: 0; display: grid; grid-template-columns: 8rem minmax(0, 1fr); gap: 0.35rem; align-items: start; } .job-meta-item strong, .job-meta-item span { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .job-meta-block h4 { margin: 0; font-size: 0.88rem; } .job-meta-grid.job-meta-grid-compact { margin-bottom: 0; gap: 0.4rem 0.65rem; font-size: 0.84rem; } .job-meta-grid.job-meta-grid-compact strong { font-weight: 600; } .job-meta-col-span-2 { grid-column: 1 / -1; } .job-configured-selection-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.35rem 0.65rem; font-size: 0.84rem; } .job-configured-selection-grid > div { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .job-status-icon { display: inline-flex; align-items: center; justify-content: center; width: 1rem; height: 1rem; } .job-status-icon .pi { font-size: 1rem; } .job-status-icon.tone-success { color: #1c8a3a; } .job-status-icon.tone-danger { color: #9c2d2d; } .job-status-icon.tone-warning { color: #7a4f00; } .job-status-icon.tone-info { color: #0d5a86; } .job-status-icon.tone-secondary { color: #46556a; } .job-json-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .json-box { background: #2a140d; color: #f8e2b8; padding: 0.75rem; border-radius: 0.5rem; max-height: 16rem; overflow: auto; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; overflow-wrap: anywhere; word-break: break-word; } .poster-thumb { width: 46px; height: 68px; object-fit: cover; border-radius: 0.35rem; border: 1px solid #cba266; } .poster-thumb-lg { width: 64px; height: 92px; object-fit: cover; border-radius: 0.35rem; border: 1px solid #cba266; background: #f6ebd6; } .omdb-row { display: grid; grid-template-columns: 64px 1fr; gap: 0.65rem; align-items: center; } .omdb-row > div { min-width: 0; } .orphan-path-cell { max-width: 36rem; white-space: normal; word-break: break-all; } .selected-meta { display: grid; grid-template-columns: 12rem 1fr; gap: 1rem; } .pipeline-meta-inline { margin-top: 1rem; display: grid; grid-template-columns: 12rem 1fr; gap: 1rem; } .poster-large { width: 100%; height: 16rem; object-fit: cover; border-radius: 0.5rem; border: 1px solid #cba266; background: #f6ebd6; } .poster-fallback { display: flex; align-items: center; justify-content: center; color: var(--rip-muted); } .log-box { background: #231109; color: #f6ddb2; padding: 0.75rem; border-radius: 0.5rem; max-height: 25rem; max-width: 100%; min-width: 0; overflow: auto; font-family: 'JetBrains Mono', monospace; font-size: 0.82rem; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; } .live-log-block { margin-top: 1rem; max-width: 100%; overflow-x: auto; } .live-log-block h4 { margin: 0 0 0.5rem; } .live-log-block .log-box { width: 100%; max-width: 100%; box-sizing: border-box; overflow-x: auto; overflow-y: auto; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; } .playlist-decision-block { margin-top: 1rem; border: 1px solid var(--rip-border); border-radius: 0.5rem; padding: 0.75rem; display: grid; gap: 0.5rem; background: var(--rip-panel-soft); } .playlist-decision-block h3 { margin: 0; } .playlist-decision-list { display: grid; gap: 0.75rem; } .ready-job-list { display: grid; gap: 0.65rem; } .ready-job-item { border: 1px solid var(--rip-border); border-radius: 0.5rem; padding: 0.55rem 0.65rem; background: var(--rip-panel-soft); display: grid; gap: 0.35rem; } .ready-job-item > summary { cursor: pointer; font-weight: 600; } .playlist-decision-item { border: 1px dashed var(--rip-border); border-radius: 0.45rem; padding: 0.5rem 0.6rem; display: grid; gap: 0.2rem; background: var(--rip-panel); } .mediainfo-review-block { margin-top: 1rem; border-top: 1px solid var(--rip-border); padding-top: 1rem; } .mediainfo-review-block h3 { margin: 0 0 0.65rem; } .media-review-wrap { display: grid; gap: 0.75rem; } .media-review-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.4rem 0.9rem; } .media-review-notes { display: grid; gap: 0.2rem; } .post-script-box { border: 1px dashed var(--rip-border); border-radius: 0.45rem; padding: 0.55rem 0.65rem; background: var(--rip-panel-soft); display: grid; gap: 0.45rem; } .post-script-box h4 { margin: 0; } .post-script-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.45rem; } .post-script-row.editable { grid-template-columns: auto auto minmax(0, 1fr) auto; } .post-script-type-icon { color: var(--rip-muted); font-size: 0.95rem; width: 1rem; text-align: center; } .post-script-drag-handle { cursor: grab; color: var(--rip-muted); font-size: 0.95rem; padding: 0.25rem; border-radius: 0.25rem; border: 1px solid transparent; } .post-script-drag-handle:hover { border-color: var(--rip-border); background: color-mix(in srgb, var(--rip-panel-soft) 75%, #ffffff 25%); } .post-script-drag-handle:active { cursor: grabbing; } .post-script-drag-handle.disabled { cursor: not-allowed; opacity: 0.45; } .cd-encode-item-order { display: inline-flex; align-items: center; gap: 0.15rem; } .cd-encode-item-order .p-button { width: 1.5rem; min-width: 1.5rem; height: 1.5rem; padding: 0; } .media-title-list, .media-track-list { display: grid; gap: 0.35rem; } .media-track-item { display: grid; gap: 0.15rem; } .track-action-note { margin-left: 1.7rem; color: var(--rip-muted); } .media-title-block { border: 1px solid var(--rip-border); border-radius: 0.45rem; padding: 0.55rem 0.65rem; background: var(--rip-panel-soft); display: grid; gap: 0.6rem; } .playlist-info-box { border: 1px dashed var(--rip-border); border-radius: 0.4rem; padding: 0.4rem 0.55rem; background: var(--rip-panel); display: grid; gap: 0.2rem; } .playlist-segment-output { margin: 0; padding: 0.4rem 0.5rem; border-radius: 0.35rem; background: #f7ecd7; color: var(--rip-brown-900); font-family: 'JetBrains Mono', monospace; font-size: 0.76rem; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; } .playlist-segment-toggle { display: grid; gap: 0.3rem; } .playlist-segment-toggle > summary { cursor: pointer; font-size: 0.82rem; color: var(--rip-muted); user-select: none; } .readonly-check-row { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.92rem; line-height: 1.3; } .readonly-check-row input { margin-top: 0.2rem; } .readonly-check-row span { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } .media-track-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .handbrake-command-preview { border: 1px dashed var(--rip-border); border-radius: 0.4rem; padding: 0.45rem 0.55rem; background: var(--rip-panel); display: grid; gap: 0.25rem; } .handbrake-command-preview pre { margin: 0; padding: 0.45rem 0.55rem; border-radius: 0.35rem; background: #f7ecd7; color: var(--rip-brown-900); font-family: 'JetBrains Mono', monospace; font-size: 0.76rem; white-space: pre-wrap; word-break: break-word; } .job-detail-dialog .p-dialog-content, .metadata-selection-dialog .p-dialog-content, .disc-detected-dialog .p-dialog-content { max-height: min(80vh, 56rem); overflow: auto; } .job-detail-dialog, .metadata-selection-dialog, .disc-detected-dialog { max-width: calc(100vw - 0.75rem); } .job-detail-dialog .p-dialog-header-title, .metadata-selection-dialog .p-dialog-header-title, .disc-detected-dialog .p-dialog-header-title { min-width: 0; overflow-wrap: anywhere; word-break: break-word; } @media (max-width: 900px) { .app-header { padding: 0.8rem 1rem; } .brand-logo { width: 60px; height: 60px; } .brand-copy h1 { font-size: 1.45rem; } .brand-copy p { font-size: 0.82rem; } .app-version { font-size: 0.68rem; } .metadata-grid, .device-meta, .hardware-monitor-grid, .hardware-monitor-meta, .pipeline-queue-grid, .media-review-meta, .media-track-grid, .job-meta-grid, .job-configured-selection-grid, .job-film-info-grid, .history-delete-preview-grid, .table-filters, .history-dv-toolbar, .job-head-row, .job-json-grid, .selected-meta, .pipeline-meta-inline { grid-template-columns: 1fr; } .notification-toggle-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dashboard-job-row { grid-template-columns: 48px minmax(0, 1fr) auto; } .dashboard-job-badges { justify-content: flex-start; } .dashboard-job-expanded-head { flex-wrap: wrap; } .cd-track-table { min-width: 36rem; } .cd-media-meta-layout { grid-template-columns: 1fr; } .cd-cover-wrap { width: 6.5rem; min-width: 6.5rem; } .script-list { grid-template-columns: 1fr; } .script-list-item { grid-template-columns: 1fr; } .script-list--reorderable .script-list-item:not(.script-list-item-editing) { grid-template-columns: 1fr; } .post-script-row { grid-template-columns: minmax(0, 1fr) auto; } .post-script-row.editable { grid-template-columns: auto auto minmax(0, 1fr) auto; } .orphan-path-cell { max-width: 100%; } .metadata-selection-dialog .p-datatable-wrapper { max-height: 16rem !important; } .hardware-core-item.compact { grid-template-columns: auto auto auto; align-items: center; justify-content: start; gap: 0.3rem; text-align: left; } .hardware-core-grid.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hardware-core-title { min-width: 2rem; } .hardware-core-metric { justify-self: start; } .history-dv-item-list { grid-template-columns: 52px minmax(0, 1fr); } .history-dv-actions { grid-column: 1 / -1; justify-content: flex-end; } .history-dv-toolbar { grid-template-columns: 1fr; } .history-dv-poster-grid { height: 148px; } } @media (max-width: 640px) { .app-main { width: min(1280px, 98vw); } .hardware-storage-head { grid-template-columns: 1fr; } .hardware-storage-percent { justify-self: start; } .table-filters { grid-template-columns: 1fr; } .history-dv-item-list { grid-template-columns: 1fr; } .history-dv-poster-wrap { width: 54px; } .history-dv-poster { height: 80px; } .history-dv-poster-fallback { height: 80px; } .history-dv-poster-grid { height: 136px; } .search-row { grid-template-columns: 1fr; } .actions-row .p-button { width: 100%; } .settings-expert-toggle { width: 100%; justify-content: space-between; } .notification-toggle-grid { grid-template-columns: 1fr; } .dialog-actions { justify-content: stretch; } .dialog-actions .p-button { width: 100%; } .script-title-line { grid-template-columns: 1fr; gap: 0.3rem; } .script-list-actions { grid-template-columns: 1fr; } .script-list--reorderable .script-list-item:not(.script-list-item-editing) { grid-template-columns: 1fr; } .script-list-drag-handle { width: 100%; justify-content: flex-start; } .script-action-spacer { display: none; } .dashboard-job-row { grid-template-columns: 1fr; } .dashboard-job-row .poster-thumb, .dashboard-job-row .dashboard-job-poster-fallback { width: 52px; height: 76px; } .dashboard-job-row-main strong, .dashboard-job-row-main small { white-space: normal; } .pipeline-queue-item-main strong, .pipeline-queue-item-main small { white-space: normal; } .dashboard-job-title-line > span { white-space: normal; } .job-detail-dialog .p-dialog-header, .metadata-selection-dialog .p-dialog-header, .disc-detected-dialog .p-dialog-header { padding: 0.85rem 1rem; } .job-detail-dialog .p-dialog-content, .metadata-selection-dialog .p-dialog-content, .disc-detected-dialog .p-dialog-content { padding: 0.9rem 1rem 1rem; max-height: 78vh; } .chain-editor-body { flex-direction: column; } .chain-palette, .chain-canvas { min-width: unset; max-width: unset; width: 100%; } } /* ── Chain Editor ─────────────────────────────────────── */ .chain-editor-name-row { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 0.5rem 0.75rem; margin-bottom: 1rem; } .chain-editor-body { display: flex; gap: 1rem; min-height: 20rem; } .chain-palette { min-width: 14rem; max-width: 18rem; border: 1px solid var(--rip-border); border-radius: 0.4rem; padding: 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; background: var(--rip-panel-soft); } .chain-palette h4 { margin: 0 0 0.25rem; font-size: 0.9rem; color: var(--rip-muted); } .chain-palette-hint { font-size: 0.72rem; color: var(--rip-muted); margin: 0 0 0.5rem; } .chain-palette-section { display: flex; flex-direction: column; gap: 0.3rem; } .chain-palette-section strong { font-size: 0.78rem; color: var(--rip-muted); text-transform: uppercase; letter-spacing: 0.03em; } .chain-palette-item { padding: 0.4rem 0.6rem; border-radius: 0.3rem; border: 1px solid var(--rip-border); cursor: grab; font-size: 0.85rem; user-select: none; transition: background 0.15s, border-color 0.15s; } .chain-palette-item:hover { background: var(--rip-gold-200); border-color: var(--rip-gold-400); } .chain-palette-item--system { background: #fff3cd; border-color: #ffc107; } .chain-palette-item--script { background: var(--rip-cream-100); } .chain-canvas { flex: 1; border: 1px solid var(--rip-border); border-radius: 0.4rem; padding: 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; background: var(--rip-panel); overflow-y: auto; max-height: 60vh; } .chain-canvas h4 { margin: 0 0 0.25rem; font-size: 0.9rem; color: var(--rip-muted); } .chain-canvas-empty { flex: 1; border: 2px dashed var(--rip-border); border-radius: 0.4rem; display: flex; align-items: center; justify-content: center; color: var(--rip-muted); font-size: 0.85rem; min-height: 8rem; } .chain-steps-list { display: flex; flex-direction: column; } .chain-step-wrapper { display: flex; flex-direction: column; } .chain-drop-zone { height: 0.5rem; border-radius: 0.25rem; transition: height 0.12s, background 0.12s; } .chain-drop-zone--end { flex: 1; min-height: 1.5rem; } .chain-drop-zone:hover, .chain-drop-zone:focus-within { height: 1.5rem; background: var(--rip-gold-200); } .chain-step { display: flex; align-items: center; gap: 0.5rem; border: 1px solid var(--rip-border); border-radius: 0.35rem; padding: 0.4rem 0.5rem; cursor: grab; user-select: none; margin: 0.1rem 0; } .chain-step--wait { background: #fffbe6; border-color: #ffc107; } .chain-step--script { background: var(--rip-cream-100); } .chain-step-drag-handle { color: var(--rip-muted); cursor: grab; flex-shrink: 0; } .chain-step-content { flex: 1; min-width: 0; } .chain-step-wait, .chain-step-script { display: flex; align-items: center; gap: 0.4rem; font-size: 0.88rem; } .chain-wait-input { width: 4rem; border: 1px solid var(--rip-border); border-radius: 0.25rem; padding: 0.15rem 0.3rem; font-size: 0.88rem; text-align: center; background: #fff; } .chain-step-remove { flex-shrink: 0; } .chain-selection-groups { display: flex; flex-direction: row; gap: 1rem; align-items: flex-start; } .chain-selection-group { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 0.35rem; padding: 0.5rem 0; border-top: 1px dashed var(--rip-border); } .chain-selection-group:first-child { border-top: none; } .chain-selection-group strong { font-size: 0.82rem; color: var(--rip-muted); } .chain-add-dropdown { max-width: 100%; } @media (max-width: 640px) { .chain-selection-groups { flex-direction: column; gap: 0; } .chain-selection-group { flex: unset; width: 100%; } } /* ── Cronjobs Tab ─────────────────────────────────────────────────────────── */ .cron-tab { display: flex; flex-direction: column; gap: 1.25rem; } .cron-empty-hint { color: var(--rip-muted, #888); font-size: 0.9rem; margin: 0.5rem 0; } /* Job-Liste */ .cron-list { display: flex; flex-direction: column; gap: 0.75rem; } .cron-item { border: 1px solid var(--surface-border, #dee2e6); border-radius: 8px; padding: 1rem; display: flex; flex-direction: column; gap: 0.6rem; background: var(--surface-card, #fff); transition: opacity 0.2s; } .cron-item--disabled { opacity: 0.55; } .cron-item-header { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; } .cron-item-name { font-weight: 600; font-size: 1rem; } .cron-item-expr { background: var(--surface-ground, #f4f4f4); border-radius: 4px; padding: 0.15rem 0.45rem; font-size: 0.82rem; color: var(--text-color-secondary, #555); font-family: monospace; } .cron-item-meta { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; font-size: 0.85rem; } .cron-meta-entry { display: flex; align-items: center; gap: 0.3rem; } .cron-meta-label { color: var(--rip-muted, #777); font-size: 0.8rem; } .cron-meta-value { display: flex; align-items: center; gap: 0.35rem; } /* Status-Badge */ .cron-status { display: inline-block; padding: 0.1rem 0.45rem; border-radius: 99px; font-size: 0.75rem; font-weight: 600; line-height: 1.4; } .cron-status--success { background: #d4edda; color: #1c5e2e; } .cron-status--error { background: #f8d7da; color: #842029; } .cron-status--running { background: #d0e4ff; color: #0c3b7c; } .cron-status--none { background: transparent; color: var(--rip-muted, #888); } /* Toggles-Zeile */ .cron-item-toggles { display: flex; gap: 1.25rem; flex-wrap: wrap; } .cron-toggle-label { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; font-size: 0.88rem; } /* Aktionen-Zeile */ .cron-item-actions { display: flex; gap: 0.4rem; flex-wrap: wrap; } /* Editor-Dialog */ .cron-editor-fields { display: flex; flex-direction: column; gap: 1rem; } .cron-editor-field { display: flex; flex-direction: column; gap: 0.35rem; } .cron-editor-label { font-weight: 600; font-size: 0.88rem; display: flex; align-items: center; gap: 0.4rem; } .cron-help-link { color: var(--rip-muted, #999); font-size: 0.85rem; text-decoration: none; } .cron-help-link:hover { color: var(--primary-color, #3b82f6); } .cron-expr-hint { font-size: 0.8rem; line-height: 1.4; } .cron-expr-hint--ok { color: #1c5e2e; } .cron-expr-hint--err { color: #842029; } .cron-expr-hint--checking { color: var(--rip-muted, #888); } .cron-expr-examples { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.25rem; } .cron-expr-chip { background: var(--surface-ground, #f4f4f4); border: 1px solid var(--surface-border, #dee2e6); border-radius: 99px; padding: 0.2rem 0.7rem; font-size: 0.78rem; cursor: pointer; transition: background 0.15s; } .cron-expr-chip:hover { background: var(--surface-hover, #e9ecef); } /* Quell-Typ-Auswahl */ .cron-source-type-row { display: flex; gap: 0.5rem; } .cron-source-type-btn { flex: 1; padding: 0.45rem 0.75rem; border: 1px solid var(--surface-border, #dee2e6); border-radius: 6px; background: var(--surface-ground, #f4f4f4); font-size: 0.88rem; cursor: pointer; transition: all 0.15s; } .cron-source-type-btn.active { border-color: var(--primary-color, #3b82f6); background: var(--primary-50, #eff6ff); color: var(--primary-color, #3b82f6); font-weight: 600; } /* Editor-Toggles */ .cron-editor-toggles { display: flex; flex-direction: column; gap: 0.6rem; } /* Logs-Dialog */ .cron-log-list { display: flex; flex-direction: column; gap: 0.5rem; } .cron-log-entry { border: 1px solid var(--surface-border, #dee2e6); border-radius: 6px; overflow: hidden; } .cron-log-summary { display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 0.75rem; cursor: pointer; background: var(--surface-ground, #f8f9fa); list-style: none; font-size: 0.88rem; flex-wrap: wrap; } .cron-log-time { font-weight: 600; } .cron-log-duration { color: var(--rip-muted, #777); font-size: 0.8rem; } .cron-log-errmsg { color: #842029; font-size: 0.8rem; font-style: italic; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 260px; } .cron-log-output { margin: 0; padding: 0.75rem; background: #1e1e1e; color: #d4d4d4; font-size: 0.78rem; max-height: 300px; overflow-y: auto; white-space: pre-wrap; word-break: break-all; } .runtime-activity-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 0.75rem; } .runtime-activity-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; } .runtime-activity-col { border: 1px solid var(--rip-border); border-radius: 0.5rem; padding: 0.55rem 0.6rem; background: var(--rip-panel-soft); display: grid; align-content: start; grid-auto-rows: min-content; gap: 0.45rem; } .runtime-activity-col h4 { margin: 0; } .runtime-activity-list { display: flex; flex-direction: column; gap: 0.45rem; } .runtime-activity-item { border: 1px dashed var(--rip-border); border-radius: 0.45rem; padding: 0.45rem 0.55rem; background: var(--rip-panel); display: grid; gap: 0.2rem; } .runtime-activity-item.running { border-style: solid; } .runtime-activity-item.done { border-style: dotted; background: var(--rip-surface); opacity: 0.94; } .runtime-activity-head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; } .runtime-activity-head strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .runtime-activity-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; } .runtime-activity-actions { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.15rem; } .runtime-activity-details { margin-top: 0.2rem; } .runtime-activity-details summary { cursor: pointer; font-size: 0.82rem; color: var(--rip-muted, #666); } .runtime-activity-details-block { margin-top: 0.4rem; } .runtime-activity-details-block pre { margin: 0.25rem 0 0; padding: 0.55rem; border-radius: 6px; border: 1px solid var(--surface-border, #d8d3c6); background: #1f1f1f; color: #e8e8e8; max-height: 180px; overflow: auto; white-space: pre-wrap; word-break: break-word; font-size: 0.78rem; } @media (max-width: 980px) { .runtime-activity-grid { grid-template-columns: 1fr; } }