diff --git a/server/src/wled_controller/static/css/base.css b/server/src/wled_controller/static/css/base.css index 8266f51..88ee926 100644 --- a/server/src/wled_controller/static/css/base.css +++ b/server/src/wled_controller/static/css/base.css @@ -102,6 +102,35 @@ body.modal-open { background: transparent; } +/* ── Tab indicator (background watermark) ── */ +#tab-indicator { + position: fixed; + right: -10vw; + top: 50%; + transform: translateY(-50%); + width: 55vw; + height: 55vw; + max-width: 600px; + max-height: 600px; + pointer-events: none; + z-index: -1; + opacity: 0; + filter: blur(6px); + color: var(--primary-color); + transition: opacity 0.5s ease; +} +#tab-indicator svg { + width: 100%; + height: 100%; + opacity: 0.04; +} +#tab-indicator.tab-indicator-visible { + opacity: 1; +} +[data-theme="light"] #tab-indicator svg { + opacity: 0.035; +} + .container { padding: 20px; } diff --git a/server/src/wled_controller/static/js/app.js b/server/src/wled_controller/static/js/app.js index 425a837..05cad71 100644 --- a/server/src/wled_controller/static/js/app.js +++ b/server/src/wled_controller/static/js/app.js @@ -13,6 +13,7 @@ import { t, initLocale, changeLocale } from './core/i18n.js'; // Layer 1.5: visual effects import { initCardGlare } from './core/card-glare.js'; import { initBgAnim, updateBgAnimAccent, updateBgAnimTheme } from './core/bg-anim.js'; +import { initTabIndicator, updateTabIndicator } from './core/tab-indicator.js'; // Layer 2: ui import { @@ -173,6 +174,7 @@ Object.assign(window, { // visual effects (called from inline