Template:NavCard/styles.css: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* | |||
* LumiWiki Navigation Cards | |||
* MediaWiki 1.46 / Vector 2022 | |||
* | |||
* Full-card clickable navigation using | |||
* a stretched title link. | |||
*/ | |||
/* ========================================== | |||
1. MAIN CARD CONTAINER | |||
========================================== */ | |||
.lumi-navcard { | .lumi-navcard { | ||
position: relative; | |||
display: flex; | display: flex; | ||
flex-direction: column; | flex-direction: column; | ||
height: 100%; | height: 100%; | ||
overflow: hidden; | overflow: hidden; | ||
background: #202834; | |||
color: #f5f7fa; | |||
transition: border-color 0. | border: 1px solid #394657; | ||
border-radius: 12px; | |||
transition: | |||
border-color 0.25s ease, | |||
box-shadow 0.25s ease, | |||
transform 0.25s ease; | |||
} | } | ||
/* ========================================== | |||
2. HOVER INTERACTION | |||
========================================== */ | |||
.lumi-navcard:hover { | .lumi-navcard:hover { | ||
border-color: # | border-color: #55c8ff; | ||
transform: translateY(- | |||
box-shadow: | |||
0 8px 24px rgba(0, 0, 0, 0.25), | |||
0 0 14px rgba(85, 200, 255, 0.15); | |||
transform: translateY(-4px); | |||
} | } | ||
.lumi-navcard-image | /* ========================================== | ||
3. CARD IMAGE | |||
========================================== */ | |||
.lumi-navcard-image { | |||
position: relative; | |||
width: 100%; | |||
aspect-ratio: 16 / 9; | aspect-ratio: 16 / 9; | ||
overflow: hidden; | overflow: hidden; | ||
background: linear-gradient( | |||
to bottom, | |||
#303b4b, | |||
#202834 | |||
); | |||
} | } | ||
.lumi-navcard-image { | .lumi-navcard-image img { | ||
display: block; | |||
width: 100%; | width: 100%; | ||
height: 100%; | height: 100%; | ||
object-fit: cover; | |||
transition: | |||
transform 0.35s ease, | |||
filter 0.35s ease; | |||
} | } | ||
.lumi-navcard-img { | .lumi-navcard:hover .lumi-navcard-image img { | ||
transform: scale(1.045); | |||
filter: brightness(1.08); | |||
} | } | ||
/* ========================================== | |||
4. CARD CONTENT | |||
========================================== */ | |||
.lumi-navcard-content { | .lumi-navcard-content { | ||
| Line 39: | Line 87: | ||
flex-direction: column; | flex-direction: column; | ||
flex-grow: 1; | flex-grow: 1; | ||
padding: | |||
gap: | padding: 18px; | ||
gap: 9px; | |||
} | } | ||
/* ========================================== | |||
5. CARD TITLE | |||
========================================== */ | |||
.lumi-navcard-title { | .lumi-navcard-title { | ||
font-size: 1. | font-size: 1.12em; | ||
font-weight: 700; | font-weight: 700; | ||
letter-spacing: -0.02em; | |||
line-height: 1.3; | |||
} | } | ||
.lumi-navcard-title a { | .lumi-navcard-title a { | ||
color: # | color: #f5f7fa; | ||
text-decoration: none; | text-decoration: none; | ||
} | } | ||
/* | |||
* Stretch the title link across the card. | |||
* The card is the positioning container. | |||
*/ | |||
.lumi-navcard-title a::after { | |||
content: ""; | |||
position: absolute; | |||
top: 0; | |||
right: 0; | |||
bottom: 0; | |||
left: 0; | |||
z-index: 2; | |||
} | |||
.lumi-navcard:hover .lumi-navcard-title a { | |||
color: #55c8ff; | |||
} | |||
/* ========================================== | |||
6. CARD DESCRIPTION | |||
========================================== */ | |||
.lumi-navcard-description { | .lumi-navcard-description { | ||
color: # | color: #b9c5d4; | ||
font-size: 0.9em; | font-size: 0.9em; | ||
line-height: 1.55; | |||
} | } | ||
/* ========================================== | |||
7. BOTTOM NAVIGATION LABEL | |||
========================================== */ | |||
.lumi-navcard-link { | .lumi-navcard-link { | ||
margin-top: auto; | margin-top: auto; | ||
padding-top: 12px; | padding-top: 12px; | ||
color: #55c8ff; | |||
color: # | |||
font-size: 0.8em; | font-size: 0.8em; | ||
font-weight: 700; | font-weight: 700; | ||
letter-spacing: 0.025em; | |||
} | |||
/* ========================================== | |||
8. KEYBOARD NAVIGATION | |||
========================================== */ | |||
.lumi-navcard-title a:focus { | |||
outline: 2px solid #55c8ff; | |||
outline-offset: 2px; | |||
} | |||
.lumi-navcard-title a:focus::after { | |||
outline: 2px solid #55c8ff; | |||
outline-offset: -3px; | |||
border-radius: 12px; | |||
} | |||
/* ========================================== | |||
9. REDUCED MOTION ACCESSIBILITY | |||
========================================== */ | |||
@media (prefers-reduced-motion: reduce) { | |||
.lumi-navcard, | |||
.lumi-navcard-image img { | |||
transition: none; | |||
} | |||
.lumi-navcard:hover { | |||
transform: none; | |||
} | |||
.lumi-navcard:hover .lumi-navcard-image img { | |||
transform: none; | |||
filter: none; | |||
} | |||
} | } | ||
Latest revision as of 23:30, 13 November 2026
/*
* LumiWiki Navigation Cards
* MediaWiki 1.46 / Vector 2022
*
* Full-card clickable navigation using
* a stretched title link.
*/
/* ==========================================
1. MAIN CARD CONTAINER
========================================== */
.lumi-navcard {
position: relative;
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
background: #202834;
color: #f5f7fa;
border: 1px solid #394657;
border-radius: 12px;
transition:
border-color 0.25s ease,
box-shadow 0.25s ease,
transform 0.25s ease;
}
/* ==========================================
2. HOVER INTERACTION
========================================== */
.lumi-navcard:hover {
border-color: #55c8ff;
box-shadow:
0 8px 24px rgba(0, 0, 0, 0.25),
0 0 14px rgba(85, 200, 255, 0.15);
transform: translateY(-4px);
}
/* ==========================================
3. CARD IMAGE
========================================== */
.lumi-navcard-image {
position: relative;
width: 100%;
aspect-ratio: 16 / 9;
overflow: hidden;
background: linear-gradient(
to bottom,
#303b4b,
#202834
);
}
.lumi-navcard-image img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
transition:
transform 0.35s ease,
filter 0.35s ease;
}
.lumi-navcard:hover .lumi-navcard-image img {
transform: scale(1.045);
filter: brightness(1.08);
}
/* ==========================================
4. CARD CONTENT
========================================== */
.lumi-navcard-content {
display: flex;
flex-direction: column;
flex-grow: 1;
padding: 18px;
gap: 9px;
}
/* ==========================================
5. CARD TITLE
========================================== */
.lumi-navcard-title {
font-size: 1.12em;
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1.3;
}
.lumi-navcard-title a {
color: #f5f7fa;
text-decoration: none;
}
/*
* Stretch the title link across the card.
* The card is the positioning container.
*/
.lumi-navcard-title a::after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 2;
}
.lumi-navcard:hover .lumi-navcard-title a {
color: #55c8ff;
}
/* ==========================================
6. CARD DESCRIPTION
========================================== */
.lumi-navcard-description {
color: #b9c5d4;
font-size: 0.9em;
line-height: 1.55;
}
/* ==========================================
7. BOTTOM NAVIGATION LABEL
========================================== */
.lumi-navcard-link {
margin-top: auto;
padding-top: 12px;
color: #55c8ff;
font-size: 0.8em;
font-weight: 700;
letter-spacing: 0.025em;
}
/* ==========================================
8. KEYBOARD NAVIGATION
========================================== */
.lumi-navcard-title a:focus {
outline: 2px solid #55c8ff;
outline-offset: 2px;
}
.lumi-navcard-title a:focus::after {
outline: 2px solid #55c8ff;
outline-offset: -3px;
border-radius: 12px;
}
/* ==========================================
9. REDUCED MOTION ACCESSIBILITY
========================================== */
@media (prefers-reduced-motion: reduce) {
.lumi-navcard,
.lumi-navcard-image img {
transition: none;
}
.lumi-navcard:hover {
transform: none;
}
.lumi-navcard:hover .lumi-navcard-image img {
transform: none;
filter: none;
}
}