Files
SkyArtShop/website/assets/css/utilities.css

362 lines
5.4 KiB
CSS
Raw Normal View History

2025-12-19 20:44:46 -06:00
/* Toast Notifications */
.toast-notification {
position: fixed;
top: 20px;
right: 20px;
min-width: 300px;
max-width: 500px;
padding: 16px 20px;
background: white;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
display: flex;
align-items: center;
gap: 12px;
z-index: 10000;
opacity: 0;
transform: translateX(400px);
transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
.toast-notification.show {
opacity: 1;
transform: translateX(0);
}
.toast-icon {
width: 24px;
height: 24px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: bold;
flex-shrink: 0;
}
.toast-success {
border-left: 4px solid #28a745;
}
.toast-success .toast-icon {
background: #28a745;
color: white;
}
.toast-error {
border-left: 4px solid #dc3545;
}
.toast-error .toast-icon {
background: #dc3545;
color: white;
}
.toast-warning {
border-left: 4px solid #ffc107;
}
.toast-warning .toast-icon {
background: #ffc107;
color: #000;
}
.toast-info {
border-left: 4px solid #17a2b8;
}
.toast-info .toast-icon {
background: #17a2b8;
color: white;
}
.toast-message {
flex: 1;
color: #333;
font-size: 14px;
line-height: 1.4;
}
.toast-close {
background: none;
border: none;
font-size: 20px;
color: #999;
cursor: pointer;
padding: 0;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
transition: color 0.2s;
flex-shrink: 0;
}
.toast-close:hover {
color: #333;
}
.toast-close:focus {
outline: 2px solid #667eea;
outline-offset: 2px;
border-radius: 4px;
}
/* Screen Reader Only */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* Skip to Main Content Link */
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: #667eea;
color: white;
padding: 8px 16px;
text-decoration: none;
border-radius: 0 0 4px 0;
z-index: 10001;
}
.skip-link:focus {
top: 0;
}
/* Focus Styles - Accessibility */
*:focus-visible {
outline: 2px solid #667eea;
outline-offset: 2px;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
outline: 2px solid #667eea;
outline-offset: 2px;
}
/* Remove outline for mouse users */
*:focus:not(:focus-visible) {
outline: none;
}
/* Loading Spinner */
.spinner {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #667eea;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.spinner-small {
width: 20px;
height: 20px;
border-width: 2px;
}
/* Loading Overlay */
.loading-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.loading-overlay .spinner {
border-color: rgba(255, 255, 255, 0.3);
border-top-color: white;
}
/* Responsive Images */
img {
max-width: 100%;
height: auto;
}
/* Responsive Typography */
html {
font-size: 16px;
}
@media (max-width: 768px) {
html {
font-size: 14px;
}
}
@media (max-width: 480px) {
html {
font-size: 13px;
}
}
/* Responsive Containers */
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
@media (min-width: 1400px) {
.container {
max-width: 1320px;
}
}
/* Mobile Responsive Utilities */
@media (max-width: 768px) {
.toast-notification {
right: 10px;
left: 10px;
min-width: auto;
max-width: calc(100% - 20px);
}
.hide-mobile {
display: none !important;
}
}
@media (min-width: 769px) {
.show-mobile-only {
display: none !important;
}
}
/* Tablet Specific */
@media (min-width: 768px) and (max-width: 1024px) {
.hide-tablet {
display: none !important;
}
}
/* Desktop Specific */
@media (min-width: 1025px) {
.hide-desktop {
display: none !important;
}
}
/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* High Contrast Mode */
@media (prefers-contrast: high) {
* {
border-width: 2px !important;
}
button,
a {
text-decoration: underline;
}
}
/* Dark Mode Support */
@media (prefers-color-scheme: dark) {
.toast-notification {
background: #2d3748;
color: #fff;
}
.toast-message {
color: #e2e8f0;
}
.toast-close {
color: #a0aec0;
}
.toast-close:hover {
color: #e2e8f0;
}
}
/* Print Styles */
@media print {
.no-print,
.toast-notification,
.skip-link,
button,
nav {
display: none !important;
}
a[href]:after {
content: " (" attr(href) ")";
}
img {
max-width: 100% !important;
}
}