diff --git a/src/web/public/index.html b/src/web/public/index.html index 5bfbfa58..450a4687 100644 --- a/src/web/public/index.html +++ b/src/web/public/index.html @@ -30,13 +30,13 @@ diff --git a/src/web/public/styles.css b/src/web/public/styles.css index 5a87b455..ec72602b 100644 --- a/src/web/public/styles.css +++ b/src/web/public/styles.css @@ -1,22 +1,27 @@ /* Codeman - Terminal-First UI */ :root { - --bg-dark: #0a0a0a; - --bg-card: #141414; - --bg-input: #1a1a1a; - --bg-hover: #222; - --border: #2a2a2a; - --border-light: #333; - --text: #eee; - --text-dim: #888; - --text-muted: #555; + --bg-dark: #09090b; + --bg-card: #131316; + --bg-input: #1a1a1f; + --bg-hover: #1f1f26; + --border: #232329; + --border-light: #2e2e38; + --text: #ececf0; + --text-dim: #8b8b97; + --text-muted: #52525e; --accent: #3b82f6; --accent-hover: #60a5fa; --green: #22c55e; --yellow: #eab308; --red: #ef4444; --header-height: 36px; - --toolbar-height: 40px; + --toolbar-height: 42px; + --glass-bg: rgba(19, 19, 22, 0.85); + --glass-border: rgba(255, 255, 255, 0.06); + --subtle-shadow: 0 -1px 3px rgba(0, 0, 0, 0.3), 0 -4px 16px rgba(0, 0, 0, 0.15); + --btn-radius: 6px; + --transition-smooth: 0.2s cubic-bezier(0.4, 0, 0.2, 1); /* Session color palette */ --session-red: #ef4444; @@ -136,8 +141,10 @@ body { align-items: flex-start; min-height: var(--header-height); padding: 0.35rem 0.75rem; - background: var(--bg-card); - border-bottom: 1px solid var(--border); + background: var(--glass-bg); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border-bottom: 1px solid var(--glass-border); flex-shrink: 0; position: relative; z-index: 100; /* Above main content so dropdowns work */ @@ -150,7 +157,7 @@ body { display: flex; align-items: center; padding-right: 0.75rem; - border-right: 1px solid var(--border); + border-right: 1px solid var(--glass-border); margin-right: 0.5rem; height: var(--header-height); flex-shrink: 0; @@ -158,16 +165,17 @@ body { .logo { font-size: 0.85rem; - font-weight: 600; + font-weight: 700; color: var(--accent-hover); letter-spacing: -0.02em; cursor: pointer; - transition: color 0.15s, text-shadow 0.15s; + transition: color var(--transition-smooth), text-shadow var(--transition-smooth), filter var(--transition-smooth); } .logo:hover { color: #93c5fd; - text-shadow: 0 0 8px rgba(96, 165, 250, 0.5); + text-shadow: 0 0 12px rgba(96, 165, 250, 0.5), 0 0 24px rgba(96, 165, 250, 0.2); + filter: brightness(1.1); } /* Session Tabs */ @@ -213,34 +221,35 @@ body { display: flex; align-items: center; gap: 0.35rem; - padding: 0.35rem 0.5rem; + padding: 0.35rem 0.6rem; background: transparent; border: 1px solid transparent; - border-radius: 4px; + border-radius: var(--btn-radius); color: var(--text-dim); font-size: 0.75rem; cursor: pointer; white-space: nowrap; - transition: background 0.05s, border-color 0.05s, color 0.05s, box-shadow 0.05s; + transition: background var(--transition-smooth), border-color var(--transition-smooth), color var(--transition-smooth), box-shadow var(--transition-smooth); } .session-tab:hover { background: rgba(34, 197, 94, 0.06); color: var(--text); - box-shadow: 0 0 8px 2px rgba(34, 197, 94, 0.2), inset 0 0 6px 1px rgba(34, 197, 94, 0.08); - border-color: rgba(34, 197, 94, 0.2); + box-shadow: 0 0 8px 2px rgba(34, 197, 94, 0.18), inset 0 0 6px 1px rgba(34, 197, 94, 0.06); + border-color: rgba(34, 197, 94, 0.18); } .session-tab:active { - background: rgba(34, 197, 94, 0.15); - box-shadow: 0 0 16px 5px rgba(34, 197, 94, 0.5), 0 0 30px 10px rgba(34, 197, 94, 0.2), inset 0 0 10px 2px rgba(34, 197, 94, 0.2); - border-color: rgba(34, 197, 94, 0.4); + background: rgba(34, 197, 94, 0.12); + box-shadow: 0 0 12px 4px rgba(34, 197, 94, 0.35), inset 0 0 8px 2px rgba(34, 197, 94, 0.15); + border-color: rgba(34, 197, 94, 0.3); } .session-tab.active { - background: var(--bg-dark); - border-color: var(--border-light); + background: rgba(255, 255, 255, 0.04); + border-color: var(--glass-border); color: var(--text); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); } /* Tab switch feedback: bright green glow on the newly-active tab */ @@ -409,7 +418,7 @@ body { gap: 0.5rem; margin-left: auto; padding-left: 0.75rem; - border-left: 1px solid var(--border); + border-left: 1px solid var(--glass-border); } /* Connection Indicator */ @@ -460,13 +469,14 @@ body { background: transparent; border: none; cursor: pointer; - border-radius: 4px; + border-radius: var(--btn-radius); padding: 0; position: relative; + transition: background var(--transition-smooth); } .tunnel-indicator:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.06); } .tunnel-dot { @@ -724,8 +734,8 @@ body { .stat-bar { width: 40px; - height: 6px; - background: var(--bg-input); + height: 5px; + background: rgba(255, 255, 255, 0.06); border-radius: 3px; overflow: hidden; } @@ -775,26 +785,26 @@ body { display: flex; align-items: center; justify-content: center; - width: 24px; - height: 24px; + width: 26px; + height: 26px; background: transparent; border: none; - color: var(--text-dim); + color: var(--text-muted); font-size: 1rem; cursor: pointer; - border-radius: 4px; - transition: all 0.15s; + border-radius: var(--btn-radius); + transition: all var(--transition-smooth); } .btn-icon-header:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.07); color: var(--text); transform: rotate(45deg); } .btn-icon-header.btn-settings { - width: 32px; - height: 32px; + width: 30px; + height: 30px; margin-left: 0; } @@ -814,8 +824,9 @@ body { align-items: center; gap: 0.25rem; padding: 0.15rem 0.4rem; - background: var(--bg-input); - border-radius: 4px; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.04); + border-radius: var(--btn-radius); } .header-font-controls .font-size-display { @@ -876,8 +887,10 @@ body { align-items: center; gap: 1rem; padding: 0.4rem 1rem; - background: linear-gradient(90deg, #1e3a5f, #152238); - border-bottom: 1px solid rgba(59, 130, 246, 0.3); + background: linear-gradient(90deg, rgba(30, 58, 95, 0.8), rgba(21, 34, 56, 0.8)); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border-bottom: 1px solid rgba(59, 130, 246, 0.2); flex-shrink: 0; } @@ -919,8 +932,10 @@ body { .respawn-banner { display: flex; padding: 0.25rem 0.75rem; - background: linear-gradient(90deg, #1e3a1e, #132513); - border-bottom: 1px solid rgba(34, 197, 94, 0.3); + background: linear-gradient(90deg, rgba(30, 58, 30, 0.8), rgba(19, 37, 19, 0.8)); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border-bottom: 1px solid rgba(34, 197, 94, 0.2); font-size: 0.7rem; flex-shrink: 0; } @@ -1186,8 +1201,10 @@ body { /* ===== Enhanced Ralph Wiggum Loop Panel ===== */ .ralph-panel { - background: var(--bg-card); - border-bottom: 1px solid var(--border); + background: var(--glass-bg); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border-bottom: 1px solid var(--glass-border); font-size: 0.75rem; flex-shrink: 0; overflow: hidden; @@ -1772,12 +1789,15 @@ body { position: absolute; top: 100%; right: 0; - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 4px; - min-width: 160px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); + background: rgba(22, 22, 28, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 10px; + min-width: 170px; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); z-index: 1000; + padding: 4px; } .ralph-dropdown.show { @@ -1794,16 +1814,18 @@ body { text-align: left; font-size: 0.75rem; cursor: pointer; + border-radius: var(--btn-radius); + transition: background var(--transition-smooth); } .ralph-dropdown button:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.07); } .ralph-dropdown hr { - margin: 0.25rem 0; + margin: 0.25rem 4px; border: none; - border-top: 1px solid var(--border); + border-top: 1px solid rgba(255, 255, 255, 0.06); } /* Detached Ralph Panel */ @@ -1818,10 +1840,12 @@ body { max-width: 90vw; max-height: 80vh; z-index: 1000; - border: 1px solid var(--border); - border-radius: 8px; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5); - background: var(--bg-card); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; + box-shadow: 0 16px 64px rgba(0, 0, 0, 0.5), 0 4px 16px rgba(0, 0, 0, 0.3); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); overflow: hidden; resize: both; display: flex; @@ -1926,7 +1950,7 @@ body { z-index: 10; opacity: 0; pointer-events: none; - transition: opacity 0.2s ease; + transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .welcome-overlay.visible { @@ -1936,28 +1960,31 @@ body { .welcome-content { text-align: center; - max-width: 500px; + max-width: 520px; padding: 2rem; } .welcome-title { font-size: 3.5rem; - font-weight: 700; - color: var(--accent-hover); + font-weight: 800; + background: linear-gradient(135deg, #60a5fa 0%, #93c5fd 50%, #60a5fa 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; margin-bottom: 1rem; - letter-spacing: -0.03em; + letter-spacing: -0.04em; } .welcome-desc { color: var(--text-dim); font-size: 0.9rem; - line-height: 1.5; + line-height: 1.6; margin-bottom: 0.5rem; } .welcome-actions { display: flex; - gap: 1rem; + gap: 0.75rem; justify-content: center; flex-wrap: wrap; margin-top: 2rem; @@ -1968,66 +1995,78 @@ body { display: flex; align-items: center; gap: 0.5rem; - padding: 0.75rem 1.25rem; - font-size: 0.9rem; - font-weight: 500; - border-radius: 6px; + padding: 0.7rem 1.3rem; + font-size: 0.85rem; + font-weight: 600; + border-radius: 10px; border: 1px solid transparent; cursor: pointer; - transition: all 0.15s ease; + transition: all var(--transition-smooth); + letter-spacing: 0.01em; } .welcome-btn-claude { - background: linear-gradient(135deg, #1e3a5f 0%, #2563eb 100%); - border-color: #3b82f6; + background: linear-gradient(135deg, #1a3358 0%, #1e4fb8 50%, #2563eb 100%); + border-color: rgba(59, 130, 246, 0.4); color: #e0e7ff; + box-shadow: 0 2px 8px rgba(37, 99, 235, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.08); } .welcome-btn-claude:hover { - background: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%); - box-shadow: 0 0 12px rgba(59, 130, 246, 0.4); + background: linear-gradient(135deg, #2454a8 0%, #2d6cf0 50%, #4b8af7 100%); + box-shadow: 0 4px 20px rgba(59, 130, 246, 0.35), 0 0 40px rgba(59, 130, 246, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1); + border-color: rgba(96, 165, 250, 0.5); color: #fff; + transform: translateY(-1px); } .welcome-btn-opencode { - background: linear-gradient(135deg, #0a2e2a 0%, #0d4a40 100%); - border-color: #10b981; + background: linear-gradient(135deg, #0a2e2a 0%, #0b3d35 50%, #0d4a40 100%); + border-color: rgba(16, 185, 129, 0.4); color: #6ee7b7; + box-shadow: 0 2px 8px rgba(16, 185, 129, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.06); } .welcome-btn-opencode:hover { - background: linear-gradient(135deg, #0d4a40 0%, #116a58 100%); - box-shadow: 0 0 8px rgba(16, 185, 129, 0.4); + background: linear-gradient(135deg, #0d4a40 0%, #116a58 50%, #15856e 100%); + box-shadow: 0 4px 20px rgba(16, 185, 129, 0.3), 0 0 40px rgba(16, 185, 129, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.08); + border-color: rgba(52, 211, 153, 0.5); color: #a7f3d0; + transform: translateY(-1px); } .welcome-btn-tunnel { - background: linear-gradient(135deg, #2a1a3e 0%, #6d28d9 100%); - border-color: #7c3aed; + background: linear-gradient(135deg, #221538 0%, #3b1a7a 50%, #6d28d9 100%); + border-color: rgba(124, 58, 237, 0.4); color: #ddd6fe; + box-shadow: 0 2px 8px rgba(109, 40, 217, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.06); } .welcome-btn-tunnel:hover { - background: linear-gradient(135deg, #6d28d9 0%, #7c3aed 100%); - box-shadow: 0 0 12px rgba(124, 58, 237, 0.4); + background: linear-gradient(135deg, #4c1d95 0%, #6d28d9 50%, #7c3aed 100%); + box-shadow: 0 4px 20px rgba(124, 58, 237, 0.35), 0 0 40px rgba(124, 58, 237, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1); + border-color: rgba(139, 92, 246, 0.5); color: #fff; + transform: translateY(-1px); } .welcome-btn-tunnel.active { - background: linear-gradient(135deg, #059669 0%, #10b981 100%); - border-color: #34d399; + background: linear-gradient(135deg, #047857 0%, #059669 50%, #10b981 100%); + border-color: rgba(52, 211, 153, 0.5); color: #ecfdf5; + box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.08); } .welcome-btn-tunnel.active:hover { - background: linear-gradient(135deg, #10b981 0%, #34d399 100%); - box-shadow: 0 0 12px rgba(52, 211, 153, 0.4); + background: linear-gradient(135deg, #059669 0%, #10b981 50%, #34d399 100%); + box-shadow: 0 4px 20px rgba(52, 211, 153, 0.35), 0 0 40px rgba(52, 211, 153, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1); color: #fff; + transform: translateY(-1px); } .welcome-btn-tunnel.connecting { - background: linear-gradient(135deg, #1e1e3a 0%, #4338ca 100%); - border-color: #6366f1; + background: linear-gradient(135deg, #1e1e3a 0%, #312e81 50%, #4338ca 100%); + border-color: rgba(99, 102, 241, 0.4); color: #c7d2fe; cursor: wait; } @@ -2120,18 +2159,19 @@ body { display: flex; align-items: center; gap: 0.75rem; - padding: 0.5rem 0.75rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 6px; + padding: 0.55rem 0.8rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 8px; cursor: pointer; - transition: border-color 0.15s, background 0.15s; + transition: all var(--transition-smooth); text-align: left; } .history-item:hover { - border-color: var(--accent); - background: var(--bg-hover); + border-color: rgba(59, 130, 246, 0.3); + background: rgba(255, 255, 255, 0.06); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .history-item-text { @@ -2179,13 +2219,14 @@ body { .welcome-hint kbd { display: inline-block; - padding: 0.15rem 0.4rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 3px; + padding: 0.15rem 0.45rem; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 5px; font-family: inherit; font-size: 0.75rem; color: var(--text-dim); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); } .welcome-ralph-link { @@ -2210,9 +2251,12 @@ body { justify-content: space-between; position: relative; height: var(--toolbar-height); - padding: 0 0.5rem; - background: var(--bg-card); - border-top: 1px solid var(--border); + padding: 0 0.75rem; + background: var(--glass-bg); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border-top: 1px solid var(--glass-border); + box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.2), 0 -4px 12px rgba(0, 0, 0, 0.1); flex-shrink: 0; /* contain: style only — layout/paint containment clips the case-settings popover that extends above the toolbar (popover uses position:absolute + bottom:100%) */ @@ -2236,12 +2280,14 @@ body { font-family: 'SF Mono', Monaco, monospace; font-size: 0.6rem; color: var(--text-muted); - padding: 0.15rem 0.4rem; - background: rgba(255, 255, 255, 0.05); - border-radius: 3px; + padding: 0.2rem 0.5rem; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.04); + border-radius: var(--btn-radius); cursor: default; user-select: none; - opacity: 0.7; + opacity: 0.8; + letter-spacing: 0.02em; } .toolbar-group { @@ -2254,25 +2300,31 @@ body { display: flex; align-items: center; gap: 0.35rem; - padding: 0.4rem 0.75rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 4px; + padding: 0.4rem 0.8rem; + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: var(--btn-radius); color: var(--text-dim); font-size: 0.75rem; cursor: pointer; - transition: all 0.15s; + transition: all var(--transition-smooth); white-space: nowrap; } .btn-toolbar:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.09); color: var(--text); - border-color: var(--border-light); + border-color: rgba(255, 255, 255, 0.12); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); +} + +.btn-toolbar:active { + background: rgba(255, 255, 255, 0.06); + transform: translateY(0.5px); } .btn-toolbar.btn-sm { - padding: 0.3rem 0.5rem; + padding: 0.3rem 0.55rem; font-size: 0.7rem; } @@ -2293,11 +2345,12 @@ body { } .btn-toolbar.btn-run { - border-radius: 4px 0 0 4px; - border-right: 1px solid rgba(255,255,255,0.15); - font-weight: 500; - padding: 0.4rem 0.85rem; - gap: 0.4rem; + border-radius: var(--btn-radius) 0 0 var(--btn-radius); + border-right: 1px solid rgba(255,255,255,0.12); + font-weight: 600; + padding: 0.45rem 0.9rem; + gap: 0.45rem; + letter-spacing: 0.01em; } .btn-toolbar.btn-run svg { @@ -2307,36 +2360,40 @@ body { } .btn-toolbar.btn-run-gear { - border-radius: 0 4px 4px 0; - padding: 0.4rem 0.4rem; + border-radius: 0 var(--btn-radius) var(--btn-radius) 0; + padding: 0.45rem 0.45rem; min-width: unset; } /* Claude mode colors (default) */ .btn-toolbar.btn-run.mode-claude, .btn-toolbar.btn-run-gear.mode-claude { - background: linear-gradient(135deg, #1e3a5f 0%, #2563eb 100%); - border-color: #3b82f6; + background: linear-gradient(135deg, #1a3358 0%, #1e4fb8 50%, #2563eb 100%); + border-color: rgba(59, 130, 246, 0.5); color: #e0e7ff; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.08); } .btn-toolbar.btn-run.mode-claude:hover, .btn-toolbar.btn-run-gear.mode-claude:hover { - background: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%); - box-shadow: 0 0 12px rgba(59, 130, 246, 0.4); + background: linear-gradient(135deg, #2454a8 0%, #2d6cf0 50%, #4b8af7 100%); + box-shadow: 0 0 16px rgba(59, 130, 246, 0.4), 0 2px 8px rgba(59, 130, 246, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.1); + border-color: rgba(96, 165, 250, 0.6); color: #fff; } /* OpenCode mode colors */ .btn-toolbar.btn-run.mode-opencode, .btn-toolbar.btn-run-gear.mode-opencode { - background: linear-gradient(135deg, #0a2e2a 0%, #0d4a40 100%); - border-color: #10b981; + background: linear-gradient(135deg, #0a2e2a 0%, #0b3d35 50%, #0d4a40 100%); + border-color: rgba(16, 185, 129, 0.5); color: #6ee7b7; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.06); } .btn-toolbar.btn-run.mode-opencode:hover, .btn-toolbar.btn-run-gear.mode-opencode:hover { - background: linear-gradient(135deg, #0d4a40 0%, #116a58 100%); - box-shadow: 0 0 8px rgba(16, 185, 129, 0.4); + background: linear-gradient(135deg, #0d4a40 0%, #116a58 50%, #15856e 100%); + box-shadow: 0 0 12px rgba(16, 185, 129, 0.35), 0 2px 8px rgba(16, 185, 129, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.08); + border-color: rgba(52, 211, 153, 0.6); color: #a7f3d0; } @@ -2346,15 +2403,17 @@ body { position: absolute; bottom: 100%; left: 0; - margin-bottom: 4px; - background: var(--bg-secondary); - border: 1px solid var(--border); - border-radius: 6px; + margin-bottom: 6px; + background: rgba(22, 22, 28, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 10px; padding: 4px; z-index: 1000; - min-width: 180px; + min-width: 190px; max-width: 300px; - box-shadow: 0 4px 12px rgba(0,0,0,0.4); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3); } .run-mode-menu.active { display: flex; @@ -2365,20 +2424,21 @@ body { display: flex; align-items: center; gap: 8px; - padding: 6px 10px; + padding: 7px 12px; background: none; border: none; - border-radius: 4px; - color: var(--text-primary); + border-radius: var(--btn-radius); + color: var(--text); cursor: pointer; font-size: 0.8rem; white-space: nowrap; + transition: background var(--transition-smooth); } .run-mode-option:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.07); } .run-mode-option.selected { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.08); font-weight: 600; } .run-mode-dot { @@ -2426,16 +2486,18 @@ body { /* Shell Button - Special styling */ .btn-toolbar.btn-shell { - background: linear-gradient(135deg, #1a2e1a 0%, #234023 100%); - border-color: #2d5a2d; + background: linear-gradient(135deg, #1a2e1a 0%, #1e3a1e 50%, #234023 100%); + border-color: rgba(45, 90, 45, 0.6); color: #8fbc8f; - font-weight: 500; + font-weight: 600; + letter-spacing: 0.01em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.05); } .btn-toolbar.btn-shell:hover { - background: linear-gradient(135deg, #234023 0%, #2d5a2d 100%); - border-color: #3d7a3d; - box-shadow: 0 0 8px rgba(34, 139, 34, 0.4); + background: linear-gradient(135deg, #234023 0%, #2d5a2d 50%, #357035 100%); + border-color: rgba(61, 122, 61, 0.7); + box-shadow: 0 0 12px rgba(34, 139, 34, 0.3), 0 2px 8px rgba(34, 139, 34, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.08); color: #a8d8a8; } @@ -2444,16 +2506,17 @@ body { /* Stop button - hidden on desktop, shown on mobile */ .btn-toolbar.btn-stop { display: none; - background: linear-gradient(135deg, #5a1a1a 0%, #7f1d1d 100%); - border-color: #dc2626; + background: linear-gradient(135deg, #4a1515 0%, #5a1a1a 50%, #7f1d1d 100%); + border-color: rgba(220, 38, 38, 0.5); color: #fca5a5; - font-weight: 500; + font-weight: 600; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.05); } .btn-toolbar.btn-stop:hover { - background: linear-gradient(135deg, #7f1d1d 0%, #991b1b 100%); - border-color: #ef4444; - box-shadow: 0 0 8px rgba(220, 38, 38, 0.4); + background: linear-gradient(135deg, #7f1d1d 0%, #991b1b 50%, #b91c1c 100%); + border-color: rgba(239, 68, 68, 0.6); + box-shadow: 0 0 12px rgba(220, 38, 38, 0.35), 0 2px 8px rgba(220, 38, 38, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.08); color: #fff; } @@ -2527,24 +2590,27 @@ body { } .btn-toolbar.btn-success { - background: var(--green); - border-color: var(--green); + background: linear-gradient(135deg, #16a34a 0%, #22c55e 100%); + border-color: rgba(34, 197, 94, 0.5); color: white; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .btn-toolbar.btn-success:hover { - background: #16a34a; + background: linear-gradient(135deg, #15803d 0%, #16a34a 100%); + box-shadow: 0 0 10px rgba(34, 197, 94, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .btn-toolbar.btn-danger { color: var(--red); - border-color: rgba(239, 68, 68, 0.3); + border-color: rgba(239, 68, 68, 0.2); } .btn-toolbar.btn-danger:hover { - background: var(--red); + background: linear-gradient(135deg, #b91c1c 0%, #ef4444 100%); color: white; - border-color: var(--red); + border-color: rgba(239, 68, 68, 0.5); + box-shadow: 0 0 10px rgba(239, 68, 68, 0.25); } /* Voice Input Button — desktop only (mobile uses .btn-voice-mobile) */ @@ -2768,16 +2834,16 @@ body { width: 24px; height: 24px; background: transparent; - border: 1px solid var(--border); - border-radius: 4px; + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: var(--btn-radius); color: var(--text-dim); font-size: 0.7rem; cursor: pointer; - transition: all 0.15s; + transition: all var(--transition-smooth); } .btn-icon-only:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.07); color: var(--text); } @@ -2789,29 +2855,32 @@ body { } .toolbar-select { - padding: 0.4rem 1.5rem 0.4rem 0.5rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 4px 0 0 4px; + padding: 0.4rem 1.5rem 0.4rem 0.6rem; + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: var(--btn-radius) 0 0 var(--btn-radius); color: var(--text-dim); font-size: 0.75rem; cursor: pointer; appearance: none; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238b8b97' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.4rem center; width: fit-content; min-width: unset; max-width: unset; + transition: all var(--transition-smooth); } .toolbar-select:hover { - border-color: var(--border-light); + border-color: rgba(255, 255, 255, 0.12); + background: rgba(255, 255, 255, 0.07); } .toolbar-select:focus { outline: none; border-color: var(--accent); + box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.2); } .btn-case-add { @@ -2820,21 +2889,22 @@ body { justify-content: center; width: 28px; height: 28px; - background: var(--bg-input); - border: 1px solid var(--border); + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.07); border-left: none; border-radius: 0; color: var(--green); font-size: 1.1rem; font-weight: 500; cursor: pointer; - transition: all 0.15s; + transition: all var(--transition-smooth); } .btn-case-add:hover { background: var(--green); color: white; border-color: var(--green); + box-shadow: 0 0 8px rgba(34, 197, 94, 0.3); } .btn-case-settings { @@ -2843,14 +2913,14 @@ body { justify-content: center; width: 28px; height: 28px; - background: var(--bg-input); - border: 1px solid var(--border); + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.07); border-left: none; - border-radius: 0 4px 4px 0; + border-radius: 0 var(--btn-radius) var(--btn-radius) 0; color: var(--text-dim); font-size: 1rem; cursor: pointer; - transition: all 0.15s; + transition: all var(--transition-smooth); } .btn-case-settings:hover { @@ -2863,14 +2933,16 @@ body { position: absolute; bottom: 100%; right: 0; - margin-bottom: 4px; - background: var(--bg-panel); - border: 1px solid var(--border); - border-radius: 6px; - padding: 0.5rem 0.6rem; + margin-bottom: 6px; + background: rgba(22, 22, 28, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 10px; + padding: 0.6rem 0.7rem; width: 220px; z-index: 1000; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); } .case-settings-popover.hidden { @@ -2897,9 +2969,9 @@ body { .tab-count-group { display: flex; align-items: center; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 4px; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: var(--btn-radius); overflow: hidden; margin: 0 0.25rem; } @@ -2916,11 +2988,11 @@ body { font-size: 0.85rem; font-weight: 500; cursor: pointer; - transition: all 0.15s; + transition: all var(--transition-smooth); } .tab-count-btn:hover { - background: var(--bg-hover); + background: rgba(255, 255, 255, 0.08); color: var(--accent-hover); } @@ -3063,12 +3135,13 @@ body { .form-select { width: 100%; padding: 0.5rem 0.75rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 4px; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: var(--btn-radius); color: var(--text); font-size: 0.8rem; font-family: inherit; + transition: border-color var(--transition-smooth), box-shadow var(--transition-smooth); } .form-row input:focus, @@ -3076,6 +3149,7 @@ body { .form-select:focus { outline: none; border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); } .form-col { @@ -3212,9 +3286,9 @@ body { left: 0; right: 0; bottom: 0; - background-color: var(--bg-input); - border: 1px solid var(--border); - transition: 0.2s; + background-color: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.08); + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); border-radius: 20px; } @@ -3287,11 +3361,12 @@ body { display: flex; align-items: center; justify-content: space-between; - padding: 0.4rem 0.6rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 4px; + padding: 0.45rem 0.7rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: var(--btn-radius); font-size: 0.75rem; + transition: background var(--transition-smooth); } .settings-item-label { @@ -3464,18 +3539,21 @@ body { .modal-backdrop { position: absolute; inset: 0; - background: rgba(0, 0, 0, 0.7); - backdrop-filter: blur(2px); + background: rgba(0, 0, 0, 0.6); + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); } .modal-content { position: relative; - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 8px; + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; width: 90%; max-width: 400px; - box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); + box-shadow: 0 16px 64px rgba(0, 0, 0, 0.5), 0 4px 16px rgba(0, 0, 0, 0.3); /* Performance: isolate modal paint operations */ contain: layout style paint; } @@ -4250,13 +4328,13 @@ body { display: flex; justify-content: space-between; align-items: center; - padding: 1rem; - border-bottom: 1px solid var(--border); + padding: 1rem 1.25rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.06); } .modal-header h3 { font-size: 0.95rem; - font-weight: 500; + font-weight: 600; } .modal-header-actions { @@ -4299,11 +4377,12 @@ body { kbd { display: inline-block; - padding: 0.15rem 0.4rem; - background: var(--bg-input); - border: 1px solid var(--border); - border-radius: 3px; + padding: 0.15rem 0.45rem; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 5px; font-family: 'SF Mono', Monaco, monospace; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); font-size: 0.7rem; color: var(--text); } @@ -5141,11 +5220,13 @@ kbd { width: 380px; max-width: calc(100vw - 1rem); max-height: 80vh; - background: var(--bg-card); - border: 1px solid var(--border); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.07); border-bottom: none; - border-radius: 8px 8px 0 0; - box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.4); + border-radius: 10px 10px 0 0; + box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.4), 0 -2px 8px rgba(0, 0, 0, 0.2); z-index: 100; transform: translateY(100%); transition: transform 0.2s ease, width 0.2s ease; @@ -5316,10 +5397,12 @@ kbd { width: 500px; max-width: calc(100vw - 1rem); max-height: 50vh; - background: var(--bg-card); - border: 1px solid var(--border); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.07); border-bottom: none; - border-radius: 8px 8px 0 0; + border-radius: 10px 10px 0 0; z-index: 91; /* Above monitor panel */ transform: translateY(calc(100% - 36px)); /* Collapsed by default, show header */ transition: transform 0.2s ease, width 0.2s ease; @@ -6035,10 +6118,12 @@ kbd { height: 350px; min-width: 300px; min-height: 200px; - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 8px; - box-shadow: var(--shadow-lg); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: 12px; + box-shadow: 0 16px 64px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(0, 0, 0, 0.2); z-index: 1000; display: none; flex-direction: column; @@ -6185,10 +6270,12 @@ kbd { max-height: 600px; min-width: 200px; min-height: 300px; - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 8px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: 12px; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); z-index: 100; display: none; flex-direction: column; @@ -6370,8 +6457,9 @@ kbd { .file-preview-overlay { position: fixed; inset: 0; - background: rgba(0, 0, 0, 0.7); - backdrop-filter: blur(2px); + background: rgba(0, 0, 0, 0.6); + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); z-index: 2000; display: none; align-items: center; @@ -6387,10 +6475,12 @@ kbd { max-width: 900px; height: 80vh; max-height: 700px; - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 8px; - box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); + background: rgba(19, 19, 22, 0.95); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; + box-shadow: 0 16px 64px rgba(0, 0, 0, 0.5), 0 4px 16px rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; overflow: hidden; @@ -7571,8 +7661,10 @@ kbd { ═══════════════════════════════════════════════════════════════ */ .orchestrator-panel { - background: var(--bg-card); - border-bottom: 1px solid var(--border); + background: var(--glass-bg); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border-bottom: 1px solid var(--glass-border); font-size: 0.75rem; flex-shrink: 0; overflow: hidden;