335 lines
5.7 KiB
CSS
335 lines
5.7 KiB
CSS
/* Kompose Icon Styles */
|
|
|
|
.kompose-icon-wrapper {
|
|
position: relative;
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
transform-style: preserve-3d;
|
|
}
|
|
|
|
.kompose-icon-wrapper:not(.is-interactive) {
|
|
cursor: default;
|
|
}
|
|
|
|
.kompose-icon {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: block;
|
|
filter: drop-shadow(0 4px 20px rgba(0, 220, 130, 0.2));
|
|
transition: filter 0.4s ease;
|
|
}
|
|
|
|
/* Hover Effects */
|
|
.kompose-icon-wrapper.is-interactive:hover {
|
|
transform: scale(1.05) translateY(-2px);
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .kompose-icon {
|
|
filter: drop-shadow(0 8px 30px rgba(0, 220, 130, 0.4));
|
|
animation: subtle-pulse 2s ease-in-out infinite;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .bg-rect {
|
|
animation: bg-glow 2s ease-in-out infinite;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .k-letter {
|
|
animation: letter-glow 1.5s ease-in-out infinite;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .k-vertical {
|
|
animation: line-slide-vertical 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .k-diagonal-top {
|
|
animation: line-slide-diagonal-top 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) 0.1s;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .k-diagonal-bottom {
|
|
animation: line-slide-diagonal-bottom 0.8s cubic-bezier(0.34, 1.56, 0.64, 1)
|
|
0.2s;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .status-dot {
|
|
animation: pulse-expand 1s ease-in-out infinite;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .status-ring {
|
|
animation: ring-pulse 1.5s ease-in-out infinite;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover .corner {
|
|
opacity: 1 !important;
|
|
animation: corner-extend 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
/* Click/Active Effects */
|
|
.kompose-icon-wrapper.is-clicked {
|
|
animation: click-bounce 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-clicked .kompose-icon {
|
|
animation: rotate-3d 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
filter: drop-shadow(0 12px 40px rgba(0, 220, 130, 0.6));
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-clicked .k-letter {
|
|
animation: letter-flash 0.6s ease-out;
|
|
filter: url(#intenseglow192);
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-clicked .status-dot {
|
|
animation: dot-burst 0.6s ease-out;
|
|
}
|
|
|
|
/* Ripple Effect */
|
|
.ripple {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 50%;
|
|
background: radial-gradient(
|
|
circle,
|
|
rgba(0, 220, 130, 0.6) 0%,
|
|
rgba(0, 220, 130, 0) 70%
|
|
);
|
|
transform: translate(-50%, -50%) scale(0);
|
|
animation: ripple-expand 0.8s ease-out;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Default animations for status dot */
|
|
.status-dot {
|
|
animation: default-pulse 2s ease-in-out infinite;
|
|
}
|
|
|
|
.status-ring {
|
|
animation: default-ring-pulse 2s ease-in-out infinite;
|
|
}
|
|
|
|
/* Keyframe Animations */
|
|
@keyframes subtle-pulse {
|
|
0%,
|
|
100% {
|
|
filter: drop-shadow(0 8px 30px rgba(0, 220, 130, 0.4));
|
|
}
|
|
50% {
|
|
filter: drop-shadow(0 8px 35px rgba(0, 220, 130, 0.6));
|
|
}
|
|
}
|
|
|
|
@keyframes bg-glow {
|
|
0%,
|
|
100% {
|
|
filter: brightness(1);
|
|
}
|
|
50% {
|
|
filter: brightness(1.1);
|
|
}
|
|
}
|
|
|
|
@keyframes letter-glow {
|
|
0%,
|
|
100% {
|
|
filter: url(#glow192);
|
|
}
|
|
50% {
|
|
filter: url(#intenseglow192);
|
|
}
|
|
}
|
|
|
|
@keyframes line-slide-vertical {
|
|
0% {
|
|
stroke-dasharray: 96;
|
|
stroke-dashoffset: 96;
|
|
}
|
|
100% {
|
|
stroke-dasharray: 96;
|
|
stroke-dashoffset: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes line-slide-diagonal-top {
|
|
0% {
|
|
stroke-dasharray: 68;
|
|
stroke-dashoffset: 68;
|
|
}
|
|
100% {
|
|
stroke-dasharray: 68;
|
|
stroke-dashoffset: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes line-slide-diagonal-bottom {
|
|
0% {
|
|
stroke-dasharray: 68;
|
|
stroke-dashoffset: 68;
|
|
}
|
|
100% {
|
|
stroke-dasharray: 68;
|
|
stroke-dashoffset: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes pulse-expand {
|
|
0%,
|
|
100% {
|
|
r: 11.52;
|
|
opacity: 0.9;
|
|
}
|
|
50% {
|
|
r: 14;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes ring-pulse {
|
|
0%,
|
|
100% {
|
|
r: 17.28;
|
|
opacity: 0.3;
|
|
stroke-width: 3;
|
|
}
|
|
50% {
|
|
r: 20;
|
|
opacity: 0.6;
|
|
stroke-width: 2;
|
|
}
|
|
}
|
|
|
|
@keyframes corner-extend {
|
|
0% {
|
|
stroke-dasharray: 13.44;
|
|
stroke-dashoffset: 13.44;
|
|
}
|
|
100% {
|
|
stroke-dasharray: 13.44;
|
|
stroke-dashoffset: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes click-bounce {
|
|
0% {
|
|
transform: scale(1) translateY(0) rotateY(0deg);
|
|
}
|
|
30% {
|
|
transform: scale(0.92) translateY(0) rotateY(0deg);
|
|
}
|
|
50% {
|
|
transform: scale(1.08) translateY(-4px) rotateY(180deg);
|
|
}
|
|
70% {
|
|
transform: scale(0.98) translateY(0) rotateY(360deg);
|
|
}
|
|
100% {
|
|
transform: scale(1) translateY(0) rotateY(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes rotate-3d {
|
|
0% {
|
|
transform: perspective(800px) rotateY(0deg);
|
|
}
|
|
50% {
|
|
transform: perspective(800px) rotateY(180deg);
|
|
}
|
|
100% {
|
|
transform: perspective(800px) rotateY(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes letter-flash {
|
|
0%,
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
20%,
|
|
60% {
|
|
opacity: 0.7;
|
|
}
|
|
40%,
|
|
80% {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes dot-burst {
|
|
0% {
|
|
r: 11.52;
|
|
opacity: 0.9;
|
|
}
|
|
50% {
|
|
r: 20;
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
r: 11.52;
|
|
opacity: 0.9;
|
|
}
|
|
}
|
|
|
|
@keyframes ripple-expand {
|
|
0% {
|
|
transform: translate(-50%, -50%) scale(0);
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: translate(-50%, -50%) scale(2.5);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes default-pulse {
|
|
0%,
|
|
100% {
|
|
opacity: 0.6;
|
|
r: 11.52;
|
|
}
|
|
50% {
|
|
opacity: 1;
|
|
r: 13.44;
|
|
}
|
|
}
|
|
|
|
@keyframes default-ring-pulse {
|
|
0%,
|
|
100% {
|
|
opacity: 0.3;
|
|
}
|
|
50% {
|
|
opacity: 0.5;
|
|
}
|
|
}
|
|
|
|
/* Responsive adjustments */
|
|
@media (max-width: 768px) {
|
|
.kompose-icon-wrapper.is-interactive:hover {
|
|
transform: scale(1.03) translateY(-1px);
|
|
}
|
|
}
|
|
|
|
/* Reduced motion support */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.kompose-icon-wrapper,
|
|
.kompose-icon,
|
|
.kompose-icon *,
|
|
.ripple {
|
|
animation: none !important;
|
|
transition: none !important;
|
|
}
|
|
|
|
.kompose-icon-wrapper.is-interactive:hover {
|
|
transform: scale(1.02);
|
|
}
|
|
}
|
|
|
|
/* Touch device optimizations */
|
|
@media (hover: none) and (pointer: coarse) {
|
|
.kompose-icon-wrapper.is-interactive:active {
|
|
transform: scale(0.95);
|
|
}
|
|
}
|