MediaWiki:Common.css: Difference between revisions
Appearance
Tag: Undo |
No edit summary Tag: Reverted |
||
| Line 606: | Line 606: | ||
.race-card:hover .race-card-name { | .race-card:hover .race-card-name { | ||
color: #000814; | color: #000814; | ||
} | |||
/* ========================================================= | |||
UTOPIA HEADER ANIMATIONS - ADD TO COMMON.CSS | |||
Sleek, elegant animations for hardcore gamers | |||
========================================================= */ | |||
/* Container animations */ | |||
.utopia-header-section { | |||
position: relative; | |||
overflow: hidden; | |||
} | |||
/* Animated scanline effect overlay */ | |||
.utopia-header-section::before { | |||
content: ''; | |||
position: absolute; | |||
top: 0; | |||
left: -100%; | |||
width: 100%; | |||
height: 100%; | |||
background: linear-gradient( | |||
90deg, | |||
transparent 0%, | |||
rgba(255, 195, 0, 0.03) 50%, | |||
transparent 100% | |||
); | |||
animation: scanlinePass 8s ease-in-out infinite; | |||
pointer-events: none; | |||
z-index: 1; | |||
} | |||
/* Subtle grid background */ | |||
.utopia-header-section::after { | |||
content: ''; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 100%; | |||
background-image: | |||
linear-gradient(rgba(255, 195, 0, 0.02) 1px, transparent 1px), | |||
linear-gradient(90deg, rgba(255, 195, 0, 0.02) 1px, transparent 1px); | |||
background-size: 60px 60px; | |||
opacity: 0; | |||
animation: gridFadeIn 2s ease-out 0.5s forwards; | |||
pointer-events: none; | |||
z-index: 0; | |||
} | |||
/* Logo floating animation */ | |||
.utopia-header-section img[src*="Utopiawiki"] { | |||
animation: logoFloat 6s ease-in-out infinite; | |||
filter: drop-shadow(0 4px 20px rgba(255, 195, 0, 0.4)); | |||
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |||
position: relative; | |||
z-index: 2; | |||
} | |||
.utopia-header-section img[src*="Utopiawiki"]:hover { | |||
transform: scale(1.08) translateY(-5px) !important; | |||
filter: drop-shadow(0 8px 30px rgba(255, 195, 0, 0.6)); | |||
} | |||
/* Subtitle fade-in with slide */ | |||
.utopia-subtitle { | |||
animation: fadeInSlide 1s ease-out 0.3s backwards; | |||
position: relative; | |||
z-index: 2; | |||
} | |||
.utopia-subtitle::after { | |||
content: ''; | |||
position: absolute; | |||
bottom: -8px; | |||
left: 0; | |||
width: 0%; | |||
height: 2px; | |||
background: linear-gradient(90deg, #FFC300, transparent); | |||
animation: underlineExpand 1.2s ease-out 0.8s forwards; | |||
} | |||
/* Welcome text with stagger */ | |||
.utopia-welcome { | |||
animation: fadeInSlide 1.2s ease-out 0.6s backwards; | |||
position: relative; | |||
z-index: 2; | |||
} | |||
/* Make "Utopia" text glow */ | |||
.utopia-welcome strong { | |||
display: inline-block; | |||
background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%); | |||
-webkit-background-clip: text; | |||
-webkit-text-fill-color: transparent; | |||
background-clip: text; | |||
animation: subtleGlow 3s ease-in-out infinite; | |||
text-shadow: none; | |||
position: relative; | |||
} | |||
/* Divider line animation */ | |||
.utopia-divider { | |||
height: 2px; | |||
margin: 2em auto; | |||
background: linear-gradient( | |||
90deg, | |||
transparent 0%, | |||
rgba(255, 195, 0, 0.2) 20%, | |||
rgba(255, 195, 0, 0.8) 50%, | |||
rgba(255, 195, 0, 0.2) 80%, | |||
transparent 100% | |||
); | |||
position: relative; | |||
overflow: hidden; | |||
animation: fadeInSlide 1s ease-out 1s backwards; | |||
z-index: 2; | |||
} | |||
.utopia-divider::before { | |||
content: ''; | |||
position: absolute; | |||
top: 0; | |||
left: -100%; | |||
width: 40%; | |||
height: 100%; | |||
background: linear-gradient( | |||
90deg, | |||
transparent, | |||
rgba(255, 214, 10, 0.6), | |||
transparent | |||
); | |||
animation: shimmerPass 3s ease-in-out infinite; | |||
} | |||
/* Age links styling */ | |||
.utopia-ages { | |||
animation: fadeInSlide 1.4s ease-out 1.2s backwards; | |||
position: relative; | |||
z-index: 2; | |||
} | |||
/* Age link buttons */ | |||
.utopia-ages a { | |||
display: inline-block; | |||
position: relative; | |||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |||
text-decoration: none !important; | |||
} | |||
.utopia-ages a::before { | |||
content: ''; | |||
position: absolute; | |||
top: -8px; | |||
left: -8px; | |||
right: -8px; | |||
bottom: -8px; | |||
background: linear-gradient(135deg, rgba(255, 195, 0, 0.1), rgba(255, 214, 10, 0.05)); | |||
border: 1px solid rgba(255, 195, 0, 0.3); | |||
border-radius: 4px; | |||
opacity: 0; | |||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |||
pointer-events: none; | |||
} | |||
.utopia-ages a:hover::before { | |||
opacity: 1; | |||
top: -12px; | |||
left: -12px; | |||
right: -12px; | |||
bottom: -12px; | |||
border-color: rgba(255, 195, 0, 0.6); | |||
box-shadow: 0 8px 24px rgba(255, 195, 0, 0.3); | |||
} | |||
.utopia-ages a:hover span { | |||
text-shadow: 0 0 12px rgba(255, 195, 0, 0.8); | |||
} | |||
/* Current age special pulse */ | |||
.age-current { | |||
animation: currentAgePulse 2s ease-in-out infinite; | |||
} | |||
/* Floating particles (optional - can be enabled/disabled) */ | |||
.utopia-header-section .utopia-particle { | |||
position: absolute; | |||
width: 2px; | |||
height: 2px; | |||
background: rgba(255, 195, 0, 0.4); | |||
border-radius: 50%; | |||
pointer-events: none; | |||
z-index: 1; | |||
animation: particleFloat linear infinite; | |||
box-shadow: 0 0 4px rgba(255, 195, 0, 0.6); | |||
} | |||
/* ========================================================= | |||
KEYFRAME ANIMATIONS | |||
========================================================= */ | |||
@keyframes scanlinePass { | |||
0% { | |||
left: -100%; | |||
} | |||
100% { | |||
left: 200%; | |||
} | |||
} | |||
@keyframes gridFadeIn { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes logoFloat { | |||
0%, 100% { | |||
transform: translateY(0px); | |||
} | |||
50% { | |||
transform: translateY(-12px); | |||
} | |||
} | |||
@keyframes fadeInSlide { | |||
from { | |||
opacity: 0; | |||
transform: translateY(20px); | |||
} | |||
to { | |||
opacity: 1; | |||
transform: translateY(0); | |||
} | |||
} | |||
@keyframes underlineExpand { | |||
to { | |||
width: 100%; | |||
} | |||
} | |||
@keyframes subtleGlow { | |||
0%, 100% { | |||
filter: brightness(1) drop-shadow(0 0 8px rgba(255, 195, 0, 0.3)); | |||
} | |||
50% { | |||
filter: brightness(1.15) drop-shadow(0 0 16px rgba(255, 195, 0, 0.5)); | |||
} | |||
} | |||
@keyframes shimmerPass { | |||
0% { | |||
left: -100%; | |||
} | |||
100% { | |||
left: 200%; | |||
} | |||
} | |||
@keyframes currentAgePulse { | |||
0%, 100% { | |||
filter: drop-shadow(0 0 8px rgba(255, 195, 0, 0.4)); | |||
} | |||
50% { | |||
filter: drop-shadow(0 0 16px rgba(255, 195, 0, 0.7)); | |||
} | |||
} | |||
@keyframes particleFloat { | |||
0% { | |||
transform: translateY(0) translateX(0); | |||
opacity: 0; | |||
} | |||
10% { | |||
opacity: 1; | |||
} | |||
90% { | |||
opacity: 1; | |||
} | |||
100% { | |||
transform: translateY(-100vh) translateX(var(--drift, 30px)); | |||
opacity: 0; | |||
} | |||
} | |||
/* ========================================================= | |||
ACCESSIBILITY - Respect reduced motion | |||
========================================================= */ | |||
@media (prefers-reduced-motion: reduce) { | |||
.utopia-header-section::before, | |||
.utopia-header-section::after, | |||
.utopia-header-section img[src*="Utopiawiki"], | |||
.utopia-subtitle, | |||
.utopia-welcome, | |||
.utopia-divider, | |||
.utopia-ages, | |||
.age-current, | |||
.utopia-particle { | |||
animation: none !important; | |||
} | |||
.utopia-header-section img[src*="Utopiawiki"]:hover { | |||
transform: none !important; | |||
} | |||
} | |||
/* ========================================================= | |||
RESPONSIVE ADJUSTMENTS | |||
========================================================= */ | |||
@media (max-width: 768px) { | |||
.utopia-header-section::after { | |||
background-size: 40px 40px; | |||
} | |||
.utopia-ages a::before { | |||
display: none; /* Simplify on mobile */ | |||
} | |||
} | } | ||
Revision as of 21:15, 16 February 2026
/* =========================================================
GLOBAL THEME – MediaWiki 1.45 / Vector 2022
========================================================= */
/* ---------- Background ---------- */
html,
body,
.vector-feature-page-tools-disabled .mw-page-container,
.vector-feature-page-tools-enabled .mw-page-container {
background: linear-gradient(0deg, #001D3D 0%, #000814 40%) !important;
background-attachment: fixed !important;
}
/* Transparent content containers */
.mw-page-container,
.mw-body,
.vector-body {
background: transparent !important;
}
/* ---------- Base text ---------- */
body,
.mw-body,
.mw-body-content,
#mw-content-text,
.vector-body {
color: #fff !important;
}
/* ---------- Headings ---------- */
h1, h2, h3, h4, h5, h6,
.mw-headline,
#firstHeading,
.mw-page-title-main,
.page-Main_Page h1 {
color: #FFC300 !important;
}
/* ---------- Logo ---------- */
.mw-logo-icon,
.mw-logo-icon img,
.mw-logo img,
.mw-logo a.mw-logo-container img {
height: 100px !important;
width: auto !important;
max-height: 100px !important;
}
.mw-logo-icon { background-size: auto 100px !important; }
@media (max-width: 720px) {
.mw-logo-icon,
.mw-logo-icon img,
.mw-logo img,
.mw-logo a.mw-logo-container img {
height: 32px !important;
max-height: 32px !important;
}
.mw-logo-icon { background-size: auto 32px !important; }
}
/* ---------- Header ---------- */
.vector-header-container,
.vector-header,
#mw-header-container,
.mw-header {
background: #000814 !important;
border-bottom: 2px solid #FFC300 !important;
}
/* Site name */
.mw-logo-wordmark,
.mw-logo-wordmark a {
color: #FFC300 !important;
font-size: 1.8em !important;
font-weight: bold !important;
text-decoration: none !important;
}
.mw-logo-wordmark a:hover { color: #FFD60A !important; }
/* Sidebar headings */
.vector-pinnable-header-label,
.vector-main-menu-heading,
.mw-portlet h3 {
color: #FFC300 !important;
}
/* =========================================================
PAGE CONTENT LINKS
========================================================= */
.mw-parser-output a { color: #4DA3FF !important; }
.mw-parser-output a:visited { color: #9B7CFF !important; }
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }
.mw-parser-output a:active { color: #1F4FA3 !important; }
.mw-parser-output a.new,
.mw-parser-output a.new:visited { color: #CC2200 !important; }
/* Optional: keep only if something is overriding text colors inside articles */
/* .mw-parser-output { color: #fff !important; } */
/* =========================================================
GLOBAL TABLE THEME (ALL PAGES)
========================================================= */
.mw-parser-output .wikitable {
width: 100%;
border-collapse: collapse !important;
margin: 0.75em 0;
background: #303030 !important;
border: 1px solid #555555 !important;
}
.mw-parser-output .wikitable caption {
background: #001D3D !important;
color: #fff !important;
font-weight: bold;
padding: 0.5em 0.7em !important;
border-bottom: 1px solid #555555 !important;
}
.mw-parser-output .wikitable thead th {
background: #000 !important;
color: #EAEAEA !important;
font-weight: 700;
border: 1px solid #666666 !important;
padding: 0.5em 0.7em !important;
}
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }
.mw-parser-output .wikitable tbody td {
border: 1px solid #555555 !important;
color: #EAEAEA !important;
padding: 0.5em 0.7em !important;
}
/* =========================================================
TABLE OF CONTENTS – Vector 2022
========================================================= */
#vector-toc,
#toc {
background: #001D3D !important;
border: 1px solid #FFC300 !important;
border-radius: 6px;
padding: 0.75em;
}
#vector-toc .vector-pinnable-header-label,
#toc .toctitle {
color: #FFC300 !important;
font-weight: bold;
}
#vector-toc .vector-toc-text,
#toc a {
color: #EAEAEA !important;
opacity: 1 !important;
text-decoration: none;
}
/* Active item */
#vector-toc .vector-toc-list-item-active { background: transparent !important; }
#vector-toc .vector-toc-list-item-active > a.vector-toc-link { background-color: #FFD60A !important; }
#vector-toc .vector-toc-list-item-active > a.vector-toc-link .vector-toc-text {
color: #000814 !important;
font-weight: 700 !important;
}
/* Expanded parent rules */
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded > a.vector-toc-link .vector-toc-text {
color: #FFC300 !important;
font-weight: 600 !important;
}
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active > a.vector-toc-link .vector-toc-text {
color: #000814 !important;
font-weight: 700 !important;
}
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {
color: #EAEAEA !important;
font-weight: normal !important;
}
/* Hover */
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) > a.vector-toc-link:hover .vector-toc-text {
color: #FFD60A !important;
}
#vector-toc .vector-toc-list-item-active > a.vector-toc-link:hover .vector-toc-text {
color: #000814 !important;
}
/* Remove wrappers */
.vector-toc-container,
#vector-toc-pinned-container,
.vector-pinned-container {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
/* Inline (article) TOC only */
.mw-parser-output > .toc {
background: #001D3D !important;
border: 1px solid #FFC300 !important;
}
/* =========================================================
Draft Cost Formula
========================================================= */
.formula-box {
background: #001D3D;
border: 1px solid #FFC300;
border-radius: 10px;
padding: 0.8em 1em;
margin: 0.75em 0;
color: #EAEAEA;
line-height: 1.6;
white-space: normal;
overflow-wrap: anywhere;
}
.formula-box a { color: #4DA3FF !important; }
.formula-box a:visited { color: #9B7CFF !important; }
/* =========================
Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient
========================= */
.vector-page-tools::before,
.vector-page-tools::after,
.vector-page-tools-container::before,
.vector-page-tools-container::after,
.vector-page-tools-landmark::before,
.vector-page-tools-landmark::after,
.vector-sticky-pinned-container::before,
.vector-sticky-pinned-container::after,
.vector-page-tools .vector-sticky-pinned-container::before,
.vector-page-tools .vector-sticky-pinned-container::after {
background: none !important;
background-image: none !important;
box-shadow: none !important;
filter: none !important;
backdrop-filter: none !important;
mask-image: none !important;
-webkit-mask-image: none !important;
}
/* Change Navigation Icon/Link Colors */
#mw-panel .portal a,
#mw-panel .portal a:visited {
color: #FFC300 !important; /* Change to your desired color */
}
/* Change Footer Link Colors */
div#footer ul li a,
div#footer ul li a:visited {
color: #FFC300 !important; /* Change to your desired color */
}
/* Change Footer Text and Icons */
div#footer ul li {
color: #FFC300 !important;
}
/* Change Navigation Icon/Link Colors */
#mw-panel .portal a,
#mw-panel .portal a:visited {
color: #FFC300 !important; /* Change to your desired color */
}
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */
/* User menu icon (person icon) */
.vector-user-links .vector-icon,
.vector-user-menu-login .vector-icon,
.vector-user-menu-create-account .vector-icon {
filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;
}
/* Settings/hamburger menu icon */
.vector-main-menu-action-toggle .vector-icon,
.vector-page-tools-landmark .vector-icon {
filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;
}
/* All navigation icons */
.vector-icon,
.mw-ui-icon {
filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;
}
/* User menu links (username) */
.vector-user-links a,
.vector-user-menu-logged-in .vector-user-links-main a {
color: #FFC300 !important;
}
/* ===== FOOTER LINKS - VECTOR 2022 ===== */
/* All footer links */
#footer a,
#footer a:link,
#footer a:visited,
.mw-footer a,
.mw-footer a:link,
.mw-footer a:visited,
footer a,
footer a:link,
footer a:visited {
color: #FFC300 !important;
}
/* Footer text color */
#footer,
#footer li,
.mw-footer,
.mw-footer li,
footer,
footer li {
color: #FFC300 !important;
}
/* Older footer selectors (keeping for compatibility) */
div#footer ul li a,
div#footer ul li a:visited {
color: #FFC300 !important;
}
div#footer ul li {
color: #FFC300 !important;
}
/* =========================================================
VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL
Applies to: Main Page | Discussion | Read | Edit | History | Tools
========================================================= */
/* Default page action links (not active) */
.vector-page-toolbar a,
.vector-page-toolbar a:link,
.vector-page-toolbar a:visited,
.vector-page-toolbar .mw-ui-icon a {
color: #FFC300 !important;
}
/* Hover state (optional subtle brighten) */
.vector-page-toolbar a:hover {
color: #FFD60A !important;
}
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */
.vector-page-toolbar .selected a,
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {
color: #FFFFFF !important;
}
/* Ensure active tab background doesn't force dark text */
.vector-page-toolbar .selected a,
.vector-page-toolbar .selected span {
color: #FFFFFF !important;
}
/* Missing page links stay red */
.vector-page-toolbar a.new,
.vector-page-toolbar a.new:visited {
color: #CC2200 !important;
}
/* ============ NAVPILLS ============ */
/* Navpills styling */
.navpills-container {
margin: 1.5em 0;
padding: 0;
}
.navpills {
display: flex;
flex-wrap: wrap;
gap: 0.8em;
list-style: none;
margin: 0;
padding: 0;
}
.navpill-item {
display: inline-block;
}
.navpill-item a {
text-decoration: none !important;
}
.navpill-item a span {
display: inline-block;
padding: 0.7em 1.3em;
background: linear-gradient(135deg, #003566 0%, #001D3D 100%);
color: #FFC300 !important;
border: 2px solid #FFC300;
border-radius: 6px;
font-weight: bold;
text-decoration: none;
transition: all 0.3s ease;
font-size: 1.05em;
box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);
}
.navpill-item a:hover span {
background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);
color: #000814 !important;
border-color: #FFD60A;
box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);
transform: translateY(-2px);
}
/* Mobile responsive */
@media (max-width: 768px) {
.navpills {
flex-direction: column;
}
.navpill-item {
width: 100%;
}
.navpill-item a span {
display: block;
text-align: center;
}
}
/* ============ TABS ============ */
/* CSS-Only Tabs */
.wiki-tabs-container-css {
margin: 2em 0;
background: linear-gradient(180deg, #001D3D 0%, #000814 100%);
border: 2px solid #FFC300;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);
}
/* Hide radio buttons */
.wiki-tab-radio {
display: none;
}
/* Tab Labels (Buttons) */
.wiki-tab-label {
display: inline-block;
padding: 1em 1.5em;
background: #001D3D;
color: #FFC300;
border-right: 1px solid rgba(255, 195, 0, 0.3);
font-size: 1.1em;
font-weight: bold;
cursor: pointer;
transition: all 0.3s ease;
text-align: center;
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, Georgia, serif;
margin: 0;
border-bottom: 2px solid #000814;
}
.wiki-tab-label:hover {
background: #003566;
color: #FFD60A;
}
/* Active tab style */
.wiki-tab-radio:checked + .wiki-tab-label {
background: #FFC300;
color: #000814;
border-bottom: 3px solid #FFD60A;
}
/* Tab Content */
.wiki-tab-content {
display: none;
padding: 2em;
color: #FFFFFF;
}
/* Show content when tab is checked */
.wiki-tab-radio:checked ~ .wiki-tab-content {
display: block;
}
/* Mobile Responsive */
@media (max-width: 768px) {
.wiki-tab-label {
display: block;
width: 100%;
border-right: none;
border-bottom: 1px solid rgba(255, 195, 0, 0.3);
}
}
/* =========================================================
STICKY HEADER FIX - Keep blue background when scrolling
========================================================= */
/* Sticky header container */
.vector-sticky-header,
.vector-sticky-header-container {
background: #000814 !important;
border-bottom: 2px solid #FFC300 !important;
}
/* Sticky header elements */
.vector-sticky-header-start,
.vector-sticky-header-end,
.vector-sticky-header-context-bar {
background: #000814 !important;
}
/* Page title in sticky header */
.vector-sticky-header-context-bar-primary,
.vector-sticky-header .mw-page-title-main {
color: #FFC300 !important;
}
/* Sticky header buttons and icons */
.vector-sticky-header button,
.vector-sticky-header .vector-icon {
filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;
}
/* Sticky header links */
.vector-sticky-header a {
color: #FFC300 !important;
}
/* Race table text override */
.racebox td {
color: black !important;
}
.racebox th {
color: white !important; /* keeps your header colors */
}
/* Equal-width navpills grid */
.navpills-equal-grid .navpills {
display: grid !important;
grid-template-columns: repeat(3, 1fr) !important;
gap: 1em !important;
}
.navpills-equal-grid .navpill-item {
width: 100% !important;
display: block !important;
}
.navpills-equal-grid .navpill-item a span {
display: block !important;
width: 100% !important;
text-align: center !important;
padding: 0.5em !important;
box-sizing: border-box !important;
}
@media (max-width: 768px) {
.navpills-equal-grid .navpills {
grid-template-columns: 1fr !important;
}
}
/* Race card buttons with hover animation */
.race-card {
display: block;
text-align: center;
padding: 1.5em 1em;
background: linear-gradient(135deg, #003566 0%, #001D3D 100%);
border: 2px solid #FFC300;
border-radius: 8px;
transition: all 0.3s ease;
box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);
text-decoration: none;
}
.race-card:hover {
background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);
border-color: #FFD60A;
box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);
transform: translateY(-4px);
}
.race-card img {
display: block;
margin: 0 auto;
transition: transform 0.3s ease;
}
.race-card:hover img {
transform: scale(1.05);
}
.race-card-name {
margin-top: 0.8em;
font-size: 1.2em;
font-weight: bold;
color: #FFC300;
transition: color 0.3s ease;
}
.race-card:hover .race-card-name {
color: #000814;
}
/* =========================================================
UTOPIA HEADER ANIMATIONS - ADD TO COMMON.CSS
Sleek, elegant animations for hardcore gamers
========================================================= */
/* Container animations */
.utopia-header-section {
position: relative;
overflow: hidden;
}
/* Animated scanline effect overlay */
.utopia-header-section::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 195, 0, 0.03) 50%,
transparent 100%
);
animation: scanlinePass 8s ease-in-out infinite;
pointer-events: none;
z-index: 1;
}
/* Subtle grid background */
.utopia-header-section::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image:
linear-gradient(rgba(255, 195, 0, 0.02) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 195, 0, 0.02) 1px, transparent 1px);
background-size: 60px 60px;
opacity: 0;
animation: gridFadeIn 2s ease-out 0.5s forwards;
pointer-events: none;
z-index: 0;
}
/* Logo floating animation */
.utopia-header-section img[src*="Utopiawiki"] {
animation: logoFloat 6s ease-in-out infinite;
filter: drop-shadow(0 4px 20px rgba(255, 195, 0, 0.4));
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
z-index: 2;
}
.utopia-header-section img[src*="Utopiawiki"]:hover {
transform: scale(1.08) translateY(-5px) !important;
filter: drop-shadow(0 8px 30px rgba(255, 195, 0, 0.6));
}
/* Subtitle fade-in with slide */
.utopia-subtitle {
animation: fadeInSlide 1s ease-out 0.3s backwards;
position: relative;
z-index: 2;
}
.utopia-subtitle::after {
content: '';
position: absolute;
bottom: -8px;
left: 0;
width: 0%;
height: 2px;
background: linear-gradient(90deg, #FFC300, transparent);
animation: underlineExpand 1.2s ease-out 0.8s forwards;
}
/* Welcome text with stagger */
.utopia-welcome {
animation: fadeInSlide 1.2s ease-out 0.6s backwards;
position: relative;
z-index: 2;
}
/* Make "Utopia" text glow */
.utopia-welcome strong {
display: inline-block;
background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: subtleGlow 3s ease-in-out infinite;
text-shadow: none;
position: relative;
}
/* Divider line animation */
.utopia-divider {
height: 2px;
margin: 2em auto;
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 195, 0, 0.2) 20%,
rgba(255, 195, 0, 0.8) 50%,
rgba(255, 195, 0, 0.2) 80%,
transparent 100%
);
position: relative;
overflow: hidden;
animation: fadeInSlide 1s ease-out 1s backwards;
z-index: 2;
}
.utopia-divider::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 40%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 214, 10, 0.6),
transparent
);
animation: shimmerPass 3s ease-in-out infinite;
}
/* Age links styling */
.utopia-ages {
animation: fadeInSlide 1.4s ease-out 1.2s backwards;
position: relative;
z-index: 2;
}
/* Age link buttons */
.utopia-ages a {
display: inline-block;
position: relative;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
text-decoration: none !important;
}
.utopia-ages a::before {
content: '';
position: absolute;
top: -8px;
left: -8px;
right: -8px;
bottom: -8px;
background: linear-gradient(135deg, rgba(255, 195, 0, 0.1), rgba(255, 214, 10, 0.05));
border: 1px solid rgba(255, 195, 0, 0.3);
border-radius: 4px;
opacity: 0;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
pointer-events: none;
}
.utopia-ages a:hover::before {
opacity: 1;
top: -12px;
left: -12px;
right: -12px;
bottom: -12px;
border-color: rgba(255, 195, 0, 0.6);
box-shadow: 0 8px 24px rgba(255, 195, 0, 0.3);
}
.utopia-ages a:hover span {
text-shadow: 0 0 12px rgba(255, 195, 0, 0.8);
}
/* Current age special pulse */
.age-current {
animation: currentAgePulse 2s ease-in-out infinite;
}
/* Floating particles (optional - can be enabled/disabled) */
.utopia-header-section .utopia-particle {
position: absolute;
width: 2px;
height: 2px;
background: rgba(255, 195, 0, 0.4);
border-radius: 50%;
pointer-events: none;
z-index: 1;
animation: particleFloat linear infinite;
box-shadow: 0 0 4px rgba(255, 195, 0, 0.6);
}
/* =========================================================
KEYFRAME ANIMATIONS
========================================================= */
@keyframes scanlinePass {
0% {
left: -100%;
}
100% {
left: 200%;
}
}
@keyframes gridFadeIn {
to {
opacity: 1;
}
}
@keyframes logoFloat {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-12px);
}
}
@keyframes fadeInSlide {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes underlineExpand {
to {
width: 100%;
}
}
@keyframes subtleGlow {
0%, 100% {
filter: brightness(1) drop-shadow(0 0 8px rgba(255, 195, 0, 0.3));
}
50% {
filter: brightness(1.15) drop-shadow(0 0 16px rgba(255, 195, 0, 0.5));
}
}
@keyframes shimmerPass {
0% {
left: -100%;
}
100% {
left: 200%;
}
}
@keyframes currentAgePulse {
0%, 100% {
filter: drop-shadow(0 0 8px rgba(255, 195, 0, 0.4));
}
50% {
filter: drop-shadow(0 0 16px rgba(255, 195, 0, 0.7));
}
}
@keyframes particleFloat {
0% {
transform: translateY(0) translateX(0);
opacity: 0;
}
10% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
transform: translateY(-100vh) translateX(var(--drift, 30px));
opacity: 0;
}
}
/* =========================================================
ACCESSIBILITY - Respect reduced motion
========================================================= */
@media (prefers-reduced-motion: reduce) {
.utopia-header-section::before,
.utopia-header-section::after,
.utopia-header-section img[src*="Utopiawiki"],
.utopia-subtitle,
.utopia-welcome,
.utopia-divider,
.utopia-ages,
.age-current,
.utopia-particle {
animation: none !important;
}
.utopia-header-section img[src*="Utopiawiki"]:hover {
transform: none !important;
}
}
/* =========================================================
RESPONSIVE ADJUSTMENTS
========================================================= */
@media (max-width: 768px) {
.utopia-header-section::after {
background-size: 40px 40px;
}
.utopia-ages a::before {
display: none; /* Simplify on mobile */
}
}