Modern Shadow Effects
Box and text shadows from neumorphism and glass to neon, fire and retro lettering.
1Neon Glow
A pulsing neon outline glow for cards, buttons and inputs, best on dark sections. Class: fx-shadow-neon-glow
Fast delivery
<div class="d-flex flex-wrap align-items-center justify-content-center gap-3 p-3 h-100" style="min-height:200px">
<div class="bg-dark rounded-4 p-4 d-flex flex-wrap gap-3 justify-content-center w-100" style="max-width:19rem">
<div class="fx-shadow-neon-glow rounded-3 p-3 text-white text-center" style="width:8rem">
<div class="fs-3" style="color:var(--wt-primary-ink)">
<i class="bi bi-cpu-fill" aria-hidden="true"></i>
</div>
<div class="small">
Fast delivery
</div>
</div>
<button type="button" class="btn text-white rounded-pill align-self-center fx-shadow-neon-glow">Connect</button>
</div>
</div>
/* CSS (already in assets/css/effects.css) */
.fx-shadow-neon-glow {
border: 1px solid rgba(var(--wt-primary-rgb), .8);
box-shadow: 0 0 8px rgba(var(--wt-primary-rgb), .6), 0 0 24px rgba(var(--wt-primary-rgb), .35), inset 0 0 12px rgba(var(--wt-primary-rgb), .25);
animation: fx-shadow-neon-glow-pulse 2.6s ease-in-out infinite;
}
@keyframes fx-shadow-neon-glow-pulse {
50% { box-shadow: 0 0 14px rgba(var(--wt-primary-rgb), .8), 0 0 42px rgba(var(--wt-primary-rgb), .5), inset 0 0 18px rgba(var(--wt-primary-rgb), .35); }
}
@media (prefers-reduced-motion: reduce) {
.fx-shadow-neon-glow, .fx-shadow-neon-glow::before, .fx-shadow-neon-glow::after, .fx-shadow-neon-glow *, .fx-shadow-neon-glow *::before, .fx-shadow-neon-glow *::after { animation: none !important; transition: none !important; }
}2Layered Shadows
Five stacked, increasingly soft shadows give cards a realistic elevation that deepens on hover. Class: fx-layered-shadows
Takeaway
Every detail is handled by people who care about getting it right.
<div class="d-flex flex-wrap align-items-center justify-content-center gap-3 p-3 h-100" style="min-height:200px">
<div class="card border-0 fx-layered-shadows" style="width:13rem">
<div class="card-body">
<div class="text-primary fs-4 mb-1">
<i class="bi bi-layers-fill" aria-hidden="true"></i>
</div>
<h3 class="h6 mb-1">Takeaway</h3>
<p class="small text-body-secondary mb-0">Every detail is handled by people who care about getting it right.</p>
</div>
</div>
</div>
/* CSS (already in assets/css/effects.css) */
.fx-layered-shadows {
box-shadow: 0 1px 1px rgba(0, 0, 0, .06), 0 2px 2px rgba(0, 0, 0, .06), 0 4px 4px rgba(0, 0, 0, .06), 0 8px 8px rgba(0, 0, 0, .06), 0 16px 16px rgba(0, 0, 0, .06);
transition: box-shadow .4s ease, transform .4s ease;
}
.fx-layered-shadows:hover, .fx-layered-shadows:focus-within {
transform: translateY(-4px);
box-shadow: 0 2px 2px rgba(0, 0, 0, .07), 0 4px 4px rgba(0, 0, 0, .07), 0 8px 8px rgba(0, 0, 0, .07), 0 16px 16px rgba(0, 0, 0, .07), 0 32px 32px rgba(0, 0, 0, .07);
}
@media (prefers-reduced-motion: reduce) {
.fx-layered-shadows, .fx-layered-shadows::before, .fx-layered-shadows::after, .fx-layered-shadows *, .fx-layered-shadows *::before, .fx-layered-shadows *::after { animation: none !important; transition: none !important; }
}