diff --git a/internal/ui/static/index.html b/internal/ui/static/index.html index 20195b2..485b9b3 100644 --- a/internal/ui/static/index.html +++ b/internal/ui/static/index.html @@ -62,6 +62,12 @@ --remote-title-bg: linear-gradient(90deg, #e8c4c4, #d4a5a5, #e8d4d4, #e8c4c4); --remote-title-text: #4a1a1a; --remote-title-icon: #7a3a3a; + --shadow: 0 1px 2px rgba(0,0,0,0.05); + --dialog-shadow: 0 4px 12px rgba(0,0,0,0.15); + --status-bar-bg: rgba(0,0,0,0.5); + --status-bar-text: #ccc; + --overlay-bg: rgba(0,0,0,0.7); + --overlay-text: #ffffff; } @media (prefers-color-scheme: dark) { @@ -114,6 +120,12 @@ --remote-title-bg: linear-gradient(90deg, #4a3030, #3d2828, #5a3a3a, #4a3030); --remote-title-text: #e8c4c4; --remote-title-icon: #c4a0a0; + --shadow: 0 1px 2px rgba(0,0,0,0.3); + --dialog-shadow: 0 4px 24px rgba(0,0,0,0.4); + --status-bar-bg: rgba(255,255,255,0.15); + --status-bar-text: #c9d1d9; + --overlay-bg: rgba(0,0,0,0.85); + --overlay-text: #c9d1d9; } } @@ -360,7 +372,7 @@ background: var(--active-bg); border-left-color: var(--active-color); font-weight: 500; - box-shadow: 0 1px 2px rgba(0,0,0,0.05); + box-shadow: var(--shadow); } .wt-item-main { @@ -428,7 +440,7 @@ } .wt-action-btn:hover { - background-color: rgba(0,0,0,0.1); + background: var(--hover-bg); color: var(--text-primary); } @@ -470,11 +482,46 @@ flex: 1; display: flex; overflow-x: auto; + overflow-y: hidden; height: 100%; align-items: flex-end; gap: 4px; } + #tabs-container::-webkit-scrollbar, + #tabs-container::-webkit-scrollbar:horizontal { + -webkit-appearance: none; + height: 2px; + width: 0; + background: transparent; + } + + #tabs-container::-webkit-scrollbar-track, + #tabs-container::-webkit-scrollbar-track-piece { + background: transparent; + border: none; + } + + #tabs-container::-webkit-scrollbar-thumb, + #tabs-container::-webkit-scrollbar-thumb:horizontal { + background: var(--text-muted); + border-radius: 1px; + border: none; + } + + #tabs-container::-webkit-scrollbar-thumb:hover, + #tabs-container::-webkit-scrollbar-thumb:active { + background: var(--text-secondary); + } + + #tabs-container::-webkit-scrollbar-button, + #tabs-container::-webkit-scrollbar-corner { + display: none; + width: 0; + height: 0; + background: transparent; + } + .tab { padding: 6px 12px; cursor: pointer; @@ -482,6 +529,12 @@ border-bottom: none; border-radius: 4px 4px 0 0; user-select: none; + color: var(--text-secondary); + margin-bottom: -1px; + height: 32px; + display: flex; + align-items: center; + gap: 6px; } /* Drag and drop visual feedback */ @@ -495,28 +548,21 @@ box-shadow: inset 3px 0 0 var(--active-color); background: var(--active-bg); } - color: var(--text-secondary); - margin-bottom: -1px; - height: 32px; - display: flex; - align-items: center; - gap: 6px; - } - .tab:hover { - background: var(--hover-bg); - } + .tab:hover { + background: var(--hover-bg); + } - .tab.active { - background: var(--main-bg); - border-color: var(--border-color); - color: var(--text-primary); - border-top: 2px solid var(--active-color); - } + .tab.active { + background: var(--main-bg); + border-color: var(--border-color); + color: var(--text-primary); + border-top: 2px solid var(--active-color); + } /* Inline rename input */ .tab-rename-input { - background: var(--bg-primary); + background: var(--main-bg); border: 1px solid var(--border-color); border-radius: 3px; padding: 1px 4px; @@ -613,8 +659,8 @@ position: absolute; bottom: 0; right: 0; - background: rgba(0,0,0,0.5); - color: #ccc; + background: var(--status-bar-bg); + color: var(--status-bar-text); padding: 2px 8px; font-size: 11px; z-index: 10; @@ -623,8 +669,8 @@ border-top-left-radius: 4px; } #status-bar:hover { - background: rgba(0,0,0,0.7); - color: #fff; + background: var(--hover-bg); + color: var(--text-primary); } /* Resource Monitor Modal */ @@ -634,46 +680,14 @@ padding: 0; border: 1px solid var(--modal-border); border-radius: 10px; - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); + box-shadow: var(--dialog-shadow); } #modal-monitor::backdrop { background: var(--modal-backdrop); } - #modal-monitor .monitor-titlebar { - display: flex; - align-items: center; - padding: 10px 12px; - border-bottom: 1px solid var(--border-color); - background: var(--hover-bg); + #modal-monitor .modal-titlebar { border-radius: 10px 10px 0 0; } - #modal-monitor .monitor-close-btn { - width: 14px; - height: 14px; - border-radius: 50%; - background: #ff5f57; - border: none; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - color: var(--text-secondary); - padding: 0; - flex-shrink: 0; - transition: opacity 0.15s; - } - #modal-monitor .monitor-close-btn:hover { - opacity: 0.85; - } - #modal-monitor .monitor-close-btn:active { - opacity: 0.7; - } - #modal-monitor .monitor-title { - margin-left: 10px; - font-size: 13px; - font-weight: 500; - color: var(--text-primary); - } #modal-monitor .monitor-summary { display: flex; gap: 12px; @@ -807,8 +821,12 @@ dialog { border: 1px solid var(--button-border); border-radius: 6px; - padding: 20px; - box-shadow: 0 4px 12px rgba(0,0,0,0.15); + padding: 0; + box-shadow: var(--dialog-shadow); + background: var(--main-bg); + color: var(--text-primary); + max-height: 90vh; + overflow-y: auto; width: 400px; } @@ -848,18 +866,76 @@ margin-top: 4px; } - /* LLM Settings Dialog */ + /* Unified Modal Header & Body */ + .modal-titlebar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + border-bottom: 1px solid var(--border-color); + background: var(--hover-bg); + border-radius: 6px 6px 0 0; + } + .modal-title { + font-size: 13px; + font-weight: 600; + color: var(--text-primary); + } + .modal-close-btn { + width: 20px; + height: 20px; + border-radius: 4px; + background: none; + border: none; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: var(--text-muted); + padding: 0; + flex-shrink: 0; + transition: background 0.15s, color 0.15s; + } + .modal-close-btn:hover { + background: var(--border-color); + color: var(--danger-text); + } + .modal-close-btn:active { + opacity: 0.7; + } + .modal-body { + padding: 20px; + } + + /* Connection Overlay */ + #connection-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: var(--overlay-bg); + color: var(--overlay-text); + z-index: 9999; + align-items: center; + justify-content: center; + flex-direction: column; + font-family: sans-serif; + } + #connection-overlay .conn-title { + font-size: 24px; + font-weight: bold; + margin-bottom: 10px; + } + #connection-overlay .conn-sub { + color: var(--overlay-text); + } + + /* LLM Settings Dialog overrides */ #dialog-llm-settings { width: 420px; max-width: 90vw; - padding: 24px; - border: 1px solid var(--border-color); border-radius: 8px; - box-shadow: 0 4px 24px rgba(0,0,0,0.15); - } - - #dialog-llm-settings::backdrop { - background: var(--modal-backdrop); } /* Remote Access Warning */ @@ -933,7 +1009,7 @@ button.primary { background: var(--primary-button-bg); color: white; - border: 1px solid rgba(27,31,35,0.15); + border: 1px solid var(--button-border); } button.primary:hover { @@ -999,9 +1075,9 @@