Files
SREBOT/web/public/css/tailwind.css
T

326 lines
9.6 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* Custom Fonts */
@font-face {
font-family: 'skyquakesymbols';
src: url('/Fonts/symbols_skyquake.ttf');
font-display: block;
}
@layer base {
* {
@apply m-0 p-0 box-border;
}
body {
@apply font-sans leading-relaxed text-white overflow-x-hidden min-h-screen antialiased;
background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('/images/toothless_face.webp');
background-size: cover;
background-position: center;
background-attachment: fixed;
background-repeat: no-repeat;
-webkit-overflow-scrolling: touch;
}
html {
@apply scroll-smooth;
}
}
@layer components {
/* ========================================
COLOR SCHEME:
- Background: Dark earth green (#1C1E1D) to graphite (#0A0B0A)
- Accent/Primary text: Cream (#F5F5DC)
- Secondary/Muted text: Mint green (#90EE90)
======================================== */
/* Vehicle, Squadron, and Player names use custom font */
.vehicle-name,
.squadron-name,
.squadron-tag,
.player-name,
.player-nick {
@apply font-skyquake;
}
/* Primary Button - Cream gradient */
.btn-primary {
@apply inline-flex items-center justify-center px-6 py-3 font-bold rounded-lg
transition-all duration-300 relative overflow-hidden;
background: linear-gradient(135deg, #F5F5DC 0%, #E8E8D0 100%);
color: #1E1E1E;
box-shadow: 0 4px 20px rgba(245, 245, 220, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.4);
}
.btn-primary:hover {
box-shadow: 0 8px 25px rgba(245, 245, 220, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.4);
transform: translateY(-2px);
}
.btn-primary:active {
transform: translateY(0);
}
/* Navigation callouts */
.nav-premium {
color: #f4d35e;
}
.nav-premium:hover {
color: #ffe08a;
}
.nav-rainbow {
color: #ff9b8a;
}
.nav-rainbow:hover {
color: #ffc0b4;
}
.nav-donate {
background: linear-gradient(90deg, #ff7a7a 0%, #ffd166 25%, #90ee90 50%, #8fd3ff 75%, #c79bff 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
}
.nav-donate:hover {
filter: brightness(1.12);
}
.nav-donate i {
-webkit-text-fill-color: initial;
color: #ffd166;
}
/* Secondary Button */
.btn-secondary {
@apply inline-flex items-center justify-center px-6 py-3
bg-white/10 text-white font-semibold rounded-lg border-2 border-primary-400/50
transition-all duration-300 backdrop-blur-sm
hover:-translate-y-0.5 hover:bg-primary-400/20 hover:border-primary-400
active:translate-y-0;
}
/* Feature Card - used on homepage */
.feature-card {
background: linear-gradient(135deg, rgba(62, 78, 62, 0.2) 0%, rgba(44, 44, 44, 0.2) 100%);
border: 1px solid rgba(245, 245, 220, 0.08);
backdrop-filter: blur(12px);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.card-hover:hover {
transform: translateY(-3px);
background: linear-gradient(135deg, rgba(62, 78, 62, 0.3) 0%, rgba(44, 44, 44, 0.3) 100%);
border-color: rgba(144, 238, 144, 0.3);
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3);
}
.card-hover:hover i {
color: #F5F5DC;
transform: scale(1.1);
transition: transform 0.3s ease;
}
/* Search Input - Glass effect */
.search-input-glass {
background: rgba(30, 30, 30, 0.6);
border: 1px solid rgba(245, 245, 220, 0.1);
backdrop-filter: blur(10px);
transition: all 0.3s ease;
box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
}
.search-input-glass:focus {
background: rgba(40, 40, 40, 0.8);
border-color: rgba(144, 238, 144, 0.4);
box-shadow: 0 0 0 2px rgba(144, 238, 144, 0.1), inset 0 2px 4px rgba(0,0,0,0.2);
}
/* Card Component */
.card {
@apply bg-dark-100/80 backdrop-blur-md rounded-2xl border border-primary-400/20
p-6 transition-all duration-300
hover:border-primary-400/40 hover:shadow-lg hover:shadow-primary-400/10;
}
/* Glass Card (more transparent) */
.glass-card {
@apply bg-dark-100/60 backdrop-blur-xl rounded-2xl border border-primary-400/20
p-6 transition-all duration-300;
}
/* Stat Card */
.stat-card {
@apply card text-center relative overflow-hidden
hover:-translate-y-1 hover:border-primary-400;
}
/* Input Field */
.input-field {
@apply w-full px-4 py-3 bg-dark-200/80 border-2 border-primary-400/30
rounded-lg text-white placeholder-white/50
transition-all duration-300 backdrop-blur-sm
focus:outline-none focus:border-primary-400 focus:shadow-lg focus:shadow-primary-400/20;
}
/* Select Dropdown */
.select-field {
@apply input-field cursor-pointer appearance-none pr-10;
background-image: url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%2339ff14%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3e%3cpolyline points=%226 9 12 15 18 9%22%3e%3c/polyline%3e%3c/svg%3e');
background-position: right 0.75rem center;
background-size: 1.25rem;
background-repeat: no-repeat;
}
/* Table Styles */
.data-table {
@apply w-full border-collapse bg-dark-200/80 rounded-xl overflow-hidden
shadow-xl border border-primary-400/10;
}
.data-table thead {
@apply bg-gradient-to-r from-primary-400/20 to-primary-500/20;
}
.data-table th {
@apply px-4 py-3 text-white font-semibold text-center border-b-2 border-primary-400/30;
}
.data-table td {
@apply px-4 py-3 text-center text-white/90 border-b border-primary-400/10;
}
.data-table tbody tr {
@apply transition-all duration-300 hover:bg-gradient-to-r hover:from-primary-400/10
hover:to-primary-500/10 hover:scale-[1.01];
}
/* Loading Spinner */
.spinner {
@apply border-4 border-primary-400/30 border-t-primary-400 rounded-full
w-10 h-10 animate-spin mx-auto;
}
/* Badge */
.badge {
@apply inline-flex items-center px-3 py-1 rounded-full text-sm font-semibold
bg-primary-400/10 text-primary-400 border border-primary-400/30;
}
/* Navbar */
.navbar {
@apply fixed top-0 w-full bg-dark-300/95 backdrop-blur-md z-50
border-b border-primary-400/20 transition-all duration-300;
}
/* Container */
.container-custom {
@apply max-w-7xl mx-auto px-4 sm:px-6 lg:px-8;
}
/* Section Title */
.section-title {
@apply text-4xl font-bold text-center mb-4 bg-gradient-to-r from-primary-400 via-primary-500 to-primary-400
bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient-shift;
}
/* Link Hover Effect */
.link-hover {
@apply relative text-white transition-colors duration-300
hover:text-primary-400
after:content-[''] after:absolute after:bottom-0 after:left-0
after:w-0 after:h-0.5 after:bg-gradient-to-r after:from-primary-400 after:to-primary-500
after:transition-all after:duration-300
hover:after:w-full;
}
/* Date Filter Styles */
.date-filter-container {
@apply glass-card space-y-4;
}
.filter-button {
@apply px-4 py-2 rounded-lg border border-primary-400/30 bg-dark-100/50
text-white font-medium transition-all duration-300
hover:border-primary-400 hover:bg-primary-400/10
focus:outline-none focus:ring-2 focus:ring-primary-400/50;
}
.filter-button-active {
@apply filter-button border-primary-400 bg-primary-400/20 text-primary-400 shadow-lg shadow-primary-400/20;
}
}
@layer utilities {
/* Text Gradient */
.text-gradient {
@apply bg-gradient-to-r from-primary-400 via-primary-500 to-primary-600
bg-clip-text text-transparent;
}
/* Glass Effect */
.glass {
@apply bg-white/5 backdrop-blur-md;
}
/* Glow Effect */
.glow {
@apply shadow-lg shadow-primary-400/30;
}
/* Scrollbar Styles */
.custom-scrollbar::-webkit-scrollbar {
@apply w-2 h-2;
}
.custom-scrollbar::-webkit-scrollbar-track {
@apply bg-dark-200 rounded;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
@apply bg-primary-400/30 rounded hover:bg-primary-400/50;
}
}
/* Additional custom animations */
@keyframes gradientShift {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
@keyframes scrollRight {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
/* Row link overlay - makes entire table row clickable with native right-click support */
tr.row-link {
position: relative;
cursor: pointer;
}
tr.row-link a.row-link-overlay::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
tr.row-link td a:not(.row-link-overlay),
tr.row-link td button,
tr.row-link td [tabindex],
tr.row-link td input,
tr.row-link td select,
tr.row-link td textarea {
position: relative;
z-index: 1;
}