Enhance 'drill-luxe' Keycloak theme with new animations and hover effects
- Added multiple animations to various elements for a more engaging user experience, including background shifts and glowing effects. - Implemented hover effects for metrics and feature grid items to improve interactivity. - Introduced transitions for smoother visual feedback on link interactions. - Updated CSS keyframes for enhanced visual dynamics across the login interface.
This commit is contained in:
@@ -37,6 +37,7 @@ body.drill-login {
|
|||||||
radial-gradient(circle at 80% 82%, rgba(109, 70, 37, 0.34), transparent 26%),
|
radial-gradient(circle at 80% 82%, rgba(109, 70, 37, 0.34), transparent 26%),
|
||||||
linear-gradient(145deg, #06070a 0%, #0a0d12 30%, #111622 68%, #171d29 100%);
|
linear-gradient(145deg, #06070a 0%, #0a0d12 30%, #111622 68%, #171d29 100%);
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
|
animation: drillBackgroundShift 18s ease-in-out infinite alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__shell {
|
.drill-login__shell {
|
||||||
@@ -59,6 +60,7 @@ body.drill-login {
|
|||||||
rgba(10, 13, 18, 0.72);
|
rgba(10, 13, 18, 0.72);
|
||||||
box-shadow: var(--drill-shadow-lg), var(--drill-shadow-glow);
|
box-shadow: var(--drill-shadow-lg), var(--drill-shadow-glow);
|
||||||
backdrop-filter: blur(28px);
|
backdrop-filter: blur(28px);
|
||||||
|
animation: drillFadeUp 900ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__brand {
|
.drill-login__brand {
|
||||||
@@ -104,6 +106,7 @@ body.drill-login {
|
|||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
border: 1px solid rgba(239, 214, 180, 0.08);
|
border: 1px solid rgba(239, 214, 180, 0.08);
|
||||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
|
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
|
||||||
|
animation: drillOrbitFloat 16s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__brand-orbit--one {
|
.drill-login__brand-orbit--one {
|
||||||
@@ -112,6 +115,7 @@ body.drill-login {
|
|||||||
top: -90px;
|
top: -90px;
|
||||||
right: 18%;
|
right: 18%;
|
||||||
transform: rotate(-18deg);
|
transform: rotate(-18deg);
|
||||||
|
animation-duration: 14s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__brand-orbit--two {
|
.drill-login__brand-orbit--two {
|
||||||
@@ -120,6 +124,8 @@ body.drill-login {
|
|||||||
bottom: -240px;
|
bottom: -240px;
|
||||||
left: -120px;
|
left: -120px;
|
||||||
opacity: 0.45;
|
opacity: 0.45;
|
||||||
|
animation-duration: 22s;
|
||||||
|
animation-direction: alternate-reverse;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__brand-grid {
|
.drill-login__brand-grid {
|
||||||
@@ -130,6 +136,7 @@ body.drill-login {
|
|||||||
background-size: 72px 72px;
|
background-size: 72px 72px;
|
||||||
mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.6), transparent 70%);
|
mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.6), transparent 70%);
|
||||||
opacity: 0.35;
|
opacity: 0.35;
|
||||||
|
animation: drillGridDrift 26s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__brand-top {
|
.drill-login__brand-top {
|
||||||
@@ -157,6 +164,7 @@ body.drill-login {
|
|||||||
box-shadow:
|
box-shadow:
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
||||||
0 18px 40px rgba(185, 106, 51, 0.18);
|
0 18px 40px rgba(185, 106, 51, 0.18);
|
||||||
|
animation: drillMarkGlow 8s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__status-pill {
|
.drill-login__status-pill {
|
||||||
@@ -234,6 +242,11 @@ body.drill-login {
|
|||||||
linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.02)),
|
linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.02)),
|
||||||
rgba(255, 255, 255, 0.012);
|
rgba(255, 255, 255, 0.012);
|
||||||
border: 1px solid rgba(210, 161, 112, 0.12);
|
border: 1px solid rgba(210, 161, 112, 0.12);
|
||||||
|
transition:
|
||||||
|
transform 220ms ease,
|
||||||
|
border-color 220ms ease,
|
||||||
|
box-shadow 220ms ease,
|
||||||
|
background 220ms ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__metrics div::before {
|
.drill-login__metrics div::before {
|
||||||
@@ -246,6 +259,15 @@ body.drill-login {
|
|||||||
background: linear-gradient(90deg, var(--drill-accent-secondary), transparent);
|
background: linear-gradient(90deg, var(--drill-accent-secondary), transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.drill-login__metrics div:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
border-color: rgba(239, 214, 180, 0.2);
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.025)),
|
||||||
|
rgba(255, 255, 255, 0.016);
|
||||||
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
|
||||||
|
}
|
||||||
|
|
||||||
.drill-login__metrics strong {
|
.drill-login__metrics strong {
|
||||||
display: block;
|
display: block;
|
||||||
margin: 8px 0 10px;
|
margin: 8px 0 10px;
|
||||||
@@ -280,6 +302,11 @@ body.drill-login {
|
|||||||
border-radius: 26px;
|
border-radius: 26px;
|
||||||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.015));
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.015));
|
||||||
border: 1px solid rgba(210, 161, 112, 0.12);
|
border: 1px solid rgba(210, 161, 112, 0.12);
|
||||||
|
transition:
|
||||||
|
transform 220ms ease,
|
||||||
|
border-color 220ms ease,
|
||||||
|
background 220ms ease,
|
||||||
|
box-shadow 220ms ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__feature-grid article::after {
|
.drill-login__feature-grid article::after {
|
||||||
@@ -290,6 +317,13 @@ body.drill-login {
|
|||||||
background: linear-gradient(90deg, rgba(239, 214, 180, 0.18), transparent);
|
background: linear-gradient(90deg, rgba(239, 214, 180, 0.18), transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.drill-login__feature-grid article:hover {
|
||||||
|
transform: translateY(-3px);
|
||||||
|
border-color: rgba(239, 214, 180, 0.2);
|
||||||
|
background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.018));
|
||||||
|
box-shadow: 0 22px 42px rgba(0, 0, 0, 0.16);
|
||||||
|
}
|
||||||
|
|
||||||
.drill-login__feature-grid span {
|
.drill-login__feature-grid span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
color: var(--drill-accent-secondary);
|
color: var(--drill-accent-secondary);
|
||||||
@@ -326,6 +360,7 @@ body.drill-login {
|
|||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: radial-gradient(circle, rgba(239, 214, 180, 0.12), transparent 68%);
|
background: radial-gradient(circle, rgba(239, 214, 180, 0.12), transparent 68%);
|
||||||
filter: blur(10px);
|
filter: blur(10px);
|
||||||
|
animation: drillGlowPulse 10s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__panel-head {
|
.drill-login__panel-head {
|
||||||
@@ -397,6 +432,12 @@ body.drill-login {
|
|||||||
.drill-login__field-row a {
|
.drill-login__field-row a {
|
||||||
color: var(--drill-accent-secondary);
|
color: var(--drill-accent-secondary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
transition: color 180ms ease, opacity 180ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drill-login__field-row a:hover {
|
||||||
|
color: var(--drill-accent-tertiary);
|
||||||
|
opacity: 0.96;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drill-login__field input {
|
.drill-login__field input {
|
||||||
@@ -494,6 +535,116 @@ body.drill-login {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes drillFadeUp {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(18px);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drillOrbitFloat {
|
||||||
|
0% {
|
||||||
|
transform: translate3d(0, 0, 0) rotate(-18deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
transform: translate3d(8px, -10px, 0) rotate(-12deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translate3d(-6px, 6px, 0) rotate(-22deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drillGridDrift {
|
||||||
|
from {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
transform: translate3d(24px, 18px, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drillGlowPulse {
|
||||||
|
0% {
|
||||||
|
opacity: 0.45;
|
||||||
|
transform: scale(0.96);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 0.72;
|
||||||
|
transform: scale(1.04);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 0.5;
|
||||||
|
transform: scale(0.98);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drillMarkGlow {
|
||||||
|
0% {
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
||||||
|
0 18px 40px rgba(185, 106, 51, 0.18);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1),
|
||||||
|
0 22px 46px rgba(185, 106, 51, 0.24);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
||||||
|
0 18px 40px rgba(185, 106, 51, 0.18);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes drillBackgroundShift {
|
||||||
|
0% {
|
||||||
|
background-position:
|
||||||
|
0% 0%,
|
||||||
|
0% 0%,
|
||||||
|
0% 0%,
|
||||||
|
0% 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
background-position:
|
||||||
|
2% -1%,
|
||||||
|
-2% 1%,
|
||||||
|
1% 2%,
|
||||||
|
0% 0%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
body.drill-login,
|
||||||
|
.drill-login__brand,
|
||||||
|
.drill-login__panel,
|
||||||
|
.drill-login__brand-orbit,
|
||||||
|
.drill-login__brand-grid,
|
||||||
|
.drill-login__brand-mark,
|
||||||
|
.drill-login__panel-glow {
|
||||||
|
animation: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drill-login__metrics div,
|
||||||
|
.drill-login__feature-grid article,
|
||||||
|
.drill-login__submit,
|
||||||
|
.drill-login__field-row a {
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 1180px) {
|
@media (max-width: 1180px) {
|
||||||
.drill-login__shell {
|
.drill-login__shell {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
|||||||
Reference in New Issue
Block a user