Spaces:
Sleeping
Sleeping
| .app-shell { | |
| max-width: 1120px; | |
| margin: 0 auto; | |
| /* Honour curved-display safe-area on Android (OnePlus / Galaxy edge); | |
| fall back to 20px on flat displays. Requires viewport-fit=cover. */ | |
| padding-top: max(24px, env(safe-area-inset-top)); | |
| padding-right: max(20px, env(safe-area-inset-right)); | |
| padding-bottom: max(40px, env(safe-area-inset-bottom)); | |
| padding-left: max(20px, env(safe-area-inset-left)); | |
| } | |
| .status-line-error { | |
| color: #b91c1c; | |
| font-weight: 500; | |
| } | |
| .link-button { | |
| background: none; | |
| border: none; | |
| color: #0f766e; | |
| text-decoration: underline; | |
| cursor: pointer; | |
| padding: 0; | |
| font: inherit; | |
| } | |
| .server-url-editor { | |
| background: #f8fafc; | |
| border: 1px solid #cbd5e1; | |
| border-radius: 10px; | |
| padding: 12px; | |
| margin: 0 0 16px; | |
| } | |
| .server-url-editor label { | |
| display: block; | |
| font-size: 13px; | |
| color: #334155; | |
| font-weight: 600; | |
| } | |
| .server-url-editor label span { | |
| display: block; | |
| margin-bottom: 4px; | |
| } | |
| .server-url-editor input { | |
| width: 100%; | |
| box-sizing: border-box; | |
| border: 1px solid #94a3b8; | |
| border-radius: 8px; | |
| padding: 8px 10px; | |
| font: inherit; | |
| } | |
| .server-url-actions { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: 10px; | |
| } | |
| .server-url-hint { | |
| margin: 10px 0 0; | |
| font-size: 12px; | |
| color: #64748b; | |
| } | |
| .server-url-hint code { | |
| background: #e2e8f0; | |
| padding: 1px 5px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| } | |
| .import-progress { | |
| margin: 10px 0 4px; | |
| } | |
| .import-progress-label { | |
| font-size: 12px; | |
| color: #334155; | |
| margin-bottom: 6px; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .import-progress-bar { | |
| width: 100%; | |
| height: 8px; | |
| appearance: none; | |
| border: none; | |
| border-radius: 6px; | |
| background: #e2e8f0; | |
| overflow: hidden; | |
| } | |
| .import-progress-bar::-webkit-progress-bar { | |
| background: #e2e8f0; | |
| border-radius: 6px; | |
| } | |
| .import-progress-bar::-webkit-progress-value { | |
| background: #0f766e; | |
| border-radius: 6px; | |
| transition: width 0.2s ease; | |
| } | |
| .import-progress-bar::-moz-progress-bar { | |
| background: #0f766e; | |
| border-radius: 6px; | |
| } | |
| .hero { | |
| text-align: center; | |
| margin-bottom: 10px; | |
| } | |
| .hero h1 { | |
| margin: 0; | |
| font-size: 44px; | |
| color: #0f766e; | |
| } | |
| .hero p { | |
| margin: 8px 0 14px; | |
| color: #64748b; | |
| } | |
| .badge-row { | |
| display: flex; | |
| gap: 8px; | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| } | |
| .badge { | |
| background: #e8faf7; | |
| border: 1px solid #b6efe5; | |
| color: #0f766e; | |
| font-size: 12px; | |
| padding: 4px 10px; | |
| border-radius: 999px; | |
| } | |
| .status-line { | |
| text-align: center; | |
| color: #64748b; | |
| margin-bottom: 18px; | |
| } | |
| .tabs { | |
| display: flex; | |
| gap: 8px; | |
| margin-bottom: 14px; | |
| } | |
| .tabs button { | |
| border: 1px solid #dce7ef; | |
| border-radius: 10px; | |
| background: #fff; | |
| color: #334155; | |
| padding: 8px 14px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| } | |
| .tabs button.active { | |
| background: #e8faf7; | |
| border-color: #9de5d8; | |
| color: #0f766e; | |
| } | |
| .panel { | |
| margin-bottom: 14px; | |
| } | |
| .panel h2 { | |
| margin: 0 0 10px; | |
| font-size: 17px; | |
| color: #0f172a; | |
| } | |
| .card { | |
| background: #fff; | |
| border: 1px solid #dce7ef; | |
| border-radius: 14px; | |
| padding: 14px; | |
| margin-bottom: 12px; | |
| } | |
| .audio-tools, | |
| .text-tools { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(120px, 1fr)); | |
| gap: 10px; | |
| margin-bottom: 12px; | |
| } | |
| .btn, | |
| select { | |
| min-height: 42px; | |
| border-radius: 10px; | |
| border: 1px solid #cdd9e3; | |
| padding: 0 12px; | |
| font-size: 14px; | |
| } | |
| .btn { | |
| background: #fff; | |
| font-weight: 600; | |
| cursor: pointer; | |
| } | |
| .btn.primary { | |
| background: linear-gradient(135deg, #0d9488, #059669); | |
| color: #fff; | |
| border: none; | |
| } | |
| .btn.secondary { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .btn.danger { | |
| background: #fee2e2; | |
| border-color: #fecaca; | |
| color: #991b1b; | |
| } | |
| .audio-player { | |
| width: 100%; | |
| } | |
| .file-name { | |
| margin-top: 8px; | |
| color: #64748b; | |
| font-size: 13px; | |
| } | |
| .translate-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-top: 12px; | |
| } | |
| .error-text { | |
| color: #991b1b; | |
| font-size: 13px; | |
| } | |
| .text-input { | |
| width: 100%; | |
| min-height: 220px; | |
| resize: vertical; | |
| border: 1px solid #cdd9e3; | |
| border-radius: 10px; | |
| padding: 12px; | |
| font-size: 14px; | |
| box-sizing: border-box; | |
| } | |
| .transcript { | |
| margin: 0; | |
| background: #f8fbfd; | |
| border: 1px solid #e2e8f0; | |
| border-radius: 10px; | |
| padding: 10px; | |
| white-space: pre-wrap; | |
| color: #334155; | |
| max-height: 260px; | |
| overflow: auto; | |
| } | |
| .results-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 12px; | |
| } | |
| .card h3 { | |
| margin: 0 0 12px; | |
| color: #0f766e; | |
| } | |
| .muted { | |
| color: #64748b; | |
| font-weight: 500; | |
| } | |
| .kv-grid { | |
| display: grid; | |
| gap: 8px; | |
| max-height: 540px; | |
| overflow: auto; | |
| } | |
| .kv-row { | |
| display: grid; | |
| grid-template-columns: 1.2fr 1fr; | |
| gap: 10px; | |
| border-bottom: 1px solid #edf2f7; | |
| padding-bottom: 6px; | |
| } | |
| .kv-row span { | |
| color: #64748b; | |
| } | |
| .danger { | |
| border-color: #fecaca; | |
| } | |
| .referral { | |
| font-weight: 700; | |
| color: #b91c1c; | |
| margin: 0 0 8px; | |
| } | |
| .reason { | |
| margin: 0 0 12px; | |
| color: #334155; | |
| } | |
| .danger-list { | |
| display: grid; | |
| gap: 8px; | |
| max-height: 540px; | |
| overflow: auto; | |
| } | |
| .danger-item { | |
| background: #f8fafc; | |
| border: 1px solid #e2e8f0; | |
| border-left: 3px solid #ef4444; | |
| border-radius: 10px; | |
| padding: 10px; | |
| display: grid; | |
| gap: 4px; | |
| } | |
| .danger-item span { | |
| color: #64748b; | |
| font-size: 12px; | |
| font-weight: 600; | |
| } | |
| .danger-item em { | |
| color: #0f172a; | |
| font-style: normal; | |
| } | |
| .danger-item p { | |
| margin: 0; | |
| color: #475569; | |
| font-style: italic; | |
| } | |
| .error-banner { | |
| border: 1px solid #fecaca; | |
| background: #fef2f2; | |
| color: #b91c1c; | |
| border-radius: 10px; | |
| padding: 10px 12px; | |
| margin-bottom: 10px; | |
| } | |
| .loader { | |
| color: #0369a1; | |
| background: #eff6ff; | |
| border-radius: 10px; | |
| padding: 10px; | |
| } | |
| .timing { | |
| display: flex; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| color: #334155; | |
| margin-top: 6px; | |
| } | |
| .pipeline-progress { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .progress-step { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 8px 12px; | |
| border-radius: 8px; | |
| font-size: 14px; | |
| transition: all 0.3s ease; | |
| } | |
| .progress-step.done { | |
| background: #f0fdf9; | |
| color: #0f766e; | |
| } | |
| .progress-step.running { | |
| background: #eff6ff; | |
| color: #0369a1; | |
| } | |
| .progress-step.running .step-icon { | |
| animation: pulse 1s infinite; | |
| } | |
| .progress-step.pending { | |
| color: #94a3b8; | |
| } | |
| .step-icon { | |
| font-size: 16px; | |
| width: 20px; | |
| text-align: center; | |
| flex-shrink: 0; | |
| } | |
| .step-time { | |
| font-size: 12px; | |
| opacity: 0.7; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.3; } | |
| } | |
| .history-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 12px; | |
| } | |
| .history-header h2 { | |
| margin: 0; | |
| } | |
| .history-list { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .history-entry { | |
| cursor: pointer; | |
| transition: border-color 0.2s; | |
| } | |
| .history-entry:hover { | |
| border-color: #9de5d8; | |
| } | |
| .history-meta { | |
| display: flex; | |
| gap: 12px; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| } | |
| .history-meta strong { | |
| color: #0f766e; | |
| } | |
| .history-meta span { | |
| color: #64748b; | |
| font-size: 13px; | |
| } | |
| .history-preview { | |
| margin: 6px 0 0; | |
| color: #475569; | |
| font-size: 13px; | |
| line-height: 1.4; | |
| } | |
| .history-detail-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-bottom: 14px; | |
| } | |
| .history-detail-header h3 { | |
| margin: 0; | |
| } | |
| .export-buttons { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: 12px; | |
| } | |
| .about-card h2 { | |
| color: #0f766e; | |
| margin-top: 0; | |
| } | |
| .about-card h3 { | |
| color: #0f766e; | |
| margin-top: 20px; | |
| margin-bottom: 8px; | |
| font-size: 16px; | |
| } | |
| .about-card p { | |
| color: #334155; | |
| line-height: 1.6; | |
| margin: 4px 0 8px; | |
| } | |
| .about-card ul { | |
| padding-left: 20px; | |
| color: #334155; | |
| line-height: 1.8; | |
| } | |
| .pipeline-steps { | |
| display: grid; | |
| gap: 8px; | |
| margin-top: 8px; | |
| } | |
| .step { | |
| display: grid; | |
| grid-template-columns: 200px 1fr; | |
| gap: 10px; | |
| background: #f0fdf9; | |
| border: 1px solid #d1f5ea; | |
| border-radius: 10px; | |
| padding: 10px 14px; | |
| align-items: center; | |
| } | |
| .step strong { | |
| color: #0f766e; | |
| } | |
| .step span { | |
| color: #475569; | |
| font-size: 14px; | |
| } | |
| .tech-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 8px; | |
| margin-top: 8px; | |
| } | |
| .tech-item { | |
| background: #f8fbfd; | |
| border: 1px solid #e2e8f0; | |
| border-radius: 10px; | |
| padding: 10px 14px; | |
| display: grid; | |
| gap: 2px; | |
| } | |
| .tech-item strong { | |
| color: #0f766e; | |
| font-size: 13px; | |
| } | |
| .tech-item span { | |
| color: #475569; | |
| font-size: 14px; | |
| } | |
| @media (max-width: 960px) { | |
| .hero h1 { | |
| font-size: 34px; | |
| } | |
| .audio-tools, | |
| .text-tools { | |
| grid-template-columns: 1fr; | |
| } | |
| .results-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .step { | |
| grid-template-columns: 1fr; | |
| } | |
| .tech-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| /* ── Field Mode ── */ | |
| .connectivity-badge { | |
| display: inline-block; | |
| padding: 6px 14px; | |
| border-radius: 20px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| margin-bottom: 12px; | |
| } | |
| .connectivity-badge.online { | |
| background: #dcfce7; | |
| color: #166534; | |
| } | |
| .connectivity-badge.offline { | |
| background: #fef3c7; | |
| color: #92400e; | |
| } | |
| .field-desc { | |
| color: #64748b; | |
| font-size: 14px; | |
| margin-bottom: 16px; | |
| line-height: 1.5; | |
| } | |
| .queue-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 12px; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .queue-header h3 { | |
| margin: 0; | |
| color: #0f766e; | |
| } | |
| .queue-actions { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| .queue-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .queue-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 10px 14px; | |
| border-radius: 8px; | |
| background: #f8fafc; | |
| border: 1px solid #e2e8f0; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .queue-item.processing { | |
| background: #eff6ff; | |
| border-color: #93c5fd; | |
| } | |
| .queue-meta { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| font-size: 13px; | |
| } | |
| .queue-meta strong { | |
| color: #1e293b; | |
| } | |
| .queue-meta span { | |
| color: #64748b; | |
| } | |
| .queue-status.pending { | |
| color: #d97706; | |
| } | |
| .queue-status.processing { | |
| color: #2563eb; | |
| } | |
| .queue-item-actions { | |
| display: flex; | |
| gap: 6px; | |
| } | |
| .metadata-card { | |
| border-left: 4px solid #0d9488; | |
| } | |
| .metadata-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); | |
| gap: 10px; | |
| } | |
| .metadata-grid label { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| font-size: 12px; | |
| color: #475569; | |
| font-weight: 500; | |
| } | |
| .metadata-grid input, | |
| .metadata-grid select { | |
| min-height: 38px; | |
| border: 1px solid #cdd9e3; | |
| border-radius: 8px; | |
| padding: 0 10px; | |
| font-size: 14px; | |
| width: 100%; | |
| box-sizing: border-box; | |
| background: #fff; | |
| color: #0f172a; | |
| } | |
| .metadata-grid input::placeholder { | |
| color: #94a3b8; | |
| } | |
| .age-row { | |
| display: flex; | |
| gap: 6px; | |
| } | |
| .age-row input { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .age-row select { | |
| flex: 0 0 96px; | |
| } | |
| .audio-tools-3 { | |
| grid-template-columns: repeat(3, minmax(120px, 1fr)); | |
| } | |
| .audio-tools-1 { | |
| grid-template-columns: minmax(160px, 240px); | |
| } | |