tremor-tracker/src/app/globals.css

333 lines
6.3 KiB
CSS
Raw Normal View History

2025-02-24 12:37:15 +00:00
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--background: #ffffff;
--foreground: #171717;
2025-02-24 12:37:15 +00:00
}
2025-03-19 19:20:18 +00:00
/* @media (prefers-color-scheme: dark) {
2025-02-24 12:37:15 +00:00
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
2025-03-19 19:20:18 +00:00
} */
2025-02-24 12:37:15 +00:00
body {
color: var(--foreground);
background: var(--background);
2025-02-24 12:37:15 +00:00
}
2025-03-23 15:24:10 +00:00
/* Increase specificity and use !important where necessary */
.mapboxgl-popup .mapboxgl-popup-content {
@apply rounded-xl p-4 px-5 drop-shadow-lg border border-neutral-300 max-w-xs !important;
2025-03-23 15:24:10 +00:00
}
/* Hide the popup tip */
.mapboxgl-popup .mapboxgl-popup-tip {
display: none !important;
2025-03-23 15:24:10 +00:00
}
/* Child elements */
.mapboxgl-popup-content h3 {
@apply text-sm font-medium text-neutral-800 !important;
2025-03-23 15:24:10 +00:00
}
.mapboxgl-popup-content p {
@apply text-xs text-neutral-600 !important;
2025-03-23 15:24:10 +00:00
}
.mapboxgl-popup-content p+p {
@apply text-neutral-500 !important;
2025-03-23 15:24:10 +00:00
}
2025-05-25 19:59:53 +01:00
.icon-link {
/* default styles if needed */
2025-05-25 19:59:53 +01:00
}
.icon-link:hover,
.icon-link:focus {
background-color: #16424b;
2025-05-25 19:59:53 +01:00
}
.icon-link:hover h3,
.icon-link:focus h3,
.icon-link:hover p,
.icon-link:focus p {
color: #fff !important;
2025-05-25 19:59:53 +01:00
}
.icon-link:hover h3,
.icon-link:hover p,
.icon-link:focus h3,
.icon-link:focus p {
color: #111;
/* or black */
2025-05-31 17:54:56 +01:00
}
/* ---- LAVA FLOOD OVERLAY ---- */
.lava-flood-overlay {
pointer-events: none;
position: fixed;
top: -100vh;
left: 0;
right: 0;
width: 100vw;
height: 100vh;
z-index: 9999;
display: flex;
justify-content: center;
align-items: flex-start;
transition: top 0.9s cubic-bezier(0.6, 0, 0.2, 1);
2025-05-31 17:54:56 +01:00
}
.lava-flood-overlay.lava-active {
top: 0;
transition: top 0.33s cubic-bezier(0.6, 0, 0.2, 1);
2025-05-31 17:54:56 +01:00
}
.lava-flood-overlay img,
.lava-gradient {
width: 100vw;
height: 100vh;
object-fit: cover;
pointer-events: none;
user-select: none;
filter: brightness(1.15) saturate(1.8) drop-shadow(0 0 80px #ff5500);
2025-05-31 17:54:56 +01:00
}
/* ---- INSANE SCREEN SHAKE (LinkedIn) ---- */
@keyframes supershake {
0% {
transform: translate(0, 0) rotate(0);
}
2025-05-31 17:54:56 +01:00
5% {
transform: translate(-20px, 5px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
10% {
transform: translate(18px, -8px) rotate(2deg);
}
2025-05-31 17:54:56 +01:00
15% {
transform: translate(-22px, 8px) rotate(-4deg);
}
2025-05-31 17:54:56 +01:00
20% {
transform: translate(22px, -2px) rotate(4deg);
}
2025-05-31 17:54:56 +01:00
25% {
transform: translate(-18px, 12px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
30% {
transform: translate(18px, -10px) rotate(2deg);
}
2025-05-31 17:54:56 +01:00
35% {
transform: translate(-22px, 14px) rotate(-4deg);
}
2025-05-31 17:54:56 +01:00
40% {
transform: translate(22px, -12px) rotate(4deg);
}
2025-05-31 17:54:56 +01:00
45% {
transform: translate(-18px, 8px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
50% {
transform: translate(18px, -14px) rotate(4deg);
}
2025-05-31 17:54:56 +01:00
55% {
transform: translate(-22px, 12px) rotate(-4deg);
}
2025-05-31 17:54:56 +01:00
60% {
transform: translate(22px, -8px) rotate(2deg);
}
2025-05-31 17:54:56 +01:00
65% {
transform: translate(-18px, 10px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
70% {
transform: translate(18px, -12px) rotate(2deg);
}
2025-05-31 17:54:56 +01:00
75% {
transform: translate(-22px, 14px) rotate(-4deg);
}
2025-05-31 17:54:56 +01:00
80% {
transform: translate(22px, -10px) rotate(4deg);
}
2025-05-31 17:54:56 +01:00
85% {
transform: translate(-18px, 8px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
90% {
transform: translate(18px, -14px) rotate(2deg);
}
2025-05-31 17:54:56 +01:00
95% {
transform: translate(-20px, 5px) rotate(-2deg);
}
2025-05-31 17:54:56 +01:00
100% {
transform: translate(0, 0) rotate(0);
}
2025-05-31 17:54:56 +01:00
}
.shake-screen {
animation: supershake 1s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
2025-05-31 17:54:56 +01:00
}
/* ---- CRACK + COLLAPSE OVERLAY (X icon) ---- */
.crack-overlay {
pointer-events: none;
position: fixed;
inset: 0;
width: 100vw;
height: 100vh;
z-index: 9999;
transition: transform 1.1s cubic-bezier(0.65, 0.05, 0.45, 1), opacity 0.5s;
will-change: transform, opacity;
2025-05-31 17:54:56 +01:00
}
.crack {
position: absolute;
pointer-events: none;
2025-05-31 17:54:56 +01:00
}
.crack1 {
width: 35vw;
left: 10vw;
top: 22vh;
opacity: 0.8;
2025-05-31 17:54:56 +01:00
}
.crack2 {
width: 32vw;
right: 12vw;
top: 42vh;
opacity: 0.7;
transform: rotate(-8deg);
2025-05-31 17:54:56 +01:00
}
/* Add more .crackN classes if using more cracks */
/* Collapse falling effect */
.crack-collapse {
transform: perspective(900px) rotateX(75deg) translateY(80vh) scale(0.9);
opacity: 0;
transition: transform 1.1s cubic-bezier(0.65, 0.05, 0.45, 1), opacity 0.6s;
2025-06-01 14:18:32 +01:00
}
/* --- X Logo Crack-and-Spin Easter Egg --- */
.x-logo.cracked {
/* Overlay cracks with a clip-path or filters for effect (simple grayscale/contrast for demo) */
filter: grayscale(1) brightness(0.6) contrast(2);
/* Slight shake + scale for realism */
transform: scale(1.04);
transition: filter 0.2s, transform 0.2s;
}
.x-logo.spin {
animation: xspin180 0.8s cubic-bezier(0.77, 0, 0.18, 1) forwards;
}
@keyframes xspin180 {
0% {
transform: rotate(0deg) scale(1.04);
}
80% {
transform: rotate(200deg) scale(1.04);
}
100% {
transform: rotate(180deg) scale(1.04);
}
}
.x-logo.cracked {
filter: grayscale(1) brightness(0.7) contrast(2.6);
transition: filter 0.2s, transform 0.2s;
}
.x-logo.spin {
animation: xspin180 0.8s cubic-bezier(0.77, 0, 0.18, 1) forwards;
}
.x-logo.nospin {
transform: rotate(0deg) scale(1.0);
filter: none;
transition: none;
}
.x-logo-cracks {
pointer-events: none;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 2;
}
.x-logo-cracks img {
width: 100%;
height: 100%;
object-fit: cover;
position: absolute;
top: 0;
left: 0;
opacity: 0.55;
pointer-events: none;
}
.footer-x-logo-wrap {
position: relative;
display: inline-block;
width: 28px;
height: 28px;
}
/* === X Logo Full Page Crack-and-Spin Easter Egg === */
.body-cracked .crack-overlay,
.body-cracked .crack1,
.body-cracked .crack2 {
pointer-events: none;
}
.body-cracked {
/* Animate the whole page spin with a transform on html/body! */
animation: bodyspin180 0.8s cubic-bezier(0.77, 0, 0.18, 1) forwards;
will-change: transform;
}
.body-spin-back {
/* Immediately resets the transform, no animation needed */
animation: none !important;
transform: rotate(0deg) !important;
}
@keyframes bodyspin180 {
0% {
transform: rotate(0deg);
}
80% {
transform: rotate(200deg);
}
100% {
transform: rotate(180deg);
}
}