Spaces:
Running
Running
| .midirouter-container { | |
| padding: 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .midirouter-title { | |
| margin: 0 0 0.5rem 0; | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| } | |
| .port-selection { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 1rem; | |
| align-items: flex-end; | |
| } | |
| .port-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.25rem; | |
| flex: 1; | |
| min-width: 200px; | |
| } | |
| .port-group label { | |
| font-weight: 500; | |
| font-size: 0.875rem; | |
| } | |
| .port-group select { | |
| padding: 0.5rem; | |
| padding-right: 2rem; | |
| border-radius: 4px; | |
| border: 1px solid var(--border-color-primary, #ccc); | |
| background: var(--background-fill-primary, white); | |
| font-size: 0.875rem; | |
| /* Draw our own chevron so the dropdown affordance is visible even when a | |
| host theme strips the native one. */ | |
| appearance: none; | |
| -webkit-appearance: none; | |
| -moz-appearance: none; | |
| background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; | |
| background-position: right 0.65rem center; | |
| background-size: 0.7rem; | |
| cursor: pointer; | |
| } | |
| .speaker-toggle { | |
| display: flex; | |
| align-items: center; | |
| padding-bottom: 0.5rem; | |
| } | |
| .speaker-toggle label { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| font-weight: 500; | |
| font-size: 0.875rem; | |
| cursor: pointer; | |
| white-space: nowrap; | |
| } | |
| .speaker-toggle input[type="checkbox"] { | |
| width: 1rem; | |
| height: 1rem; | |
| cursor: pointer; | |
| } | |
| .status-panel { | |
| padding: 1rem; | |
| border-radius: 8px; | |
| font-size: 0.875rem; | |
| } | |
| .status-pending { | |
| background: var(--color-yellow-100, #fef9c3); | |
| color: var(--color-yellow-800, #854d0e); | |
| } | |
| .status-error { | |
| background: var(--color-red-100, #fee2e2); | |
| color: var(--color-red-800, #991b1b); | |
| } | |
| .status-info { | |
| background: var(--background-fill-secondary, #f5f5f5); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .status-row { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .status-label { | |
| font-weight: 500; | |
| min-width: 100px; | |
| } | |
| .processing-progress { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| flex: 1; | |
| } | |
| .processing-progress-track { | |
| flex: 1; | |
| height: 6px; | |
| border-radius: 3px; | |
| background: var(--border-color-primary, #ddd); | |
| overflow: hidden; | |
| } | |
| .processing-progress-fill { | |
| height: 100%; | |
| background: var(--color-accent, #2563eb); | |
| transition: width 0.1s linear; | |
| } | |
| .processing-progress-label { | |
| font-size: 0.75rem; | |
| font-family: monospace; | |
| color: var(--body-text-color-subdued, #666); | |
| white-space: nowrap; | |
| } | |
| .status-recording { | |
| color: var(--color-red-600, #dc2626); | |
| font-weight: 600; | |
| } | |
| .status-playing { | |
| color: var(--color-green-600, #16a34a); | |
| font-weight: 600; | |
| } | |
| .control-buttons { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.5rem; | |
| } | |
| .btn { | |
| padding: 0.5rem 1rem; | |
| border-radius: 6px; | |
| border: none; | |
| cursor: pointer; | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| transition: opacity 0.2s; | |
| } | |
| .btn:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| .btn-primary { | |
| background: var(--color-accent, #2563eb); | |
| color: white; | |
| } | |
| .btn-primary:hover:not(:disabled) { | |
| background: var(--color-accent-soft, #1d4ed8); | |
| } | |
| .btn-secondary { | |
| background: var(--background-fill-secondary, #e5e5e5); | |
| color: var(--body-text-color, #333); | |
| } | |
| .btn-secondary:hover:not(:disabled) { | |
| background: var(--background-fill-primary, #d4d4d4); | |
| } | |
| .btn-warning { | |
| background: var(--color-yellow-500, #eab308); | |
| color: white; | |
| } | |
| .btn-warning:hover:not(:disabled) { | |
| background: var(--color-yellow-600, #ca8a04); | |
| } | |
| .btn-danger { | |
| background: var(--color-red-500, #ef4444); | |
| color: white; | |
| } | |
| .btn-danger:hover:not(:disabled) { | |
| background: var(--color-red-600, #dc2626); | |
| } | |
| .info-panel { | |
| padding: 1rem; | |
| background: var(--background-fill-secondary, #f5f5f5); | |
| border-radius: 8px; | |
| font-size: 0.8rem; | |
| color: var(--body-text-color-subdued, #666); | |
| } | |
| .info-panel p { | |
| margin: 0 0 0.5rem 0; | |
| } | |
| .info-panel p:last-child { | |
| margin-bottom: 0; | |
| } | |
| .bpm-info { | |
| font-family: monospace; | |
| } | |