fix(theme): palette Deep Navy Slate + legibilidad ribbon + capa indicadores

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 23:43:29 -04:00
parent 0dc1050e5a
commit d0d47ec5fb
+167 -172
View File
@@ -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;
}