mail-s3-admin/app/globals.css

137 lines
2.8 KiB
CSS

@import "tailwindcss";
@layer base {
li {
list-style-type: none;
}
/* Better focus visibility */
*:focus {
outline: 2px solid transparent;
outline-offset: 2px;
}
*:focus-visible {
outline: 2px solid rgb(59 130 246);
outline-offset: 2px;
}
/* Better text rendering */
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Screen reader only class */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
}
@layer components {
/* Skeleton Loading Animation */
.skeleton {
background: linear-gradient(
90deg,
rgb(229 231 235) 0%,
rgb(243 244 246) 50%,
rgb(229 231 235) 100%
);
background-size: 200% 100%;
animation: skeleton-loading 1.5s ease-in-out infinite;
border-radius: 0.375rem;
}
@keyframes skeleton-loading {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
/* Enhanced focus ring */
.focus-ring:focus-visible {
outline: 2px solid rgb(59 130 246);
outline-offset: 2px;
}
/* Fade in animation */
.fade-in {
animation: fadeIn 0.3s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Staggered list animation */
.fade-in-stagger > *:nth-child(1) { animation: fadeIn 0.3s ease-out 0ms backwards; }
.fade-in-stagger > *:nth-child(2) { animation: fadeIn 0.3s ease-out 50ms backwards; }
.fade-in-stagger > *:nth-child(3) { animation: fadeIn 0.3s ease-out 100ms backwards; }
.fade-in-stagger > *:nth-child(4) { animation: fadeIn 0.3s ease-out 150ms backwards; }
.fade-in-stagger > *:nth-child(5) { animation: fadeIn 0.3s ease-out 200ms backwards; }
.fade-in-stagger > *:nth-child(n+6) { animation: fadeIn 0.3s ease-out 250ms backwards; }
/* Button hover effect */
.button-hover-lift:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(37, 99, 235, 0.15);
}
.button-hover-lift:active {
transform: translateY(0);
}
}
@layer utilities {
/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
}
/* Print styles for email content */
@media print {
nav, button, .no-print {
display: none !important;
}
body {
background: white;
color: black;
}
.email-content a::after {
content: " (" attr(href) ")";
font-size: 9pt;
color: #6b7280;
}
* {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
}