From d0d47ec5fbc8beb8eb8d264662934db3b97a6e7a Mon Sep 17 00:00:00 2001 From: alro1965 Date: Tue, 26 May 2026 23:43:29 -0400 Subject: [PATCH] fix(theme): palette Deep Navy Slate + legibilidad ribbon + capa indicadores MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reemplaza fondos casi-negros (#0e1117, #1e2128) por paleta azul-gris marino profesional (#252a38 main, #1a1e2c viewport canvas) - Elimina max-width:72px de ribbonButton — texto como "C. Incendio", "Post-Proc.", "Agua Dulce" ya no se corta - layerVisBtn: indicador visual por color (azul=#0d99ff visible / gris=#363b4e oculta) sin depender de texto ni ícono - layerLockBtn: ámbar=#fbbf24 bloqueada / gris libre - Mejora contraste de ribbonGroupTitle, viewportTitle, placeholderTitle, placeholderDesc y viewportPlaceholder - Agrega border-bottom a ribbonContent para separación visual Co-Authored-By: Claude Sonnet 4.6 --- arshipdesign/ui/themes/dark.qss | 339 ++++++++++++++++---------------- 1 file changed, 167 insertions(+), 172 deletions(-) diff --git a/arshipdesign/ui/themes/dark.qss b/arshipdesign/ui/themes/dark.qss index f93ed8a..abb5472 100644 --- a/arshipdesign/ui/themes/dark.qss +++ b/arshipdesign/ui/themes/dark.qss @@ -1,8 +1,18 @@ /* ============================================================ - AR-ShipDesign — Tema Oscuro Profesional - Estilo: ingeniería CAD / naval / Office dark mode - Paleta: #1e2128 fondo, #252830 panel, #2d3139 elevado, - #0d99ff acento, #e8eaf0 texto, #8b919e texto muted + AR-ShipDesign — Tema Oscuro Profesional v2 + Paleta "Deep Navy Slate" — sin negro puro, azul oceánico + ───────────────────────────────────────────────────────── + #252a38 fondo principal (slate azul-gris) + #2e3342 paneles / toolbar + #373c4e elementos elevados + #424757 hover / inputs + #1a1e2c viewport canvas (azul marino profundo) + #22263a viewport title bar + #454a5e bordes principales + #363b4e bordes sutiles + #8a93aa texto muted + #dce1f0 texto principal + #0d99ff acento (azul eléctrico) ============================================================ */ /* ─── BASE ─────────────────────────────────────────────────── */ @@ -12,8 +22,8 @@ } QMainWindow, QDialog, QWidget { - background-color: #1e2128; - color: #e8eaf0; + background-color: #252a38; + color: #dce1f0; font-family: "Segoe UI", Arial, sans-serif; font-size: 13px; } @@ -21,9 +31,9 @@ QMainWindow, QDialog, QWidget { /* ─── MENÚ ──────────────────────────────────────────────────── */ QMenuBar { - background-color: #252830; - color: #e8eaf0; - border-bottom: 1px solid #333841; + background-color: #2e3342; + color: #dce1f0; + border-bottom: 1px solid #454a5e; padding: 1px 0; } QMenuBar::item { @@ -31,7 +41,7 @@ QMenuBar::item { background: transparent; } QMenuBar::item:selected { - background-color: #2d3139; + background-color: #373c4e; color: #ffffff; } QMenuBar::item:pressed { @@ -40,9 +50,9 @@ QMenuBar::item:pressed { } QMenu { - background-color: #252830; - color: #e8eaf0; - border: 1px solid #3a3f4b; + background-color: #2e3342; + color: #dce1f0; + border: 1px solid #454a5e; padding: 3px 0; } QMenu::item { @@ -53,20 +63,20 @@ QMenu::item:selected { color: #ffffff; } QMenu::item:disabled { - color: #555b67; + color: #555c6e; } QMenu::separator { height: 1px; - background: #333841; + background: #454a5e; margin: 3px 8px; } -/* ─── RIBBON TOOLBAR (contenedor) ───────────────────────────── */ +/* ─── RIBBON TOOLBAR (contenedor QToolBar) ──────────────────── */ QToolBar#ribbonToolbar { - background-color: #252830; + background-color: #2e3342; border: none; - border-bottom: 1px solid #333841; + border-bottom: 1px solid #454a5e; padding: 0; spacing: 0; margin: 0; @@ -75,13 +85,13 @@ QToolBar#ribbonToolbar { /* ─── RIBBON BAR ────────────────────────────────────────────── */ QWidget#ribbonBar { - background-color: #252830; + background-color: #2e3342; } /* Fila de pestañas */ QWidget#ribbonTabRow { - background-color: #1e2128; - border-bottom: 1px solid #333841; + background-color: #252a38; + border-bottom: 1px solid #454a5e; } /* Botones de pestañas */ @@ -90,68 +100,66 @@ QToolButton#ribbonTabBtn { border: none; border-bottom: 2px solid transparent; border-radius: 0; - padding: 0 14px; - color: #8b919e; + padding: 0 16px; + color: #8a93aa; font-size: 12px; min-width: 80px; height: 26px; } QToolButton#ribbonTabBtn:hover { - background-color: #2d3139; - color: #c8cad0; + background-color: #373c4e; + color: #c0c8d8; } QToolButton#ribbonTabBtn:checked { - background-color: #252830; + background-color: #2e3342; color: #0d99ff; border-bottom: 2px solid #0d99ff; font-weight: bold; } -/* Stack de contenido del ribbon */ +/* Stack de contenido */ QStackedWidget#ribbonContent { - background-color: #252830; + background-color: #2e3342; + border-bottom: 1px solid #454a5e; } -/* Grupo individual */ +/* Grupo de botones */ QFrame#ribbonGroup { background-color: transparent; border: none; margin: 2px 0; } -/* Área de botones dentro del grupo */ QWidget#ribbonBtnArea { background-color: transparent; } -/* Etiqueta del nombre del grupo */ QLabel#ribbonGroupTitle { - color: #8b919e; + color: #7a8398; font-size: 10px; padding: 2px 0 3px 0; background-color: transparent; } -/* Separador vertical entre grupos */ QFrame#ribbonSep { - color: #2d3139; + color: #373c4e; margin: 6px 2px; } -/* Botones de la ribbon */ +/* Botones — sin max-width para que el texto no se corte */ QToolButton#ribbonButton { background: transparent; - color: #e8eaf0; + color: #dce1f0; border: 1px solid transparent; border-radius: 3px; - padding: 4px 6px 2px 6px; + padding: 4px 8px 2px 8px; font-size: 11px; - min-width: 46px; - max-width: 72px; + min-width: 48px; + /* SIN max-width — texto completo siempre visible */ } QToolButton#ribbonButton:hover { - background-color: #2d3139; - border-color: #3a3f4b; + background-color: #373c4e; + border-color: #454a5e; } QToolButton#ribbonButton:pressed { background-color: #0d99ff; @@ -159,49 +167,53 @@ QToolButton#ribbonButton:pressed { border-color: #0d99ff; } QToolButton#ribbonButton:checked { - background-color: #1a4a70; + background-color: #1a4070; border-color: #0d99ff; } QToolButton#ribbonButton:disabled { - color: #555b67; + color: #555c6e; } /* ─── 4 VIEWPORTS ───────────────────────────────────────────── */ QWidget#fourViewport { - background-color: #12151a; + background-color: #1a1e2c; } QFrame#viewportFrame { - background-color: #12151a; - border: 1px solid #1e2128; + background-color: #1a1e2c; + border: 1px solid #2a2e40; } QWidget#viewportTitleBar { - background-color: #1a1e26; - border-bottom: 1px solid #2a2e38; + background-color: #22263a; + border-bottom: 1px solid #2e3448; } QLabel#viewportTitle { - color: #6b7280; + color: #6070a0; font-size: 11px; font-weight: bold; letter-spacing: 0.5px; } QWidget#viewportCanvas { - background-color: #0e1117; + background-color: #1a1e2c; } +/* Texto watermark en el viewport — sutil pero legible */ QLabel#viewportPlaceholder { - color: #1e2540; - font-size: 20px; + color: #2a3060; + font-size: 16px; font-family: "Consolas", monospace; font-weight: bold; letter-spacing: 2px; } -/* Separadores arrastrables del viewport */ +/* Separadores arrastrables del viewport — azul eléctrico */ +QSplitter#viewportSplitter { + background-color: #1a1e2c; +} QSplitter#viewportSplitter::handle { background-color: #0d99ff; } @@ -212,20 +224,20 @@ QSplitter#viewportSplitter::handle:vertical { height: 3px; } QSplitter#viewportSplitter::handle:hover { - background-color: #3db8ff; + background-color: #4dbfff; } /* ─── DOCK WIDGETS ──────────────────────────────────────────── */ QDockWidget { - color: #e8eaf0; + color: #dce1f0; font-weight: bold; font-size: 12px; } QDockWidget::title { - background-color: #252830; + background-color: #2e3342; padding: 4px 8px; - border-bottom: 1px solid #333841; + border-bottom: 1px solid #454a5e; text-align: left; } QDockWidget::close-button, @@ -236,122 +248,122 @@ QDockWidget::float-button { } QDockWidget::close-button:hover, QDockWidget::float-button:hover { - background-color: #3a3f4b; + background-color: #454a5e; border-radius: 2px; } /* ─── PANEL DE CAPAS ────────────────────────────────────────── */ QWidget#layersPanel { - background-color: #1e2128; + background-color: #252a38; } QWidget#layersPanelHeader { - background-color: #252830; - border-bottom: 1px solid #333841; + background-color: #2e3342; + border-bottom: 1px solid #454a5e; } QFrame#panelSep { - color: #333841; + color: #454a5e; max-height: 1px; } QScrollArea#layersScrollArea { - background-color: #1e2128; + background-color: #252a38; border: none; } QWidget#layersContainer { - background-color: #1e2128; + background-color: #252a38; } +/* Fila de capa */ QWidget#layerRow { background-color: transparent; min-height: 26px; } QWidget#layerRow:hover { - background-color: #252830; + background-color: #2e3342; } QLabel#layerName { - color: #c8cad0; + color: #c0c8d8; font-size: 12px; } -/* Botón de visibilidad de capa */ +/* + Botón de visibilidad: azul = capa visible, gris oscuro = oculta + (sin texto — el color ES el indicador) +*/ QToolButton#layerVisBtn { - background: transparent; - border: 1px solid transparent; + background-color: #0d99ff; + border: none; border-radius: 2px; - color: #0d99ff; - font-size: 9px; - font-weight: bold; + /* 16×16 fijo desde Python */ +} +QToolButton#layerVisBtn:!checked { + background-color: #363b4e; + border: 1px solid #454a5e; } QToolButton#layerVisBtn:hover { - background-color: #2d3139; - border-color: #3a3f4b; -} -QToolButton#layerVisBtn:checked { - background-color: #1a4a70; - border-color: #0d99ff; + border: 1px solid #6bb8ff; } -/* Botón de bloqueo de capa */ +/* + Botón de bloqueo: ámbar = bloqueada, gris = libre +*/ QToolButton#layerLockBtn { - background: transparent; - border: 1px solid transparent; + background-color: #363b4e; + border: 1px solid #454a5e; border-radius: 2px; - color: #fbbf24; - font-size: 9px; -} -QToolButton#layerLockBtn:hover { - background-color: #2d3139; - border-color: #3a3f4b; } QToolButton#layerLockBtn:checked { - background-color: #3d2c00; + background-color: #fbbf24; border-color: #fbbf24; } +QToolButton#layerLockBtn:hover { + border: 1px solid #ffd066; +} /* ─── PROPIEDADES ───────────────────────────────────────────── */ QWidget#propContent { - background-color: #1e2128; + background-color: #252a38; } QLabel#propSection { - color: #8b919e; + color: #8a93aa; font-size: 11px; padding-bottom: 6px; - border-bottom: 1px solid #333841; + border-bottom: 1px solid #454a5e; margin-bottom: 4px; } QLabel#propKey { - color: #8b919e; + color: #8a93aa; font-size: 12px; } QLabel#propVal { - color: #e8eaf0; + color: #dce1f0; font-size: 13px; } /* ─── PANEL HIDROSTÁTICOS ───────────────────────────────────── */ QFrame#hydrostaticsPanel { - background-color: #14181f; - border-top: 1px solid #333841; + background-color: #1e2232; + border-top: 1px solid #454a5e; } QLabel#hydroTitle { - color: #555b67; + color: #555c6e; font-size: 10px; font-weight: bold; padding: 0 10px 0 4px; letter-spacing: 1px; } QFrame#hydroSep { - color: #333841; + color: #363b4e; } QLabel#hydroKey { - color: #8b919e; + color: #8a93aa; font-size: 11px; padding: 0 2px; } @@ -362,7 +374,7 @@ QLabel#hydroVal { min-width: 52px; } QLabel#hydroImoNone { - color: #555b67; + color: #555c6e; font-family: "Consolas", monospace; font-size: 12px; } @@ -382,29 +394,29 @@ QLabel#hydroImoFail { /* ─── MÓDULOS PLACEHOLDER ───────────────────────────────────── */ QWidget#modulePlaceholder { - background-color: #1e2128; + background-color: #252a38; } QLabel#placeholderTitle { - color: #2d3448; + color: #5a6585; font-size: 18px; font-weight: bold; } QLabel#placeholderDesc { - color: #3a4055; + color: #4e5870; font-size: 13px; } QLabel#placeholderMsg { - color: #333841; + color: #414c64; font-size: 12px; } /* ─── BARRA DE ESTADO ───────────────────────────────────────── */ QStatusBar { - background-color: #0d99ff; + background-color: #0a7de0; color: #ffffff; font-size: 12px; } @@ -428,44 +440,44 @@ QLabel#statusValue { /* ─── SCROLLBARS ────────────────────────────────────────────── */ QScrollBar:vertical { - background: #1e2128; + background: #252a38; width: 10px; border: none; } QScrollBar::handle:vertical { - background: #3a3f4b; + background: #454a5e; border-radius: 5px; min-height: 24px; } -QScrollBar::handle:vertical:hover { background: #555b67; } +QScrollBar::handle:vertical:hover { background: #6b7385; } QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; } QScrollBar:horizontal { - background: #1e2128; + background: #252a38; height: 10px; border: none; } QScrollBar::handle:horizontal { - background: #3a3f4b; + background: #454a5e; border-radius: 5px; min-width: 24px; } -QScrollBar::handle:horizontal:hover { background: #555b67; } +QScrollBar::handle:horizontal:hover { background: #6b7385; } QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { width: 0; } /* ─── BOTONES ───────────────────────────────────────────────── */ QPushButton { - background-color: #2d3139; - color: #e8eaf0; - border: 1px solid #3a3f4b; + background-color: #373c4e; + color: #dce1f0; + border: 1px solid #454a5e; border-radius: 3px; padding: 5px 14px; min-width: 72px; } QPushButton:hover { - background-color: #3a3f4b; - border-color: #555b67; + background-color: #424757; + border-color: #6b7385; } QPushButton:pressed { background-color: #0d99ff; @@ -473,14 +485,14 @@ QPushButton:pressed { border-color: #0d99ff; } QPushButton:default { border-color: #0d99ff; } -QPushButton:disabled { color: #555b67; border-color: #2d3139; } +QPushButton:disabled { color: #555c6e; border-color: #363b4e; } /* ─── CAMPOS DE ENTRADA ─────────────────────────────────────── */ QLineEdit, QSpinBox, QDoubleSpinBox, QComboBox { - background-color: #252830; - color: #e8eaf0; - border: 1px solid #3a3f4b; + background-color: #2e3342; + color: #dce1f0; + border: 1px solid #454a5e; border-radius: 3px; padding: 4px 6px; selection-background-color: #0d99ff; @@ -489,47 +501,47 @@ QLineEdit:focus, QSpinBox:focus, QDoubleSpinBox:focus, QComboBox:focus { border-color: #0d99ff; } QLineEdit:disabled, QSpinBox:disabled, QDoubleSpinBox:disabled { - color: #555b67; - background-color: #1e2128; + color: #555c6e; + background-color: #252a38; } QComboBox::drop-down { border: none; width: 20px; } QComboBox QAbstractItemView { - background-color: #252830; - color: #e8eaf0; - border: 1px solid #3a3f4b; + background-color: #2e3342; + color: #dce1f0; + border: 1px solid #454a5e; selection-background-color: #0d99ff; } /* ─── TABLAS Y LISTAS ───────────────────────────────────────── */ QHeaderView::section { - background-color: #252830; - color: #8b919e; + background-color: #2e3342; + color: #8a93aa; border: none; - border-right: 1px solid #333841; - border-bottom: 1px solid #333841; + border-right: 1px solid #454a5e; + border-bottom: 1px solid #454a5e; padding: 4px 8px; font-size: 12px; } QTableView, QListView { - background-color: #1e2128; - alternate-background-color: #212630; - color: #e8eaf0; - border: 1px solid #333841; - gridline-color: #2d3139; + background-color: #252a38; + alternate-background-color: #282d3c; + color: #dce1f0; + border: 1px solid #454a5e; + gridline-color: #363b4e; selection-background-color: #0d99ff; selection-color: #ffffff; } QTableView::item:hover, QListView::item:hover { - background-color: #2d3139; + background-color: #373c4e; } /* ─── ÁRBOL ─────────────────────────────────────────────────── */ QTreeWidget { - background-color: #1e2128; - alternate-background-color: #212630; - color: #e8eaf0; + background-color: #252a38; + alternate-background-color: #282d3c; + color: #dce1f0; border: none; selection-background-color: #0d99ff; selection-color: #ffffff; @@ -540,77 +552,60 @@ QTreeWidget::item { border: none; } QTreeWidget::item:hover { - background-color: #2d3139; + background-color: #373c4e; } QTreeWidget::item:selected { background-color: #0d99ff; color: #ffffff; } QTreeWidget::branch { - background-color: #1e2128; + background-color: #252a38; } /* ─── PESTAÑAS ──────────────────────────────────────────────── */ QTabWidget::pane { border: none; - border-top: 1px solid #333841; - background-color: #1e2128; + border-top: 1px solid #454a5e; + background-color: #252a38; } QTabBar { - background-color: #252830; + background-color: #2e3342; } QTabBar::tab { - background-color: #252830; - color: #8b919e; + background-color: #2e3342; + color: #8a93aa; border: none; - border-right: 1px solid #333841; + border-right: 1px solid #454a5e; padding: 6px 14px; min-width: 70px; font-size: 12px; } QTabBar::tab:selected { - background-color: #1e2128; - color: #e8eaf0; + background-color: #252a38; + color: #dce1f0; border-top: 2px solid #0d99ff; } QTabBar::tab:hover:!selected { - background-color: #2d3139; - color: #e8eaf0; + background-color: #373c4e; + color: #dce1f0; } /* ─── SPLITTER GENERAL ──────────────────────────────────────── */ -QSplitter::handle { background-color: #333841; } +QSplitter::handle { background-color: #454a5e; } QSplitter::handle:horizontal { width: 1px; } QSplitter::handle:vertical { height: 1px; } /* ─── MENSAJES / TOOLTIP ────────────────────────────────────── */ -QMessageBox { background-color: #252830; } -QMessageBox QLabel { color: #e8eaf0; } +QMessageBox { background-color: #2e3342; } +QMessageBox QLabel { color: #dce1f0; } QToolTip { - background-color: #252830; - color: #e8eaf0; - border: 1px solid #3a3f4b; + background-color: #2e3342; + color: #dce1f0; + border: 1px solid #454a5e; padding: 4px 6px; font-size: 12px; } - -/* ─── WIDGET DE INFO (ribbonInfoWidget legado) ──────────────── */ - -QWidget#ribbonInfoWidget { - background-color: transparent; - border-left: 1px solid #333841; - padding-left: 4px; -} -QLabel#tbLabel { - color: #8b919e; - font-size: 11px; -} -QLabel#tbValue { - color: #0d99ff; - font-weight: bold; - font-size: 11px; -}