From 220fb634fc1dcf340c1d237cb0035620b10fb6f9 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 24 Sep 2026 17:58:53 +0200 Subject: [PATCH] =?UTF-8?q?fix(glass):=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D1=8F=D1=8F=20=D0=BE=D0=B1=D0=B2=D0=BE=D0=B4=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20::after=20=D1=81=20blur=20?= =?UTF-8?q?=D0=BA=D1=80=D0=B0=D1=8F=20(=D0=BD=D0=B5=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=D0=BD=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - inset:-1px выносит рамку наружу, z-index:-1 + isolation, backdrop-filter blur(3px) на кромке - тёмная тема: засвет приглушён (0.55->0.4), бордер блюрит край как стекло - убран background-слой --- public/css/main.css | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/public/css/main.css b/public/css/main.css index 7ddde0e..5ba4cc2 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -5135,11 +5135,11 @@ html[data-theme="dark"] { color-mix(in srgb, var(--surface) 52%, transparent) ); --v12-glass-neutral-border: color-mix(in srgb, var(--line) 75%, hsla(0, 0%, 100%, 0.08)); - /* Градиентный бордер: сверху белый засвет -> снизу прозрачно */ + /* Градиентный бордер: сверху белый засвет -> снизу прозрачно (dark: приглушён) */ --v12-glass-neutral-border-grad: linear-gradient( to bottom, - hsla(0, 0%, 100%, 0.55) 0%, - hsla(0, 0%, 100%, 0.16) 38%, + hsla(0, 0%, 100%, 0.4) 0%, + hsla(0, 0%, 100%, 0.12) 40%, hsla(0, 0%, 100%, 0) 100% ); --v12-glass-neutral-shadow: @@ -5197,9 +5197,9 @@ html[data-theme="light"] .glass-neutral { -webkit-backdrop-filter: var(--v12-glass-neutral-filter); } -/* Градиентный бордер (сверху белый засвет -> снизу прозрачно). - Через 2 слоя background: фон в padding-box, градиент бордера — в border-box. - Не перекрывает контент, сохраняет border-radius. */ +/* Внешняя градиентная обводка (сверху белый засвет -> снизу прозрачно). + ::after с inset:-1px выходит НАРУЖУ блока, блюрит край как стеклянная кромка. + z-index:-1 => не перекрывает контент. Исключаем .fab (::after занят sheen). */ html[data-theme="dark"] .glass-neutral:not(.fab), html[data-theme="light"] .glass-neutral:not(.fab), html[data-theme="dark"] .header--scrolled .header__inner, @@ -5208,10 +5208,36 @@ html[data-theme="dark"] .nav-more__dock, html[data-theme="light"] .nav-more__dock, html[data-theme="dark"] #nav-more-menu-floating, html[data-theme="light"] #nav-more-menu-floating { + position: relative; + isolation: isolate; border: 1px solid transparent; - background: - var(--v12-glass-neutral-bg) padding-box, - var(--v12-glass-neutral-border-grad) border-box; +} +html[data-theme="dark"] .glass-neutral:not(.fab)::after, +html[data-theme="light"] .glass-neutral:not(.fab)::after, +html[data-theme="dark"] .header--scrolled .header__inner::after, +html[data-theme="light"] .header--scrolled .header__inner::after, +html[data-theme="dark"] .nav-more__dock::after, +html[data-theme="light"] .nav-more__dock::after, +html[data-theme="dark"] #nav-more-menu-floating::after, +html[data-theme="light"] #nav-more-menu-floating::after { + content: ""; + position: absolute; + inset: -1px; + border-radius: inherit; + padding: 1px; + background: var(--v12-glass-neutral-border-grad); + -webkit-mask: + linear-gradient(#000 0 0) content-box, + linear-gradient(#000 0 0); + -webkit-mask-composite: xor; + mask: + linear-gradient(#000 0 0) content-box, + linear-gradient(#000 0 0); + mask-composite: exclude; + backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + pointer-events: none; + z-index: -1; } html[data-theme="dark"] .theme-picker__panel.glass-neutral,