1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/* Copyright 2025 The Chromium Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. */
/* #css_wrapper_metadata_start
* #type=style-lit
* #scheme=relative
* #css_wrapper_metadata_end */
:host {
--gradient-mask-opacity-middle-val: 0;
/* Ensure the flow doesn't leave this elements bounds. */
overflow: hidden;
}
@keyframes rotateGradient {
0% {
/* Preserve the scale applied to blur the gradient. */
transform: scale(1.4) rotate(0deg);
}
100% {
/* Preserve the scale applied to blur the gradient. */
transform: scale(1.4) rotate(360deg);
}
}
@keyframes fade-out {
0% {
opacity: 0.3;
}
100% {
opacity: 0;
}
}
@keyframes fade-in {
0% {
opacity: 0;
}
100% {
opacity: 0.3;
}
}
@keyframes shaderOpacityIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes shaderOpacityToResting {
0% {
--gradient-mask-opacity-middle-val: 0;
opacity: 1;
}
100% {
--gradient-mask-opacity-middle-val: 0.4;
opacity: 0.3;
}
}
#borderGlowContainer {
animation: 117ms cubic-bezier(0.2, 0, 0, 1) 0ms 1 normal forwards running shaderOpacityIn,
1016ms cubic-bezier(0.2, 0, 0, 1) 117ms 1 normal forwards running shaderOpacityToResting;
left: 50%;
mask-image: radial-gradient(
rgba(0, 0, 0, 0) 0,
rgba(0, 0, 0, var(--gradient-mask-opacity-middle-val)) 40%,
rgba(0, 0, 0, 1) 100%
);
mask-mode: alpha;
opacity: 0;
position: absolute;
top: 50%;
transform: translate(-50%, -50%) rotate(0deg) scale(0.7);
transform-origin: center center;
}
#gradientColorLayer {
animation: rotateGradient 20s linear 0s infinite normal forwards running;
background: conic-gradient(
from 0deg at center,
var(--gradient-blue) 0deg,
var(--gradient-blue) 10deg,
var(--gradient-red) 80deg,
var(--gradient-yellow) 120deg,
var(--gradient-green) 160deg,
var(--gradient-blue) 200deg,
var(--gradient-blue) 360deg
);
height: 100%;
left: 0;
position: absolute;
/* Scale effect as a replacement for a less performant filter: blur(20px). */
transform: scale(1.4);
transform-origin: center center;
top: 0;
width: 100%;
}
:host([is-fading-in]) #borderGlowContainer {
animation: fade-in 166ms forwards cubic-bezier(0.3, 0, 1, 1);
}
:host([is-fading-out]) #borderGlowContainer {
animation: fade-out 166ms forwards cubic-bezier(0.3, 0, 1, 1);
}
|