summaryrefslogtreecommitdiff
path: root/ui/style.qss
diff options
context:
space:
mode:
Diffstat (limited to 'ui/style.qss')
-rw-r--r--ui/style.qss378
1 files changed, 378 insertions, 0 deletions
diff --git a/ui/style.qss b/ui/style.qss
new file mode 100644
index 0000000..60415fb
--- /dev/null
+++ b/ui/style.qss
@@ -0,0 +1,378 @@
+/* LabDAQ — Industrial Dark Theme
+ Font stack: IBM Plex Mono (monospace data), IBM Plex Sans (UI labels)
+ Palette:
+ bg-base #0b0e13
+ bg-panel #111620
+ bg-card #161d2e
+ bg-raised #1c2540
+ border #2a3558
+ accent-blue #3b82f6
+ accent-cyan #00d4ff
+ accent-green #22c55e
+ text-primary #e2e8f0
+ text-muted #64748b
+ danger #ef4444
+ warning #f59e0b
+*/
+
+* {
+ font-family: "IBM Plex Sans", "Segoe UI", Tahoma, sans-serif;
+ font-size: 12px;
+ color: #e2e8f0;
+}
+
+QMainWindow, QDialog {
+ background-color: #0b0e13;
+}
+
+/* ── Toolbar ─────────────────────────────────────────────────── */
+QToolBar#mainToolbar {
+ background-color: #0b0e13;
+ border-bottom: 1px solid #2a3558;
+ padding: 4px 8px;
+ spacing: 6px;
+}
+
+QPushButton#runButton {
+ background-color: #166534;
+ color: #dcfce7;
+ border: 1px solid #22c55e;
+ border-radius: 4px;
+ padding: 5px 16px;
+ font-family: "IBM Plex Mono", monospace;
+ font-weight: 600;
+ letter-spacing: 0.5px;
+ min-width: 90px;
+}
+QPushButton#runButton:checked {
+ background-color: #7f1d1d;
+ border-color: #ef4444;
+ color: #fee2e2;
+}
+QPushButton#runButton:hover { background-color: #15803d; }
+QPushButton#runButton:checked:hover { background-color: #991b1b; }
+
+QPushButton#logButton {
+ background-color: #1c2540;
+ color: #94a3b8;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 5px 14px;
+ font-family: "IBM Plex Mono", monospace;
+ min-width: 80px;
+}
+QPushButton#logButton:enabled {
+ color: #e2e8f0;
+ border-color: #3b82f6;
+}
+QPushButton#logButton:checked {
+ background-color: #7c2d12;
+ border-color: #ef4444;
+ color: #fee2e2;
+}
+
+QPushButton#addDeviceButton {
+ background-color: #1e3a5f;
+ color: #93c5fd;
+ border: 1px solid #3b82f6;
+ border-radius: 4px;
+ padding: 5px 14px;
+}
+QPushButton#addDeviceButton:hover {
+ background-color: #1d4ed8;
+ color: #eff6ff;
+}
+
+QLabel#timeLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 16px;
+ font-weight: 700;
+ color: #00d4ff;
+ letter-spacing: 2px;
+ padding-right: 8px;
+}
+
+/* ── Panels & Headers ────────────────────────────────────────── */
+QLabel#panelHeader {
+ background-color: #0f1521;
+ color: #64748b;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 2px;
+ padding: 6px 0px;
+ border-bottom: 1px solid #2a3558;
+}
+
+QWidget#alarmHeaderWidget {
+ background-color: #0f1521;
+ border-bottom: 1px solid #2a3558;
+}
+
+/* ── Device Cards ────────────────────────────────────────────── */
+QScrollArea#deviceScroll {
+ background-color: #0b0e13;
+ border: none;
+ border-right: 1px solid #2a3558;
+}
+
+QFrame#deviceCard {
+ background-color: #161d2e;
+ border: 1px solid #2a3558;
+ border-radius: 6px;
+}
+QFrame#deviceCard:hover {
+ border-color: #3b82f6;
+ background-color: #1c2540;
+}
+
+QLabel#deviceIcon {
+ font-size: 18px;
+}
+QLabel#deviceName {
+ font-size: 13px;
+ font-weight: 600;
+ color: #e2e8f0;
+}
+QLabel#deviceSub {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ color: #64748b;
+}
+QLabel#deviceChannelCount {
+ font-size: 11px;
+ color: #3b82f6;
+}
+
+QPushButton#configButton {
+ background-color: #1c2540;
+ color: #64748b;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ padding: 3px 10px;
+ font-size: 11px;
+}
+QPushButton#configButton:hover {
+ background-color: #1e3a5f;
+ color: #93c5fd;
+ border-color: #3b82f6;
+}
+
+/* ── Channel Readouts ────────────────────────────────────────── */
+QFrame#channelReadout {
+ background-color: #161d2e;
+ border: 1px solid #1c2540;
+ border-radius: 4px;
+}
+QFrame#channelReadout[alarm="true"] {
+ border-color: #ef4444;
+ background-color: #200d0d;
+}
+QLabel#readoutName {
+ font-size: 11px;
+ color: #64748b;
+}
+QLabel#readoutValue {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 15px;
+ font-weight: 700;
+}
+QLabel#readoutUnit {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ color: #475569;
+}
+QProgressBar#readoutBar {
+ background-color: #1c2540;
+ border: none;
+ border-radius: 2px;
+}
+
+/* ── Alarm Panel ─────────────────────────────────────────────── */
+QFrame#alarmEntry {
+ background-color: #161d2e;
+ border-radius: 3px;
+ border: none;
+}
+QLabel#alarmMsg {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ color: #e2e8f0;
+}
+QLabel#alarmTs {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ color: #475569;
+}
+QPushButton#clearAlarmsBtn {
+ background: transparent;
+ color: #64748b;
+ border: none;
+ font-size: 11px;
+ padding: 4px 8px;
+}
+QPushButton#clearAlarmsBtn:hover { color: #ef4444; }
+
+/* ── Strip Chart controls ────────────────────────────────────── */
+QPushButton#pauseButton {
+ background-color: #1c2540;
+ color: #64748b;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 4px 12px;
+}
+QPushButton#pauseButton:checked {
+ background-color: #713f12;
+ border-color: #f59e0b;
+ color: #fef3c7;
+}
+
+/* ── Config / Dialog ─────────────────────────────────────────── */
+QDialog {
+ background-color: #111620;
+}
+QTabWidget::pane {
+ background-color: #111620;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+}
+QTabBar::tab {
+ background-color: #0b0e13;
+ color: #64748b;
+ border: 1px solid #2a3558;
+ padding: 6px 16px;
+ margin-right: 2px;
+}
+QTabBar::tab:selected {
+ background-color: #1c2540;
+ color: #e2e8f0;
+ border-bottom: 2px solid #3b82f6;
+}
+
+QGroupBox {
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ margin-top: 12px;
+ padding-top: 8px;
+ color: #64748b;
+ font-size: 11px;
+ font-weight: 600;
+ letter-spacing: 0.5px;
+}
+QGroupBox::title {
+ subcontrol-origin: margin;
+ left: 8px;
+ top: -6px;
+ background-color: #111620;
+ padding: 0 4px;
+}
+
+QLineEdit, QDoubleSpinBox, QSpinBox, QComboBox {
+ background-color: #0b0e13;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ padding: 4px 8px;
+ color: #e2e8f0;
+ font-family: "IBM Plex Mono", monospace;
+ min-height: 22px;
+}
+QLineEdit:focus, QDoubleSpinBox:focus, QSpinBox:focus, QComboBox:focus {
+ border-color: #3b82f6;
+}
+QComboBox::drop-down { border: none; width: 20px; }
+QComboBox QAbstractItemView {
+ background-color: #161d2e;
+ border: 1px solid #3b82f6;
+ selection-background-color: #1e3a5f;
+}
+
+QCheckBox {
+ color: #94a3b8;
+ spacing: 6px;
+}
+QCheckBox::indicator {
+ width: 14px; height: 14px;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ background-color: #0b0e13;
+}
+QCheckBox::indicator:checked {
+ background-color: #3b82f6;
+ border-color: #3b82f6;
+}
+
+QPushButton#applyButton {
+ background-color: #1e3a5f;
+ color: #93c5fd;
+ border: 1px solid #3b82f6;
+ border-radius: 4px;
+ padding: 6px 20px;
+ font-weight: 600;
+}
+QPushButton#applyButton:hover {
+ background-color: #1d4ed8;
+ color: #eff6ff;
+}
+
+/* ── Digital output toggle ───────────────────────────────────── */
+QPushButton#digitalOutBtn {
+ background-color: #1c2540;
+ color: #64748b;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 4px 14px;
+ font-family: "IBM Plex Mono", monospace;
+ min-width: 50px;
+}
+QPushButton#digitalOutBtn:checked {
+ background-color: #166534;
+ border-color: #22c55e;
+ color: #dcfce7;
+}
+
+/* ── Scrollbars ──────────────────────────────────────────────── */
+QScrollBar:vertical {
+ background: #0b0e13;
+ width: 6px;
+ margin: 0;
+}
+QScrollBar::handle:vertical {
+ background: #2a3558;
+ border-radius: 3px;
+ min-height: 20px;
+}
+QScrollBar::handle:vertical:hover { background: #3b82f6; }
+QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; }
+QScrollBar:horizontal { height: 6px; background: #0b0e13; }
+QScrollBar::handle:horizontal { background: #2a3558; border-radius: 3px; min-width: 20px; }
+
+/* ── Splitter ────────────────────────────────────────────────── */
+QSplitter::handle {
+ background-color: #2a3558;
+}
+QSplitter::handle:hover {
+ background-color: #3b82f6;
+}
+
+/* ── Status bar ──────────────────────────────────────────────── */
+QStatusBar {
+ background-color: #0b0e13;
+ border-top: 1px solid #2a3558;
+ color: #475569;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+}
+
+/* ── General button default ──────────────────────────────────── */
+QPushButton {
+ background-color: #1c2540;
+ color: #94a3b8;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 5px 12px;
+}
+QPushButton:hover { background-color: #1e3a5f; color: #e2e8f0; }
+QPushButton:pressed { background-color: #172554; }
+QPushButton:disabled { color: #334155; border-color: #1c2540; }
+
+QLabel { color: #94a3b8; }