Spaces:
Running
Running
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Montserrat:ital,wght@0,400;0,700;0,900;1,900&family=Permanent+Marker&display=swap'); | |
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| :root { | |
| /* Design Tokens - Colors */ | |
| --color-primary: 37 99 235; /* #2563eb - Blue 600 */ | |
| --color-primary-hover: 29 78 216; | |
| --color-secondary: 107 114 128; | |
| --color-success: 34 197 94; | |
| --color-danger: 239 68 68; | |
| --color-warning: 234 179 8; | |
| --color-accent: 253 185 19; /* #fdb913 */ | |
| --color-accent-drift: #fdb913; | |
| /* Surface Tokens */ | |
| --color-bg: 241 243 245; | |
| --color-text: 26 26 46; | |
| --color-card: 255 255 255; | |
| --color-card-border: 0 0 0; | |
| --opacity-card-border: 0.05; | |
| /* Layout Tokens */ | |
| --radius-card: 3rem; | |
| --radius-button: 1rem; | |
| --border-width-card: 1px; | |
| /* Shadows */ | |
| --shadow-card: 0 10px 50px -12px rgba(0, 0, 0, 0.25); | |
| /* Animation */ | |
| --transition-speed: 0.3s; | |
| } | |
| [data-bs-theme="dark"], .dark { | |
| --color-bg: 15 15 26; | |
| --color-text: 241 242 246; | |
| --color-card: 26 26 46; | |
| --color-card-border: 255 255 255; | |
| --opacity-card-border: 0.05; | |
| --shadow-card: 0 10px 50px -12px rgba(0, 0, 0, 0.5); | |
| } | |
| .font-vibe-manga { | |
| font-family: 'Montserrat', sans-serif ; | |
| } | |
| .font-vibe-brush { | |
| font-family: 'Permanent Marker', cursive ; | |
| } | |
| /* Theme Presets */ | |
| .theme-naruto { | |
| --color-primary: 249 115 22; /* Orange */ | |
| --color-accent: 0 0 0; /* Black */ | |
| --radius-card: 1rem; /* Shaper look */ | |
| --border-width-card: 3px; | |
| --opacity-card-border: 1; | |
| } | |
| .theme-manga-classic { | |
| --color-primary: 0 0 0; | |
| --color-secondary: 0 0 0; | |
| --color-bg: 255 255 255; | |
| --color-card: 255 255 255; | |
| --color-text: 0 0 0; | |
| --color-card-border: 0 0 0; | |
| --opacity-card-border: 1; | |
| --border-width-card: 4px; | |
| --radius-card: 0px; | |
| --shadow-card: 10px 10px 0px 0px rgba(0,0,0,1); | |
| } | |
| @layer base { | |
| body { | |
| background-color: rgb(var(--color-bg)); | |
| color: rgb(var(--color-text)); | |
| transition: background-color var(--transition-speed), color var(--transition-speed); | |
| } | |
| } | |
| /* SKELETON LOADERS */ | |
| .skeleton { | |
| background: linear-gradient(90deg, var(--card-bg) 25%, var(--page-bg) 50%, var(--card-bg) 75%); | |
| background-size: 200% 100%; | |
| animation: skeleton-loading 1.5s infinite; | |
| border-radius: 0.5rem; | |
| } | |
| @keyframes skeleton-loading { | |
| 0% { background-position: 200% 0; } | |
| 100% { background-position: -200% 0; } | |
| } | |
| @keyframes float-particle { | |
| 0% { transform: translateY(0); opacity: 0; } | |
| 50% { opacity: 0.5; } | |
| 100% { transform: translateY(-500px); opacity: 0; } | |
| } | |
| .particle { | |
| animation: float-particle linear infinite; | |
| } | |
| /* Singularity Labs — drifting latent-space grid (signature motion) */ | |
| @keyframes grid-pan { | |
| 0% { background-position: 0 0; } | |
| 100% { background-position: 44px 44px; } | |
| } | |
| .animate-grid-pan { | |
| animation: grid-pan 6s linear infinite; | |
| } | |
| /* World Boss — alert beam scanning across the banner (signature motion) */ | |
| @keyframes boss-sweep { | |
| 0% { transform: translateX(-120%) skewX(-12deg); opacity: 0; } | |
| 12% { opacity: 1; } | |
| 88% { opacity: 1; } | |
| 100% { transform: translateX(360%) skewX(-12deg); opacity: 0; } | |
| } | |
| .animate-boss-sweep { | |
| animation: boss-sweep 5s ease-in-out infinite; | |
| } | |
| /* World Boss — breathing danger aura behind the boss */ | |
| @keyframes boss-pulse { | |
| 0%, 100% { opacity: 0.45; transform: translateY(-50%) scale(0.92); } | |
| 50% { opacity: 0.85; transform: translateY(-50%) scale(1.06); } | |
| } | |
| .animate-boss-pulse { | |
| animation: boss-pulse 3.5s ease-in-out infinite; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .animate-grid-pan, | |
| .animate-boss-sweep, | |
| .animate-boss-pulse { animation: none; } | |
| } | |
| /* CORE STYLES */ | |
| body { | |
| font-family: 'Inter', sans-serif; | |
| background-color: var(--page-bg); | |
| color: var(--page-text); | |
| min-height: 100vh; | |
| } | |
| .manga-font { font-family: 'Montserrat', sans-serif; font-weight: 900; font-style: italic; text-transform: uppercase; } | |
| @layer base { | |
| * { | |
| box-sizing: border-box; | |
| } | |
| :root { | |
| --page-bg: #f1f3f5; | |
| --page-text: #1a1a2e; | |
| --card-bg: #ffffff; | |
| --card-shadow: rgba(0,0,0,0.05); | |
| --hero-gradient: linear-gradient(105deg, #fff9e6 40%, #fffcf0 40.1%); | |
| } | |
| /* Dark mode configuration */ | |
| [data-bs-theme="dark"], .dark { | |
| --page-bg: #0f0f1a; | |
| --page-text: #f1f2f6; | |
| --card-bg: #1a1a2e; | |
| --card-shadow: rgba(0,0,0,0.3); | |
| --hero-gradient: linear-gradient(105deg, #0f0f1a 40%, #1a1a2e 40.1%); | |
| } | |
| body { | |
| @apply font-sans antialiased; | |
| background-color: var(--page-bg); | |
| color: var(--page-text); | |
| min-height: 100vh; | |
| transition: background-color 0.5s ease, color 0.5s ease; | |
| } | |
| .home-bg { | |
| background-image: linear-gradient(rgba(255, 252, 240, 0.7), rgba(255, 252, 240, 0.7)), url("/static/img/background.png"); | |
| background-attachment: fixed; | |
| background-size: cover; | |
| background-position: center; | |
| } | |
| [data-bs-theme="dark"] .home-bg, .dark .home-bg { | |
| background-image: linear-gradient(rgba(15, 15, 26, 0.82), rgba(15, 15, 26, 0.82)), url("/static/img/background.png"); | |
| } | |
| body::before { | |
| content: ""; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: inherit; | |
| filter: blur(8px); | |
| z-index: -1; | |
| opacity: 0.08; | |
| pointer-events: none; | |
| } | |
| [data-bs-theme="dark"] body::before, .dark body::before { | |
| opacity: 0.05; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| } | |
| @layer components { | |
| .manga-font { | |
| @apply font-manga font-black italic uppercase; | |
| } | |
| .brush-font { | |
| @apply font-brush; | |
| } | |
| .hero-bg { | |
| background: var(--hero-gradient); | |
| } | |
| .glass-card { | |
| background-color: var(--card-bg); | |
| @apply rounded-2xl border border-black/5 dark:border-white/5 transition-colors duration-500; | |
| box-shadow: 0 4px 32px var(--card-shadow); | |
| } | |
| .collection-card { | |
| background: linear-gradient(to right, #ffd166, #fdb913); | |
| } | |
| .btn-primary { | |
| @apply bg-anime-accent text-black font-black italic manga-font px-6 py-3 rounded-xl transition-all duration-300 hover:bg-anime-accent-dark hover:scale-105 hover:shadow-lg disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100; | |
| } | |
| .btn-secondary { | |
| @apply bg-black/80 dark:bg-white/10 text-white font-black italic manga-font px-5 py-2.5 rounded-xl transition-all duration-300 hover:bg-black dark:hover:bg-white/20; | |
| } | |
| .input-field { | |
| @apply bg-transparent border-2 border-black/10 dark:border-white/10 rounded-xl px-4 py-3 text-anime-light-text dark:text-anime-dark-text placeholder-black/30 dark:placeholder-white/30 focus:outline-none focus:border-anime-accent focus:ring-2 focus:ring-anime-accent/20 transition-all duration-200 w-full; | |
| } | |
| .badge { | |
| @apply inline-flex items-center gap-1.5 text-xs font-black uppercase px-3 py-1 rounded-full; | |
| } | |
| .badge-correct { | |
| @apply badge bg-anime-success/20 text-anime-success border border-anime-success/30; | |
| } | |
| .badge-wrong { | |
| @apply badge bg-anime-error/20 text-anime-error border border-anime-error/30; | |
| } | |
| .badge-partial { | |
| @apply badge bg-[#fdb913]/20 text-[#d97706] dark:text-[#fdb913] border border-[#fdb913]/30; | |
| } | |
| } | |
| /* --- Scrollbars --- */ | |
| /* Barre fine, arrondie et thématique (accent bleu de la marque). */ | |
| .custom-scrollbar { | |
| scrollbar-width: thin; /* Firefox */ | |
| scrollbar-color: rgba(59, 130, 246, 0.45) transparent; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-thumb { | |
| background-color: rgba(59, 130, 246, 0.4); | |
| border-radius: 9999px; | |
| border: 2px solid transparent; | |
| background-clip: padding-box; | |
| } | |
| .custom-scrollbar::-webkit-scrollbar-thumb:hover { | |
| background-color: rgba(59, 130, 246, 0.75); | |
| background-clip: padding-box; | |
| } | |
| /* Masque complètement la barre tout en gardant le défilement. */ | |
| .no-scrollbar { | |
| -ms-overflow-style: none; /* IE/Edge */ | |
| scrollbar-width: none; /* Firefox */ | |
| } | |
| .no-scrollbar::-webkit-scrollbar { | |
| display: none; | |
| } | |
| /* Themed range slider (Undercover lobby). The filled portion is painted via an | |
| inline linear-gradient background; --uc-accent themes the glowing thumb. */ | |
| .uc-slider { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 100%; | |
| height: 8px; | |
| border-radius: 9999px; | |
| background: rgba(255, 255, 255, 0.08); | |
| outline: none; | |
| cursor: pointer; | |
| } | |
| .uc-slider::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 22px; | |
| height: 22px; | |
| border-radius: 9999px; | |
| background: var(--uc-accent, #ef4444); | |
| border: 3px solid #0d0f17; | |
| box-shadow: 0 0 0 1px var(--uc-accent, #ef4444), | |
| 0 0 16px -2px var(--uc-accent, #ef4444); | |
| cursor: pointer; | |
| transition: transform 0.12s ease, box-shadow 0.12s ease; | |
| } | |
| .uc-slider::-webkit-slider-thumb:hover { | |
| transform: scale(1.18); | |
| } | |
| .uc-slider::-webkit-slider-thumb:active { | |
| transform: scale(1.06); | |
| } | |
| .uc-slider:focus-visible::-webkit-slider-thumb { | |
| box-shadow: 0 0 0 2px #0d0f17, 0 0 0 4px var(--uc-accent, #ef4444); | |
| } | |
| .uc-slider::-moz-range-thumb { | |
| width: 22px; | |
| height: 22px; | |
| border-radius: 9999px; | |
| background: var(--uc-accent, #ef4444); | |
| border: 3px solid #0d0f17; | |
| box-shadow: 0 0 0 1px var(--uc-accent, #ef4444), | |
| 0 0 16px -2px var(--uc-accent, #ef4444); | |
| cursor: pointer; | |
| } | |
| .uc-slider::-moz-range-track { | |
| background: transparent; | |
| } | |