diff --git a/public/styles.css b/public/styles.css index 0e8ec5c..3292a62 100644 --- a/public/styles.css +++ b/public/styles.css @@ -1888,4 +1888,158 @@ p { border: 1px solid rgba(255, 255, 255, 0.08); padding: 0.5rem; border-radius: 6px; +} + +/* Modernized Tab Styles (overrides) */ +.tabs-container { + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 14px; + padding: 0.75rem; +} + +.tabs-header { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.25rem; + border-radius: 12px; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.08); + backdrop-filter: blur(8px); + border-bottom: none; +} + +.tab-button { + background: transparent; + border: 1px solid transparent; + color: rgba(255, 255, 255, 0.75); + padding: 0.5rem 1rem; + border-radius: 10px; + cursor: pointer; + font-size: 0.9rem; + font-weight: 600; + letter-spacing: 0.2px; + transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; + position: relative; +} + +.tab-button:hover { + background: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.12); + color: rgba(255, 255, 255, 0.95); + transform: translateY(-1px); +} + +.tab-button.active { + background: rgba(255, 255, 255, 0.16); + color: #ffffff; + border-color: rgba(255, 255, 255, 0.24); + box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.06); +} + +/* Animated underline indicator */ +.tab-button::after { + content: ''; + position: absolute; + left: 12px; + right: 12px; + bottom: -6px; + height: 3px; + border-radius: 2px; + background: linear-gradient(90deg, #8b5cf6, #60a5fa); + opacity: 0; + transform: scaleX(0.4); + transition: transform 0.25s ease, opacity 0.25s ease; +} + +.tab-button.active::after { + opacity: 1; + transform: scaleX(1); +} + +.tab-button:focus-visible { + outline: none; + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.35); +} + +/* Content panel polish */ +.tab-content { + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; + padding: 0.75rem; + background: rgba(0, 0, 0, 0.2); + backdrop-filter: blur(8px); +} + +.tab-content.active { + animation: tabFadeIn 0.2s ease-out; +} + +@keyframes tabFadeIn { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: translateY(0); } +} + +/* Small screens: allow horizontal scroll of tabs */ +@media (max-width: 640px) { + .tabs-header { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .tab-button { + white-space: nowrap; + } +} + +/* Lighter Tab Theme (final overrides) */ +.tabs-container { + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.12); +} + +.tabs-header { + background: rgba(255, 255, 255, 0.10); + border: 1px solid rgba(255, 255, 255, 0.14); +} + +.tab-button { + color: rgba(255, 255, 255, 0.85); +} + +.tab-button:hover { + background: rgba(255, 255, 255, 0.12); + border-color: rgba(255, 255, 255, 0.18); +} + +.tab-button.active { + background: rgba(255, 255, 255, 0.22); + border-color: rgba(255, 255, 255, 0.32); +} + +.tab-button::after { + background: linear-gradient(90deg, #a78bfa, #93c5fd); + bottom: -4px; +} + +.tab-content { + border: 1px solid rgba(255, 255, 255, 0.12); + background: rgba(255, 255, 255, 0.08); +} + +/* Active tab: no background or border (keep underline) */ +.tab-button.active { + background: transparent; + border-color: transparent; + box-shadow: none; +} + +.tab-button.active:hover { + background: transparent; + border-color: transparent; +} + +/* Preserve focus ring on active tab */ +.tab-button.active:focus-visible { + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.35); } \ No newline at end of file