:root { --bg-primary: #0a0a0a; --bg-panel: #0f0f0f; --bg-panel-dark: #080808; --border-dim: #1a4a4a; --accent: #00ffff; --border-bright: var(--accent); --text-primary: #cccccc; --text-dim: #555555; --text-accent: var(--accent); --text-warning: #ff6600; --font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; --font-size: 13px; --panel-gap: 1px; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { background: var(--bg-primary); color: var(--text-primary); font-family: var(--font-mono); font-size: var(--font-size); line-height: 1.4; height: 100vh; overflow: hidden; } /* DAW layout — header / (sidebar + main) / transport */ .app-shell { display: grid; grid-template-rows: 40px 1fr 48px; grid-template-columns: 280px 1fr; grid-template-areas: "header header" "sidebar main" "transport transport"; height: 100vh; gap: var(--panel-gap); } .header { grid-area: header; background: var(--bg-panel-dark); border-bottom: 1px solid var(--border-dim); display: flex; align-items: center; padding: 0 16px; gap: 16px; } .header-title { color: var(--text-accent); font-size: 16px; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; } .sidebar { grid-area: sidebar; display: flex; flex-direction: column; border-right: 1px solid var(--border-dim); overflow: hidden; gap: var(--panel-gap); } .panel { border: 1px solid var(--border-dim); background: var(--bg-panel); display: flex; flex-direction: column; overflow: hidden; } .panel-header { background: var(--bg-panel-dark); border-bottom: 1px solid var(--border-dim); padding: 6px 12px; font-size: 11px; letter-spacing: 0.12em; color: var(--text-accent); text-transform: uppercase; flex-shrink: 0; } .panel-content { flex: 1; padding: 8px 12px; overflow-y: auto; min-height: 0; } /* Scrollbar — terminal feel */ ::-webkit-scrollbar { width: 4px; } ::-webkit-scrollbar-track { background: var(--bg-primary); } ::-webkit-scrollbar-thumb { background: var(--border-dim); } .main-area { grid-area: main; background: var(--bg-panel-dark); border: 1px solid var(--border-dim); display: flex; align-items: center; justify-content: center; color: var(--text-dim); font-size: 14px; letter-spacing: 0.1em; } .transport-bar { grid-area: transport; background: var(--bg-panel-dark); border-top: 1px solid var(--border-dim); display: flex; align-items: center; padding: 0 16px; color: var(--text-dim); font-size: 12px; letter-spacing: 0.08em; } /* Status dot */ .status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-dim); flex-shrink: 0; } .status-dot.connected { background: #00ff88; } .status-dot.error { background: #ff3333; } /* Text helpers */ .text-dim { color: var(--text-dim); } .text-accent { color: var(--text-accent); } /* Device list rows */ .device-row { display: flex; align-items: center; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--bg-panel-dark); gap: 8px; } .device-row:last-child { border-bottom: none; } .device-row-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; } /* Form elements */ input, select, button { background: var(--bg-panel); border: 1px solid var(--border-dim); color: var(--text-primary); font-family: var(--font-mono); font-size: var(--font-size); padding: 4px 8px; outline: none; } button:hover { border-color: var(--border-bright); color: var(--text-accent); cursor: pointer; } /* Device form */ .device-form { display: flex; flex-direction: column; gap: 4px; padding: 8px 12px; border-top: 1px solid var(--border-dim); } .device-form button[type="submit"] { margin-top: 4px; text-transform: uppercase; letter-spacing: 0.08em; } /* Device remove button */ .device-remove { background: none; border: none; color: var(--text-dim); font-family: var(--font-mono); font-size: 16px; cursor: pointer; padding: 0 4px; line-height: 1; flex-shrink: 0; } .device-remove:hover { color: #ff3333; border: none; }