diff --git a/services/web-ui/public/recorders.html b/services/web-ui/public/recorders.html index 356d8f4..14c16c4 100644 --- a/services/web-ui/public/recorders.html +++ b/services/web-ui/public/recorders.html @@ -118,6 +118,138 @@ .slide-panel-header { border-bottom: 1px solid oklch(28% 0.04 260 / 0.4); padding: 18px 22px; } .slide-panel-title { font-size: 15px; font-weight: 600; letter-spacing: -0.005em; } .slide-panel-body { padding: 18px 22px; } + + /* ── Codec tabs (Video / Audio / Container) ── */ + .codec-block { + border: 1px solid oklch(28% 0.04 260 / 0.45); + border-radius: 10px; + background: oklch(12% 0.018 250 / 0.55); + margin-bottom: 14px; + overflow: hidden; + } + .codec-block-header { + display: flex; align-items: center; justify-content: space-between; + padding: 10px 14px; + background: oklch(15% 0.025 260 / 0.55); + border-bottom: 1px solid oklch(28% 0.04 260 / 0.4); + } + .codec-block-title { + font-size: 12px; font-weight: 600; + letter-spacing: 0.14em; text-transform: uppercase; + color: var(--text-secondary); + } + .codec-tabs { + display: flex; gap: 0; + padding: 0 8px; + background: oklch(10% 0.015 250 / 0.5); + border-bottom: 1px solid oklch(28% 0.04 260 / 0.4); + } + .codec-tab { + flex: 1; + padding: 10px 10px 9px; + background: transparent; + border: 0; + border-bottom: 2px solid transparent; + font-size: 12px; font-weight: 500; + letter-spacing: 0.08em; text-transform: uppercase; + color: var(--text-tertiary); + cursor: pointer; + transition: color 120ms ease, border-color 120ms ease; + } + .codec-tab:hover { color: var(--text-secondary); } + .codec-tab.active { + color: oklch(78% 0.14 266); + border-bottom-color: oklch(55% 0.20 266 / 0.85); + } + .codec-tab-panel { display: none; padding: 14px; } + .codec-tab-panel.active { display: block; } + + /* ── SDI picker (node + visual port card) ── */ + .sdi-picker { display: flex; flex-direction: column; gap: 12px; } + .sdi-card-wrap { + border: 1px solid oklch(28% 0.04 260 / 0.45); + border-radius: 10px; + background: + radial-gradient(ellipse 60% 40% at 50% 0%, oklch(28% 0.10 266 / 0.18), transparent 70%), + oklch(11% 0.018 250 / 0.6); + padding: 14px 16px 12px; + display: flex; flex-direction: column; gap: 8px; + } + .sdi-card-empty { + padding: 18px; + text-align: center; + font-size: 12px; + color: var(--text-tertiary); + font-family: var(--font-mono); + letter-spacing: 0.02em; + } + .sdi-card-meta { + display: flex; flex-wrap: wrap; gap: 14px; + font-size: 11px; color: var(--text-tertiary); + font-family: var(--font-mono); letter-spacing: 0.02em; + } + .sdi-card-meta strong { color: var(--text-secondary); font-weight: 500; } + + .bmd-card-svg { + display: block; width: 100%; + max-width: 360px; margin: 0 auto; + height: auto; + } + .bmd-card-body { + fill: oklch(18% 0.04 260 / 0.85); + stroke: oklch(30% 0.05 260 / 0.7); + stroke-width: 1; + } + .bmd-card-bracket { + fill: oklch(60% 0.02 260 / 0.65); + stroke: oklch(40% 0.03 260 / 0.8); + stroke-width: 1; + } + .bmd-card-trace { + fill: none; + stroke: oklch(35% 0.08 266 / 0.4); + stroke-width: 0.8; + stroke-dasharray: 2 3; + } + .bmd-card-model { + fill: oklch(55% 0.04 260); + font: 600 9px/1 var(--font-mono, ui-monospace); + letter-spacing: 0.14em; + } + .bmd-port-ring { + fill: oklch(20% 0.03 260); + stroke: oklch(45% 0.04 260); + stroke-width: 1.4; + transition: stroke 120ms ease, fill 120ms ease; + } + .bmd-port-pin { + fill: oklch(70% 0.03 260); + } + .bmd-port-label { + fill: var(--text-secondary, oklch(75% 0.02 260)); + font: 600 11px/1 ui-sans-serif, system-ui, sans-serif; + } + .bmd-port-sublabel { + fill: var(--text-tertiary, oklch(55% 0.02 260)); + font: 500 9px/1 var(--font-mono, ui-monospace); + letter-spacing: 0.04em; + } + .bmd-port-group { transition: filter 120ms ease; } + .bmd-port-group:hover .bmd-port-ring { + stroke: oklch(60% 0.18 266 / 0.8); + } + .bmd-port-group.is-selected .bmd-port-ring { + fill: oklch(30% 0.14 266 / 0.55); + stroke: oklch(75% 0.18 266); + stroke-width: 2; + filter: drop-shadow(0 0 6px oklch(60% 0.20 266 / 0.7)); + } + .bmd-port-group.is-selected .bmd-port-pin { + fill: oklch(85% 0.10 266); + } + .bmd-port-group.is-selected .bmd-port-label { + fill: oklch(82% 0.14 266); + }
@@ -255,57 +387,194 @@ - -