/* Table and Dark Overrides */ .trip-management-container { width: 100%; font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; } /* Improve DataTable font across headers, cells, paginator, and body */ .trip-management-container .p-datatable, .trip-management-container .p-datatable th, .trip-management-container .p-datatable td, .trip-management-container .p-paginator, .trip-management-container .p-datatable .p-datatable-header, .trip-management-container .p-datatable .p-datatable-footer{ font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif !important; font-weight: 500 !important; font-size: 0.95rem !important; line-height: 1.25rem !important; } /* Keep monospace for any code or ident columns */ .trip-management-container .p-datatable td.code, .trip-management-container .p-datatable td.mono { font-family: ui-monospace, "JetBrains Mono", "Fira Code", "Roboto Mono", "Consolas", "Monaco", "Courier New", monospace !important; font-weight: 400 !important; } .trip-management-container .table-wrapper { width: 100%; } .trip-management-container .p-datatable { width: 100% !important; display: block !important; } .trip-management-container .p-datatable-wrapper { width: 100% !important; overflow-x: auto; } .trip-management-container .p-datatable-table { width: 100% !important; table-layout: fixed !important; min-width: 100% !important; } /* Force header and body rows to fill width */ .trip-management-container .p-datatable-thead, .trip-management-container .p-datatable-tbody { width: 100% !important; } .trip-management-container .p-datatable-thead > tr, .trip-management-container .p-datatable-tbody > tr { width: 100% !important; } /* Column widths - distribute across table */ .trip-management-container .p-datatable-thead > tr > th, .trip-management-container .p-datatable-tbody > tr > td { /* Default column distribution: uniform padding and vertical alignment */ padding: 0.65rem 0.5rem; vertical-align: middle; } /* ID column - narrow */ .trip-management-container .p-datatable-thead > tr > th:nth-child(1), .trip-management-container .p-datatable-tbody > tr > td:nth-child(1) { width: 10% !important; } /* Target column - widest */ .trip-management-container .p-datatable-thead > tr > th:nth-child(2), .trip-management-container .p-datatable-tbody > tr > td:nth-child(2) { width: 22% !important; } /* Tracks column */ .trip-management-container .p-datatable-thead > tr > th:nth-child(3), .trip-management-container .p-datatable-tbody > tr > td:nth-child(3) { width: 10% !important; } /* Status column */ .trip-management-container .p-datatable-thead > tr > th:nth-child(4), .trip-management-container .p-datatable-tbody > tr > td:nth-child(4) { width: 12% !important; text-align: center; } /* Progress column */ .trip-management-container .p-datatable-thead > tr > th:nth-child(5), .trip-management-container .p-datatable-tbody > tr > td:nth-child(5) { width: 16% !important; text-align: center; } /* Quality column */ .trip-management-container .p-datatable-thead > tr > th:nth-child(6), .trip-management-container .p-datatable-tbody > tr > td:nth-child(6) { width: 10% !important; text-align: center; } /* Tarball column - fills remaining */ .trip-management-container .p-datatable-thead > tr > th:nth-child(7), .trip-management-container .p-datatable-tbody > tr > td:nth-child(7) { width: 20% !important; } .trip-management-container .p-datatable td span.truncate { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Row hover cursor - indicate clickable */ .trip-management-container .p-datatable-tbody > tr { cursor: pointer; transition: background-color 0.15s ease; } /* Center-align headers for centered columns */ .trip-management-container .p-datatable-thead > tr > th:nth-child(4), .trip-management-container .p-datatable-thead > tr > th:nth-child(5), .trip-management-container .p-datatable-thead > tr > th:nth-child(6) { text-align: center !important; } /* Skeleton loading styles */ .table-skeleton { width: 100%; border-radius: 0.5rem; overflow: hidden; } .skeleton-row { display: flex; padding: 1rem 0.75rem; border-bottom: 1px solid rgba(128, 128, 128, 0.2); } .skeleton-row:last-child { border-bottom: none; } .skeleton-cell { padding: 0 0.5rem; } .skeleton-bar { height: 1rem; background: linear-gradient(90deg, #2a2a2a 25%, #3a3a3a 50%, #2a2a2a 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: 0.25rem; width: 80%; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Light mode skeleton */ [data-theme="light"] .skeleton-bar { background: linear-gradient(90deg, #e5e5e5 25%, #f0f0f0 50%, #e5e5e5 75%); background-size: 200% 100%; } /* Empty state styles */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem 1rem; text-align: center; } .empty-state-icon { font-size: 3rem; color: #6b7280; margin-bottom: 1rem; } .empty-state-text { font-size: 1.125rem; font-weight: 600; color: #9ca3af; margin-bottom: 0.25rem; } .empty-state-subtext { font-size: 0.875rem; color: #6b7280; } /* Dark Mode for Table */ [data-theme="dark"] .trip-management-container .p-datatable { color: #e5e7eb !important; } [data-theme="dark"] .trip-management-container .p-datatable-thead > tr > th { background-color: #1f1f1f !important; color: #e5e7eb !important; border-bottom: 1px solid #374151; } [data-theme="dark"] .trip-management-container .p-datatable-tbody > tr { background-color: #1a1a1a !important; border-bottom: 1px solid #374151; color: #e5e7eb !important; } [data-theme="dark"] .trip-management-container .p-datatable-tbody > tr:nth-child(odd) { background-color: #222 !important; } [data-theme="dark"] .trip-management-container .p-datatable-tbody > tr:hover { background-color: #333 !important; color: #fff !important; } /* Paginator Dark Mode */ [data-theme="dark"] .trip-management-container .p-paginator { background-color: #121212 !important; color: #e5e7eb !important; border-top: 1px solid #374151 !important; } [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-page, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-next, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-prev, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-first, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-last { color: #e5e7eb !important; background: transparent !important; border: none !important; } [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-page:hover, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-next:hover, [data-theme="dark"] .trip-management-container .p-paginator .p-paginator-prev:hover { background-color: #374151 !important; color: #fff !important; border-radius: 0.25rem; } [data-theme="dark"] .trip-management-container .p-paginator .p-highlight { background-color: #6b7280 !important; color: #fff !important; border-radius: 0.25rem !important; } /* Dark Mode for PrimeReact Dialog - rendered via portal so needs global selector */ [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 { background-color: #1a1a1a !important; color: #e5e7eb !important; border-color: #374151 !important; } [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 .p-dialog-header { background-color: #171717 !important; color: #e5e7eb !important; border-bottom: 1px solid #374151 !important; } [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 .p-dialog-header .p-dialog-header-icon { color: #e5e7eb !important; } [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 .p-dialog-header .p-dialog-header-icon:hover { background-color: #374151 !important; color: #fff !important; } [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 .p-dialog-content { background-color: #1a1a1a !important; color: #e5e7eb !important; } [data-theme="dark"] .p-dialog.dark\:bg-neutral-900 .p-dialog-footer { background-color: #171717 !important; border-top: 1px solid #374151 !important; } /* Progress Bar Styles */ .rm-progress-container { display: flex; align-items: center; width: 100%; } .rm-progress-track { position: relative; flex: 1 1 0%; min-width: 0; height: 6px; background-color: rgba(128, 128, 128, 0.2); border-radius: 999px; /* rounded track so fill edge is hidden when smaller */ overflow: hidden; /* must clip when scaled */ margin: 0 !important; padding: 0 !important; } .rm-progress-track-lg { height: 10px; } .rm-progress-fill { position: absolute; left: 0; top: 0; height: 100%; width: 100% !important; /* full width; we scale via transform to avoid subpixel gaps */ transform-origin: left center; transform: scaleX(var(--rm-progress, 0)); /* use custom property (0-1 range) */ border-top-left-radius: 999px; border-bottom-left-radius: 999px; transition: transform 0.24s cubic-bezier(0.4,0,0.2,1), border-radius 0.24s; margin: 0 !important; padding: 0 !important; right: 0; min-width: 0; will-change: transform; box-sizing: border-box; } /* Fix for native audio progress bar (range input) */ .audio-progress-range { width: 100%; height: 6px; background: transparent; appearance: none; -webkit-appearance: none; border-radius: 999px; overflow: hidden; margin: 0; padding: 0; } .audio-progress-range::-webkit-slider-runnable-track { height: 6px; background: rgba(128, 128, 128, 0.2); border-radius: 999px; } .audio-progress-range::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; border-radius: 50%; background: #2563eb; box-shadow: 0 0 2px rgba(0,0,0,0.2); margin-top: -3px; cursor: pointer; border: none; } .audio-progress-range::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: #2563eb; border: none; cursor: pointer; } .audio-progress-range::-ms-thumb { width: 12px; height: 12px; border-radius: 50%; background: #2563eb; border: none; cursor: pointer; } .audio-progress-range::-ms-fill-lower { background: #2563eb; border-radius: 999px; } .audio-progress-range::-ms-fill-upper { background: rgba(128, 128, 128, 0.2); border-radius: 999px; } .audio-progress-range::-webkit-slider-thumb { box-shadow: 0 0 2px rgba(0,0,0,0.2); } .audio-progress-range:focus { outline: none; } .audio-progress-range::-webkit-slider-runnable-track { background: linear-gradient(to right, #2563eb 0%, #2563eb var(--progress, 0%), rgba(128,128,128,0.2) var(--progress, 0%), rgba(128,128,128,0.2) 100%); } .audio-progress-range::-moz-range-progress { background-color: #2563eb; border-radius: 999px; } .audio-progress-range::-moz-range-track { background-color: rgba(128, 128, 128, 0.2); border-radius: 999px; } .audio-progress-range::-ms-fill-lower { background-color: #2563eb; border-radius: 999px; } .audio-progress-range::-ms-fill-upper { background-color: rgba(128, 128, 128, 0.2); border-radius: 999px; } .audio-progress-range:focus::-webkit-slider-runnable-track { background: linear-gradient(to right, #2563eb 0%, #2563eb var(--progress, 0%), rgba(128,128,128,0.2) var(--progress, 0%), rgba(128,128,128,0.2) 100%); } .audio-progress-range::-ms-tooltip { display: none; } .rm-progress-text { font-size: 0.75rem; font-weight: 600; /* Ensure progress styles apply when rendered within a PrimeReact Dialog (portal) */ .p-dialog .rm-progress-container{display:flex;align-items:center;width:100%} .p-dialog .rm-progress-track{position:relative;flex:1 1 0%;min-width:0;height:6px;background-color:#80808033;border-radius:999px;overflow:hidden;margin:0!important;padding:0!important} .p-dialog .rm-progress-track-lg{height:10px} .p-dialog .rm-progress-fill{position:absolute;left:0;top:0;height:100%;width:100%!important;transform-origin:left center;transform:scaleX(var(--rm-progress, 0));border-top-left-radius:999px;border-bottom-left-radius:999px;transition:transform .24s cubic-bezier(.4,0,.2,1),border-radius .24s;margin:0!important;padding:0!important;right:0;min-width:0;will-change:transform;box-sizing:border-box} .p-dialog .rm-progress-text{font-size:.75rem;font-weight:600;min-width:2.5rem;text-align:right} min-width: 2.5rem; text-align: right; } /* Container Styles */ .trip-management-container { width: 100%; } .trip-management-container .overflow-x-auto { overflow-x: auto; max-width: 100%; } .trip-request-form { width: 100%; } @media (max-width: 768px) { .trip-management-container { padding: 1rem; margin: 1rem 0; } .trip-management-container h2 { font-size: 1.5rem; } /* Stack filters on mobile */ .trip-management-container .flex-wrap { flex-direction: column; gap: 0.75rem; } /* Make table horizontally scrollable */ .trip-management-container .overflow-x-auto { margin: 0 -1rem; padding: 0 1rem; } /* Reduce column widths on mobile */ .p-datatable-thead > tr > th, .p-datatable-tbody > tr > td { padding: 0.5rem 0.25rem !important; font-size: 0.8rem !important; } /* Hide less important columns on small screens */ .p-datatable .hide-mobile { display: none !important; } } @media (max-width: 480px) { .trip-management-container { padding: 0.75rem; border-radius: 0.5rem; } .trip-management-container .rm-progress-container { flex-direction: column; align-items: flex-start; gap: 0.25rem; } .trip-management-container .rm-progress-track { width: 100%; } .trip-management-container .rm-progress-text { text-align: left; } } /* ===== MediaRequestForm Mobile Styles ===== */ /* Form container responsive */ .trip-request-form { width: 100%; max-width: 48rem; margin: 2.5rem auto; padding: 1.5rem; } @media (max-width: 768px) { .trip-request-form { margin: 1rem auto; padding: 1rem; border-radius: 0.75rem; } .trip-request-form h2 { font-size: 1.5rem; } /* Quality buttons stack on mobile */ .trip-quality-buttons { flex-direction: column; gap: 0.5rem; } .trip-quality-buttons button { width: 100%; } /* Accordion improvements for mobile */ .p-accordion-header .p-accordion-header-link { padding: 0.75rem !important; font-size: 0.9rem !important; } .p-accordion-content { padding: 0.5rem !important; } /* Track list items more compact on mobile */ .p-accordion-content li { padding: 0.5rem !important; font-size: 0.85rem !important; } /* Album header info stacks */ .album-header-info { flex-direction: column; align-items: flex-start !important; gap: 0.25rem; } /* Audio player controls smaller on mobile */ .track-audio-controls button { padding: 0.25rem 0.5rem !important; } } @media (max-width: 480px) { .trip-request-form { margin: 0.5rem; padding: 0.75rem; } .trip-request-form h2 { font-size: 1.25rem; } /* Input fields full width */ .p-autocomplete, .p-autocomplete-input { width: 100% !important; } /* Smaller text in track listings */ .p-accordion-content li span { font-size: 0.75rem !important; } /* Submit button full width */ .trip-submit-button { width: 100%; } } /* ======================================== Mobile Card Layout for Request Table ======================================== */ @media (max-width: 768px) { /* Hide table header on mobile */ .trip-management-container .p-datatable-thead { display: none !important; } /* Convert table to block layout */ .trip-management-container .p-datatable-table { display: block !important; table-layout: auto !important; } .trip-management-container .p-datatable-tbody { display: block !important; } /* Each row becomes a card */ .trip-management-container .p-datatable-tbody > tr { display: flex !important; flex-wrap: wrap !important; padding: 1rem !important; margin-bottom: 0.75rem !important; border-radius: 0.5rem !important; border: 1px solid rgba(128, 128, 128, 0.3) !important; gap: 0.5rem 1rem; align-items: flex-start; } /* Reset column widths */ .trip-management-container .p-datatable-tbody > tr > td { width: auto !important; padding: 0.25rem 0 !important; border: none !important; display: flex; align-items: flex-start; gap: 0.35rem; flex: 1 1 48%; min-width: 48%; } /* Add labels before each cell */ .trip-management-container .p-datatable-tbody > tr > td::before { font-weight: 600; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.025em; color: #9ca3af; min-width: 60px; line-height: 1.1; display: inline-block; } /* Target takes full width */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(2) { width: 100% !important; order: -1; font-weight: 600; font-size: 1rem; padding-bottom: 0.5rem !important; border-bottom: 1px solid rgba(128, 128, 128, 0.2) !important; margin-bottom: 0.25rem; flex: 1 1 100%; } .trip-management-container .p-datatable-tbody > tr > td:nth-child(2)::before { display: none; } /* ID - small, muted */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(1) { font-size: 0.75rem; color: #6b7280; } .trip-management-container .p-datatable-tbody > tr > td:nth-child(1)::before { content: "ID"; } /* Tracks */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(3)::before { content: "Tracks"; } /* Status */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(4)::before { content: "Status"; } /* Progress - full width */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(5) { width: 100% !important; order: 10; flex: 1 1 100%; } .trip-management-container .p-datatable-tbody > tr > td:nth-child(5)::before { content: "Progress"; } /* Quality */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(6)::before { content: "Quality"; } /* Tarball - full width */ .trip-management-container .p-datatable-tbody > tr > td:nth-child(7) { width: 100% !important; order: 11; flex: 1 1 100%; } .trip-management-container .p-datatable-tbody > tr > td:nth-child(7)::before { content: "Download"; } /* Progress bar adjustments for mobile */ .trip-management-container .rm-progress-container { flex: 1; } /* Skeleton adjustments for mobile */ .table-skeleton .skeleton-row { flex-direction: column; gap: 0.5rem; padding: 1rem; margin-bottom: 0.75rem; border-radius: 0.5rem; border: 1px solid rgba(128, 128, 128, 0.2); } .table-skeleton .skeleton-cell { width: 100% !important; } .table-skeleton .skeleton-bar { width: 60%; } .table-skeleton .skeleton-cell:first-child .skeleton-bar { width: 100%; height: 1.25rem; } }