MediaWiki:Common.css: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| (80 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* CSS placed here will be applied to all skins */ | /* CSS placed here will be applied to all skins */ | ||
html, | |||
body, | |||
#content, | |||
font- | .mw-page-container, | ||
.mw-body, | |||
.mw-body-content, | |||
.vector-body, | |||
.vector-toc, | |||
.vector-toc *, | |||
.infobox, | |||
.portable-infobox, | |||
.cdx-search-input, | |||
.cdx-text-input__input, | |||
.cdx-menu, | |||
.cdx-menu-item, | |||
.mw-heading, | |||
.mw-body :is(h2, h3, h4, h5, h6), | |||
.mw-body-content :is(h2, h3, h4, h5, h6), | |||
button, | |||
input, | |||
select, | |||
textarea { | |||
font-family: var(--fedo-font) !important; | |||
} | } | ||
/* Page title keeps the classic serif look */ | |||
font-family: ' | h1.firstHeading, | ||
.mw-first-heading { | |||
font-family: 'Times New Roman', Times, 'Liberation Serif', serif !important; | |||
} | } | ||
/* | /* ===================================================================== | ||
1. UI CLEANUP & READ-ONLY HIDING | |||
===================================================================== */ | |||
/* | /* Unify background & fix viewport height */ | ||
html, | html, | ||
body, | body, | ||
| Line 29: | Line 46: | ||
} | } | ||
html, | html, | ||
body { | body { | ||
| Line 42: | Line 58: | ||
} | } | ||
/* Footers: | /* Footers: privacy, disclaimers, powered by */ | ||
#footer-places, | #footer-places, | ||
#footer-icons, | #footer-icons, | ||
| Line 49: | Line 65: | ||
} | } | ||
/* Sidebar & | /* Sidebar & navigation controls */ | ||
#mw-sidebar-button, | #mw-sidebar-button, | ||
#vector-main-menu-dropdown { | #vector-main-menu-dropdown { | ||
| Line 55: | Line 71: | ||
} | } | ||
/* User account / | /* User account / log in links */ | ||
#p-personal, | #p-personal, | ||
#pt-login, | #pt-login, | ||
| Line 65: | Line 81: | ||
} | } | ||
/* Page tabs & toolbars ( | /* Page tabs & toolbars (namespaces, views, actions) */ | ||
.vector-page-toolbar, | .vector-page-toolbar, | ||
.mw-article-toolbar, | .mw-article-toolbar, | ||
| Line 81: | Line 97: | ||
} | } | ||
/* Watch page elements ( | /* Watch page elements (forms & VisualEditor) */ | ||
#wpWatchthis, | #wpWatchthis, | ||
.page-mw-watchthis, | .page-mw-watchthis, | ||
| Line 98: | Line 114: | ||
} | } | ||
/* -- | /* Category links */ | ||
#catlinks { | |||
display: none; | |||
} | |||
/* Hide the 'home' page from the search suggestions dropdown */ | |||
li.cdx-menu-item[title="home"] { | |||
display: none !important; | |||
} | |||
/* ===================================================================== | |||
2. HEADER ALIGNMENT & INSTANT SEARCH POSITIONING | |||
===================================================================== */ | |||
/* Remove gap between header items */ | /* Remove gap between header items */ | ||
| Line 105: | Line 133: | ||
} | } | ||
/* Eliminate search shift, margin delays | /* Eliminate search shift, margin delays and animation latency */ | ||
#p-search, | #p-search, | ||
.vector-search-box, | .vector-search-box, | ||
| Line 123: | Line 151: | ||
} | } | ||
/* | /* ===================================================================== | ||
3. TABLE OF CONTENTS | |||
===================================================================== */ | |||
#vector-toc, | #vector-toc, | ||
| Line 140: | Line 170: | ||
} | } | ||
/* | /* ===================================================================== | ||
4. BRANDING & MEDIA | |||
===================================================================== */ | |||
/* Neutralize any legacy container inversion */ | /* Neutralize any legacy container inversion */ | ||
| Line 147: | Line 179: | ||
} | } | ||
/* Wordmark typography & light mode | /* Wordmark typography & light mode colour */ | ||
.mw-logo-wordmark, | .mw-logo-wordmark, | ||
.mw-logo-wordmark * { | .mw-logo-wordmark * { | ||
| Line 163: | Line 195: | ||
} | } | ||
/* | /* ===================================================================== | ||
5. MATERIAL FLOATING SEARCH BAR | |||
===================================================================== */ | |||
/* Hide search buttons & dropdown filler */ | /* Hide search buttons & dropdown filler */ | ||
| Line 227: | Line 261: | ||
} | } | ||
/* | /* ===================================================================== | ||
6. MOBILE FIXES (LOGO, SEARCH & INFOBOX) | |||
===================================================================== */ | |||
/* Mobile search toggle button spacing */ | /* Mobile search toggle button spacing */ | ||
| Line 256: | Line 292: | ||
} | } | ||
} | } | ||
/* | |||
/* Centre the table-style infobox on phones */ | |||
@media screen and (max-width: 639px) { | |||
table.infobox { | |||
display: table; | |||
width: 100%; | |||
max-width: 22em; | |||
margin-left: auto; | |||
margin-right: auto; | |||
box-sizing: border-box; | |||
} | |||
} | |||
/* ===================================================================== | |||
7. MAIN PAGE / FEDOVERSE_WIKI PAGE | |||
===================================================================== */ | |||
/* Remove Vector default top padding on Main Page */ | |||
.page-Main_Page #content, | .page-Main_Page #content, | ||
.page-Main_Page .mw-body, | .page-Main_Page .mw-body, | ||
| Line 265: | Line 318: | ||
} | } | ||
/* | /* Hide Vector titlebar on Main Page */ | ||
.page-Main_Page .no-font-mode-scale.vector-page-titlebar.mw-body-header { | .page-Main_Page .no-font-mode-scale.vector-page-titlebar.mw-body-header { | ||
display: none !important; | display: none !important; | ||
} | } | ||
/* | /* Hide elements only on Fedoverse_Wiki */ | ||
body.page-Fedoverse_Wiki .vector-sitenotice-container, | |||
body.page-Fedoverse_Wiki .vector-column-start { | |||
display: none !important; | |||
} | |||
/* ===================================================================== | |||
8. BUTTONS | |||
===================================================================== */ | |||
/* Base button reset */ | |||
.fedo-btn { | .fedo-btn { | ||
display: inline-block; | display: inline-block; | ||
border-radius: 6px; | border-radius: 6px; | ||
font-family: | font-family: var(--fedo-font); | ||
text-decoration: none !important; | text-decoration: none !important; | ||
vertical-align: middle; | vertical-align: middle; | ||
| Line 292: | Line 355: | ||
backface-visibility: hidden; | backface-visibility: hidden; | ||
transform: translateZ(0) scale(1); | transform: translateZ(0) scale(1); | ||
/* | /* cushioned ease in both directions */ | ||
transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1) !important; | transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1) !important; | ||
} | } | ||
| Line 300: | Line 363: | ||
} | } | ||
/* Register the variable so CSS can smoothly interpolate colour values */ | |||
@property --btn-bg { | |||
syntax: '<color>'; | |||
inherits: false; | |||
initial-value: #000000; | |||
} | |||
/* | /* Black Discord button */ | ||
.your-button-class { | |||
border: 1.5px solid #000; | |||
background-color: #000; | |||
color: #fff !important; | |||
font-size: 1.2rem; | |||
font-weight: 500; | |||
padding: 7px 22px; | |||
display: inline-block; | |||
transform-style: preserve-3d; | |||
backface-visibility: hidden; | |||
will-change: transform; | |||
transform: perspective(400px) scale(1) rotateX(0deg) rotateY(0deg); | |||
transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1) !important; | |||
} | |||
/* Clean link styling */ | |||
.plainlinks .fedo-btn, | .plainlinks .fedo-btn, | ||
.plainlinks a.external .fedo-btn { | .plainlinks a.external .fedo-btn { | ||
| Line 307: | Line 392: | ||
text-decoration: none !important; | text-decoration: none !important; | ||
} | } | ||
.plainlinks a.external { | .plainlinks a.external { | ||
background: none !important; | background: none !important; | ||
| Line 313: | Line 399: | ||
} | } | ||
/* | /* ===================================================================== | ||
9. INFOBOX SHOWCASE & AUDIO PLAYER | |||
===================================================================== */ | |||
.infobox-showcase { | |||
text-align: center; | |||
padding: 0.1em 0.1em 0.1em; | |||
} | } | ||
.infobox-showcase pre { | |||
all: unset; | |||
display: | display: flex; | ||
flex-wrap: wrap; | |||
justify-content: center; | |||
align-items: center; | |||
gap: 0.1em; | |||
} | } | ||
.infobox-showcase img { | |||
margin: 0 1px; | |||
} | } | ||
.featured-song-label { | |||
font-weight: bold; | |||
font-size: 14px; | |||
line-height: 1.4em; | |||
margin-bottom: 4px; | |||
} | |||
.infobox-audio { | |||
padding-top: 0; | |||
margin: 0; | |||
} | |||
.infobox-audio-title { | |||
font-size: 14px; | |||
font-style: italic; | |||
line-height: 1.3em; | |||
margin: 0 0 6px 0; | |||
padding: 0; | |||
} | } | ||
. | .infobox-audio audio { | ||
width: 100%; | |||
display: block; | |||
border-radius: 8px; | |||
} | |||
border: | .custom-audio-player { | ||
display: flex; | |||
align-items: center; | |||
gap: 10px; | |||
width: 100%; | |||
height: 34px; | |||
box-sizing: border-box; | |||
padding: 0 12px; | |||
background: #F5F5F5; | |||
border-radius: 10px; | |||
color: white; | |||
} | |||
background | .custom-audio-player button { | ||
border: none; | |||
background: none; | |||
color: #1F1F1F; | |||
cursor: pointer; | |||
padding: 0; | |||
font-size: 16px; | |||
width: 28px; | |||
height: 28px; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
} | |||
.custom-audio-player button:hover { | |||
opacity: 0.75; | |||
} | |||
font-size: | .audio-play { | ||
font-size: 18px !important; | |||
} | |||
.audio-progress-container { | |||
flex: 1 1 auto; | |||
min-width: 48px; | |||
display: flex; | |||
align-items: center; | |||
} | |||
padding: | /* The input itself is just a transparent hit area; the visible bar is the track below */ | ||
.audio-progress { | |||
-webkit-appearance: none; | |||
appearance: none; | |||
width: 100%; | |||
height: 14px; | |||
margin: 0; | |||
padding: 0; | |||
background: transparent; | |||
cursor: pointer; | |||
} | |||
/* Track (separate rules: a browser drops the whole rule if it dislikes one selector) */ | |||
.audio-progress::-webkit-slider-runnable-track { | |||
height: 5px; | |||
border-radius: 5px; | |||
background: #4F4F4F; | |||
} | |||
.audio-progress::-moz-range-track { | |||
height: 5px; | |||
border-radius: 5px; | |||
background: #4F4F4F; | |||
} | |||
/* Thumb: same colour in both browsers */ | |||
.audio-progress::-webkit-slider-thumb { | |||
-webkit-appearance: none; | |||
appearance: none; | |||
width: 14px; | |||
height: 14px; | |||
margin-top: -4.5px; /* centres the 14px thumb on the 5px track in Chromium */ | |||
border: none; | |||
border-radius: 50%; | |||
background: #A89797; | |||
cursor: pointer; | |||
} | } | ||
.audio-progress::-moz-range-thumb { | |||
width: 14px; | |||
height: 14px; | |||
border: none; | |||
border-radius: 50%; | |||
background: #A89797; | |||
cursor: pointer; | |||
} | } | ||
.audio-time { | |||
font-size: 13px; | |||
white-space: nowrap; | |||
color: #4F4F4F; | |||
} | } | ||
.audio-volume { | |||
font-size: 16px !important; | |||
} | } | ||
. | /* Small screens: keep the progress bar, just tighten the spacing */ | ||
@media (max-width: 600px) { | |||
} | .custom-audio-player { | ||
gap: 8px; | |||
padding: 0 10px; | |||
} | |||
. | .audio-time { | ||
font-size: 12px; | |||
} | |||
} | } | ||
/* ===================================================================== | |||
10. MINECRAFT STATUS CARD | |||
===================================================================== */ | |||
.mc-status{--mc-pad:28px;--ink:#26231f;--muted:#6f6a62; | .mc-status{--mc-pad:28px;--ink:#26231f;--muted:#6f6a62; | ||
| Line 420: | Line 567: | ||
column-gap:var(--mc-pad);row-gap:12px;align-items:center;justify-items:center; | column-gap:var(--mc-pad);row-gap:12px;align-items:center;justify-items:center; | ||
width:100%;max-width:820px;box-sizing:border-box;margin:24px auto;padding:var(--mc-pad); | width:100%;max-width:820px;box-sizing:border-box;margin:24px auto;padding:var(--mc-pad); | ||
background:linear-gradient(160deg,# | background:linear-gradient(160deg,#e6f4ea,#bfe3cc);color:var(--ink); | ||
border:1px solid #d8d4cc;border-radius:24px; | border:1px solid #d8d4cc;border-radius:24px; | ||
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10); | box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10); | ||
font-family: | font-family:var(--fedo-font)} | ||
.mc-side{display:contents} | .mc-side{display:contents} | ||
| Line 438: | Line 585: | ||
.mc-status.is-online .mc-dot{background:#2fbf71;animation:mcpulse 2s infinite} | .mc-status.is-online .mc-dot{background:#2fbf71;animation:mcpulse 2s infinite} | ||
.mc-status.is-offline .mc-dot{background:#e5484d} | .mc-status.is-offline .mc-dot{background:#e5484d} | ||
.mc-status.is-offline .mc-head{background:# | .mc-status.is-online .mc-head{background:#d6f3e2;border-color:#a9dfc0} | ||
.mc-status.is-offline .mc-head{background:#f8d5d2;border-color:#ebb5b0} | |||
@keyframes mcpulse{0%{box-shadow:0 0 0 0 rgba(47,191,113,.55)}100%{box-shadow:0 0 0 9px rgba(47,191,113,0)}} | @keyframes mcpulse{0%{box-shadow:0 0 0 0 rgba(47,191,113,.55)}100%{box-shadow:0 0 0 9px rgba(47,191,113,0)}} | ||
.mc-players{font-weight:700} | .mc-players{font-weight:700} | ||
| Line 452: | Line 600: | ||
.mc-main{min-width:0;container-type:inline-size;cursor:pointer;user-select:none; | .mc-main{min-width:0;container-type:inline-size;cursor:pointer;user-select:none; | ||
-webkit-tap-highlight-color:transparent;border-radius:12px;outline-offset:6px} | -webkit-tap-highlight-color:transparent;border-radius:12px;outline-offset:6px} | ||
.mc-addr{font-family: | .mc-addr{font-family:var(--fedo-font);font-weight:800; | ||
text-transform:uppercase;letter-spacing:-.02em;line-height:1;white-space:nowrap; | text-transform:uppercase;letter-spacing:-.02em;line-height:1;white-space:nowrap; | ||
font-size:8.4cqw;color:var(--ink);transition:color .15s,transform .15s} | font-size:8.4cqw;color:var(--ink);transition:color .15s,transform .15s} | ||
| Line 460: | Line 608: | ||
.mc-motd{margin-top:14px;font-size:.95rem;line-height:1.35;color:var(--muted);white-space:pre-line} | .mc-motd{margin-top:14px;font-size:.95rem;line-height:1.35;color:var(--muted);white-space:pre-line} | ||
.mc-motd:empty{display:none} | .mc-motd:empty{display:none} | ||
/* open-page icon, top right */ | |||
.mc-status{position:relative} | |||
.mc-open{position:absolute;top:16px;right:16px;z-index:2} | |||
.mc-open a{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%; | |||
background:rgba(255,255,255,.6);border:1px solid #dad6ce;color:var(--muted);text-decoration:none!important; | |||
transition:background .15s,color .15s,transform .15s;-webkit-tap-highlight-color:transparent} | |||
.mc-open a:hover,.mc-open a:focus-visible{background:#fff;color:#3f7a35;transform:translateY(-1px)} | |||
.mc-open-icon{display:block;width:18px;height:18px;background-color:currentColor; | |||
-webkit-mask:var(--mc-ext) center/contain no-repeat;mask:var(--mc-ext) center/contain no-repeat; | |||
--mc-ext:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E")} | |||
/* phones: icon + pills on top, address full width below */ | /* phones: icon + pills on top, address full width below */ | ||
| Line 468: | Line 627: | ||
.mc-main{margin-top:8px} | .mc-main{margin-top:8px} | ||
.mc-motd{margin-top:10px;font-size:.9rem} | .mc-motd{margin-top:10px;font-size:.9rem} | ||
.mc-open{top:12px;right:12px} | |||
/* hide the card on phones unless the server is offline */ | |||
.mc-status:not(.is-offline){display:none} | |||
} | } | ||
@media(prefers-reduced-motion:reduce){.mc-dot{animation:none!important}} | @media(prefers-reduced-motion:reduce){.mc-dot{animation:none!important}} | ||
/* | /* ===================================================================== | ||
11. PODCAST CAROUSEL | |||
. | ===================================================================== */ | ||
.pc-podcast{ | |||
--ink:#26231f; | |||
--muted:#6f6a62; | |||
width:calc(100% - 24px); | |||
max-width:740px; | |||
- | box-sizing:border-box; | ||
margin:24px auto; | |||
color:var(--ink); | |||
font-family:var(--fedo-font); | |||
} | |||
.pc-deck{ | |||
.pc- | display:grid; | ||
padding-bottom:30px; | |||
touch-action:pan-y; | |||
} | |||
.pc-deck:empty{ | |||
.pc-deck:empty{min-height: | min-height:180px; | ||
border:1px solid #d8d4cc;border-radius:24px;box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10)} | background:linear-gradient(160deg,#f1efea,#e6e3dd); | ||
border:1px solid #d8d4cc; | |||
border-radius:24px; | |||
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10); | |||
} | |||
.pc-card{grid-area:1/1;position:relative;box-sizing:border-box;min-width:0;display:grid; | .pc-card{ | ||
grid-template-columns:auto minmax(0,1fr);align-items:center;gap:24px;padding:28px; | grid-area:1/1; | ||
background:linear-gradient(160deg,#f1efea,#e6e3dd);border:1px solid #d8d4cc;border-radius:24px; | position:relative; | ||
box-sizing:border-box; | |||
min-width:0; | |||
display:grid; | |||
grid-template-columns:auto minmax(0,1fr); | |||
align-items:center; | |||
gap:24px; | |||
padding:28px; | |||
background:linear-gradient(160deg,#f1efea,#e6e3dd); | |||
border:1px solid #d8d4cc; | |||
border-radius:24px; | |||
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10); | box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10); | ||
transform-origin:50% 100%;will-change:transform; | transform-origin:50% 100%; | ||
transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s} | will-change:transform; | ||
.pc-ghost{pointer-events:none} | transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s; | ||
} | |||
.pc-ghost{ | |||
pointer-events:none; | |||
} | |||
.pc-card[data-pos="0"]{z-index:3} | .pc-card[data-pos="0"]{z-index:3} | ||
.pc-card[data-pos="1"]{z-index:2;transform:translateY(14px) scale(.95);filter:brightness(.975)} | .pc-card[data-pos="1"]{z-index:2;transform:translateY(14px) scale(.95);filter:brightness(.975)} | ||
.pc-card[data-pos="2"]{z-index:1;transform:translateY(28px) scale(.9);filter:brightness(.95)} | .pc-card[data-pos="2"]{z-index:1;transform:translateY(28px) scale(.9);filter:brightness(.95)} | ||
.pc-cover{width:120px;height:120px;border-radius:22px;overflow:hidden;background:#ddd9d2;border:1px solid #cfcac2; | .pc-cover{ | ||
box-shadow:0 4px 12px rgba(40,30,20,.12);display:flex;align-items:center;justify-content:center;font-size:2.2rem} | width:120px; | ||
.pc-cover img{width:100%;height:100%;object-fit:cover;display:block} | height:120px; | ||
border-radius:22px; | |||
overflow:hidden; | |||
background:#ddd9d2; | |||
border:1px solid #cfcac2; | |||
box-shadow:0 4px 12px rgba(40,30,20,.12); | |||
display:flex; | |||
align-items:center; | |||
justify-content:center; | |||
font-size:2.2rem; | |||
} | |||
.pc-cover img{ | |||
width:100%; | |||
height:100%; | |||
object-fit:cover; | |||
display:block; | |||
} | |||
.pc-body{ | |||
min-width:0; | |||
padding-right:32px; | |||
display:flex; | |||
flex-direction:column; | |||
align-items:flex-start; | |||
gap:10px; | |||
} | |||
.pc-meta{ | |||
display:flex; | |||
flex-wrap:wrap; | |||
gap:8px; | |||
} | |||
.pc-pill{ | |||
display:inline-flex; | |||
align-items:center; | |||
padding:6px 12px; | |||
border-radius:999px; | |||
background:rgba(255,255,255,.6); | |||
border:1px solid #dad6ce; | |||
font-size:.8rem; | |||
font-weight:600; | |||
line-height:1; | |||
color:var(--muted); | |||
white-space:nowrap; | |||
} | |||
.pc-pill-strong{ | |||
color:var(--ink); | |||
font-weight:700; | |||
} | |||
.pc-title{ | |||
font-weight:800; | |||
font-size:clamp(1.15rem,3.4vw,1.6rem); | |||
line-height:1.15; | |||
letter-spacing:-.01em; | |||
overflow-wrap:anywhere; | |||
display:-webkit-box; | |||
-webkit-line-clamp:2; | |||
-webkit-box-orient:vertical; | |||
overflow:hidden; | |||
} | |||
.pc-title a{ | |||
color:inherit!important; | |||
text-decoration:none!important; | |||
transition:color .15s; | |||
} | |||
.pc-title a:hover{ | |||
color:#3f7a35!important; | |||
} | |||
.pc-desc{ | |||
margin:0; | |||
font-size:.92rem; | |||
line-height:1.4; | |||
color:var(--muted); | |||
display:-webkit-box; | |||
-webkit-line-clamp:2; | |||
-webkit-box-orient:vertical; | |||
overflow:hidden; | |||
} | |||
.pc- | .pc-desc:empty{ | ||
display:none; | |||
} | |||
/* arrows + dots */ | /* arrows + dots */ | ||
.pc-nav{display:flex;justify-content:center;align-items:center;gap:14px} | .pc-nav{ | ||
.pc-nav:empty{display:none} | display:flex; | ||
.pc-btn{width:36px;height:36px;padding:0;border-radius:50%;border:1px solid #dad6ce;background:rgba(255,255,255,.6); | justify-content:center; | ||
color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center; | align-items:center; | ||
transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent} | gap:14px; | ||
.pc-btn:hover,.pc-btn:focus-visible{background:#fff;color:#3f7a35} | } | ||
.pc-btn svg{width:18px;height:18px} | |||
.pc-dots{display:flex;align-items:center;gap:7px} | .pc-nav:empty{ | ||
.pc-dot{width:8px;height:8px;padding:0;border:0;border-radius:99px;background:#cbc6bd;cursor:pointer; | display:none; | ||
transition:width .25s,background .25s} | } | ||
.pc-dot[aria-current="true"]{width:22px;background:var(--ink)} | |||
.pc-btn{ | |||
width:36px; | |||
height:36px; | |||
padding:0; | |||
border-radius:50%; | |||
border:1px solid #dad6ce; | |||
background:rgba(255,255,255,.6); | |||
color:var(--muted); | |||
cursor:pointer; | |||
display:flex; | |||
align-items:center; | |||
justify-content:center; | |||
transition:background .15s,color .15s; | |||
-webkit-tap-highlight-color:transparent; | |||
} | |||
.pc-btn:hover, | |||
.pc-btn:focus-visible{ | |||
background:#fff; | |||
color:#3f7a35; | |||
} | |||
.pc-btn svg{ | |||
width:18px; | |||
height:18px; | |||
} | |||
.pc-dots{ | |||
display:flex; | |||
align-items:center; | |||
gap:7px; | |||
} | |||
.pc-dot{ | |||
width:8px; | |||
height:8px; | |||
padding:0; | |||
border:0; | |||
border-radius:99px; | |||
background:#cbc6bd; | |||
cursor:pointer; | |||
transition:width .25s,background .25s; | |||
} | |||
.pc-dot[aria-current="true"]{ | |||
width:22px; | |||
background:var(--ink); | |||
} | |||
@media(max-width:640px){ | @media(max-width:640px){ | ||
| Line 542: | Line 850: | ||
.pc-title{font-size:1.05rem} | .pc-title{font-size:1.05rem} | ||
.pc-desc{font-size:.85rem} | .pc-desc{font-size:.85rem} | ||
.pc-meta { | .pc-meta{display:none} | ||
} | |||
Latest revision as of 22:32, 4 October 2026
/* CSS placed here will be applied to all skins */
html,
body,
#content,
.mw-page-container,
.mw-body,
.mw-body-content,
.vector-body,
.vector-toc,
.vector-toc *,
.infobox,
.portable-infobox,
.cdx-search-input,
.cdx-text-input__input,
.cdx-menu,
.cdx-menu-item,
.mw-heading,
.mw-body :is(h2, h3, h4, h5, h6),
.mw-body-content :is(h2, h3, h4, h5, h6),
button,
input,
select,
textarea {
font-family: var(--fedo-font) !important;
}
/* Page title keeps the classic serif look */
h1.firstHeading,
.mw-first-heading {
font-family: 'Times New Roman', Times, 'Liberation Serif', serif !important;
}
/* =====================================================================
1. UI CLEANUP & READ-ONLY HIDING
===================================================================== */
/* Unify background & fix viewport height */
html,
body,
.mw-page-container,
.mw-header,
.mw-content-container {
background-color: #ffffff !important;
}
html,
body {
min-height: 100% !important;
}
.mw-page-container {
min-height: 100vh !important;
box-sizing: border-box !important;
border: none !important;
box-shadow: none !important;
}
/* Footers: privacy, disclaimers, powered by */
#footer-places,
#footer-icons,
.mw-footer-container {
display: none !important;
}
/* Sidebar & navigation controls */
#mw-sidebar-button,
#vector-main-menu-dropdown {
display: none !important;
}
/* User account / log in links */
#p-personal,
#pt-login,
#pt-login-2,
#p-vector-user-menu-overflow,
.vector-user-links,
.user-links-collapsible-item {
display: none !important;
}
/* Page tabs & toolbars (namespaces, views, actions) */
.vector-page-toolbar,
.mw-article-toolbar,
#p-namespaces,
#p-views,
#p-cactions,
#vector-page-tools-dropdown {
display: none !important;
}
/* Spacing left behind by removed tabs */
.mw-body-header {
border-bottom: none !important;
margin-bottom: 0 !important;
}
/* Watch page elements (forms & VisualEditor) */
#wpWatchthis,
.page-mw-watchthis,
.mw-editWatchlist,
.mw-widget-checkDef-watchthis,
label[for="wpWatchthis"],
.oo-ui-fieldLayout:has(#wpWatchthis),
.oo-ui-fieldLayout:has([name="wpWatchthis"]) {
display: none !important;
}
/* Right sidebar / column tools / appearance column */
.vector-column-end,
.no-font-mode-scale.vector-column-end {
display: none !important;
}
/* Category links */
#catlinks {
display: none;
}
/* Hide the 'home' page from the search suggestions dropdown */
li.cdx-menu-item[title="home"] {
display: none !important;
}
/* =====================================================================
2. HEADER ALIGNMENT & INSTANT SEARCH POSITIONING
===================================================================== */
/* Remove gap between header items */
.mw-header .vector-header-start {
gap: 0 !important;
}
/* Eliminate search shift, margin delays and animation latency */
#p-search,
.vector-search-box,
.vector-typeahead-search-container,
.cdx-typeahead-search,
.vector-typeahead-search {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important;
transition: none !important;
}
.cdx-typeahead-search__input-wrapper,
.cdx-search-input {
margin-left: 0 !important;
transition: none !important;
}
/* =====================================================================
3. TABLE OF CONTENTS
===================================================================== */
#vector-toc,
.vector-toc {
margin-top: 0 !important;
}
ul#mw-panel-toc-list.vector-toc-contents {
margin-left: 6px !important;
}
/* Hide TOC header & unpin button */
.vector-pinnable-header-pinned.vector-toc-pinnable-header.vector-pinnable-header,
.vector-pinnable-header-toggle-button.vector-pinnable-header-unpin-button {
display: none !important;
}
/* =====================================================================
4. BRANDING & MEDIA
===================================================================== */
/* Neutralize any legacy container inversion */
.mw-logo-container.skin-invert {
filter: none !important;
}
/* Wordmark typography & light mode colour */
.mw-logo-wordmark,
.mw-logo-wordmark * {
color: #202122 !important;
font-family: "Mountains of Christmas", cursive, serif !important;
font-weight: 700 !important;
}
/* Modern infobox images */
.portable-infobox .pi-image img,
.infobox img {
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
/* =====================================================================
5. MATERIAL FLOATING SEARCH BAR
===================================================================== */
/* Hide search buttons & dropdown filler */
#searchButton,
.cdx-search-input__end-button,
.cdx-menu-item--search-for {
display: none !important;
}
/* Search container & layout stability */
.vector-typeahead-search-container {
max-width: none !important;
margin: 0 !important;
transform: none !important;
}
.cdx-search-input {
border-radius: 8px !important;
border: 1px solid transparent !important;
background-color: #f1f3f4 !important;
transition: background-color 0.2s, box-shadow 0.2s, border 0.2s;
}
.cdx-search-input:focus-within {
background-color: #ffffff !important;
box-shadow: 0 4px 6px rgba(32, 33, 36, 0.2) !important;
border: 1px solid #dfe1e5 !important;
border-radius: 8px !important;
}
/* Search inputs */
.cdx-text-input,
.cdx-text-input:focus-within,
.cdx-text-input.cdx-text-input--status-default {
border: none !important;
box-shadow: none !important;
outline: none !important;
background: transparent !important;
}
.cdx-text-input__input {
background: transparent !important;
border: none !important;
box-shadow: none !important;
padding-right: 32px !important;
transition: none !important;
}
/* Search dropdown results */
.cdx-menu {
border-radius: 8px !important;
box-shadow: 0 6px 12px rgba(32, 33, 36, 0.15) !important;
border: 1px solid #dfe1e5 !important;
margin-top: 8px !important;
background-color: #ffffff !important;
overflow: hidden !important;
padding: 0 !important;
}
.cdx-menu-item:hover,
.cdx-menu-item[aria-selected="true"] {
background-color: #eeeeee !important;
}
/* =====================================================================
6. MOBILE FIXES (LOGO, SEARCH & INFOBOX)
===================================================================== */
/* Mobile search toggle button spacing */
.search-toggle {
margin-right: 8px !important;
}
/* Restore the logo icon on mobile using inline alignment */
.mw-logo-icon {
display: inline-block !important;
vertical-align: middle !important;
margin-right: 6px !important;
}
.mw-logo-container {
display: inline-block !important;
vertical-align: middle !important;
}
/* Unfloat infobox only on narrow viewports (<= 500px) */
@media (max-width: 500px) {
.portable-infobox,
.infobox {
float: none !important;
clear: both !important;
margin: 1em auto !important;
max-width: 100% !important;
}
}
/* Centre the table-style infobox on phones */
@media screen and (max-width: 639px) {
table.infobox {
display: table;
width: 100%;
max-width: 22em;
margin-left: auto;
margin-right: auto;
box-sizing: border-box;
}
}
/* =====================================================================
7. MAIN PAGE / FEDOVERSE_WIKI PAGE
===================================================================== */
/* Remove Vector default top padding on Main Page */
.page-Main_Page #content,
.page-Main_Page .mw-body,
.page-Main_Page .vector-body,
.page-Main_Page #bodyContent {
padding-top: 0 !important;
margin-top: 0 !important;
}
/* Hide Vector titlebar on Main Page */
.page-Main_Page .no-font-mode-scale.vector-page-titlebar.mw-body-header {
display: none !important;
}
/* Hide elements only on Fedoverse_Wiki */
body.page-Fedoverse_Wiki .vector-sitenotice-container,
body.page-Fedoverse_Wiki .vector-column-start {
display: none !important;
}
/* =====================================================================
8. BUTTONS
===================================================================== */
/* Base button reset */
.fedo-btn {
display: inline-block;
border-radius: 6px;
font-family: var(--fedo-font);
text-decoration: none !important;
vertical-align: middle;
cursor: pointer;
white-space: nowrap;
transform-origin: center center;
}
/* White buttons: smooth organic zoom in & out */
.fedo-btn-outline {
border: 1.5px solid #000;
color: #000 !important;
background-color: #fff;
font-size: 0.9rem;
padding: 7px 18px;
display: inline-block;
backface-visibility: hidden;
transform: translateZ(0) scale(1);
/* cushioned ease in both directions */
transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
.fedo-btn-outline:hover {
transform: translateZ(0) scale(1.08) !important;
}
/* Register the variable so CSS can smoothly interpolate colour values */
@property --btn-bg {
syntax: '<color>';
inherits: false;
initial-value: #000000;
}
/* Black Discord button */
.your-button-class {
border: 1.5px solid #000;
background-color: #000;
color: #fff !important;
font-size: 1.2rem;
font-weight: 500;
padding: 7px 22px;
display: inline-block;
transform-style: preserve-3d;
backface-visibility: hidden;
will-change: transform;
transform: perspective(400px) scale(1) rotateX(0deg) rotateY(0deg);
transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
/* Clean link styling */
.plainlinks .fedo-btn,
.plainlinks a.external .fedo-btn {
color: inherit;
text-decoration: none !important;
}
.plainlinks a.external {
background: none !important;
padding: 0 !important;
text-decoration: none !important;
}
/* =====================================================================
9. INFOBOX SHOWCASE & AUDIO PLAYER
===================================================================== */
.infobox-showcase {
text-align: center;
padding: 0.1em 0.1em 0.1em;
}
.infobox-showcase pre {
all: unset;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 0.1em;
}
.infobox-showcase img {
margin: 0 1px;
}
.featured-song-label {
font-weight: bold;
font-size: 14px;
line-height: 1.4em;
margin-bottom: 4px;
}
.infobox-audio {
padding-top: 0;
margin: 0;
}
.infobox-audio-title {
font-size: 14px;
font-style: italic;
line-height: 1.3em;
margin: 0 0 6px 0;
padding: 0;
}
.infobox-audio audio {
width: 100%;
display: block;
border-radius: 8px;
}
.custom-audio-player {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
height: 34px;
box-sizing: border-box;
padding: 0 12px;
background: #F5F5F5;
border-radius: 10px;
color: white;
}
.custom-audio-player button {
border: none;
background: none;
color: #1F1F1F;
cursor: pointer;
padding: 0;
font-size: 16px;
width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
}
.custom-audio-player button:hover {
opacity: 0.75;
}
.audio-play {
font-size: 18px !important;
}
.audio-progress-container {
flex: 1 1 auto;
min-width: 48px;
display: flex;
align-items: center;
}
/* The input itself is just a transparent hit area; the visible bar is the track below */
.audio-progress {
-webkit-appearance: none;
appearance: none;
width: 100%;
height: 14px;
margin: 0;
padding: 0;
background: transparent;
cursor: pointer;
}
/* Track (separate rules: a browser drops the whole rule if it dislikes one selector) */
.audio-progress::-webkit-slider-runnable-track {
height: 5px;
border-radius: 5px;
background: #4F4F4F;
}
.audio-progress::-moz-range-track {
height: 5px;
border-radius: 5px;
background: #4F4F4F;
}
/* Thumb: same colour in both browsers */
.audio-progress::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 14px;
height: 14px;
margin-top: -4.5px; /* centres the 14px thumb on the 5px track in Chromium */
border: none;
border-radius: 50%;
background: #A89797;
cursor: pointer;
}
.audio-progress::-moz-range-thumb {
width: 14px;
height: 14px;
border: none;
border-radius: 50%;
background: #A89797;
cursor: pointer;
}
.audio-time {
font-size: 13px;
white-space: nowrap;
color: #4F4F4F;
}
.audio-volume {
font-size: 16px !important;
}
/* Small screens: keep the progress bar, just tighten the spacing */
@media (max-width: 600px) {
.custom-audio-player {
gap: 8px;
padding: 0 10px;
}
.audio-time {
font-size: 12px;
}
}
/* =====================================================================
10. MINECRAFT STATUS CARD
===================================================================== */
.mc-status{--mc-pad:28px;--ink:#26231f;--muted:#6f6a62;
display:grid;grid-template-columns:auto minmax(0,1fr);
grid-template-areas:"head main" "icon main" "players main";
column-gap:var(--mc-pad);row-gap:12px;align-items:center;justify-items:center;
width:100%;max-width:820px;box-sizing:border-box;margin:24px auto;padding:var(--mc-pad);
background:linear-gradient(160deg,#e6f4ea,#bfe3cc);color:var(--ink);
border:1px solid #d8d4cc;border-radius:24px;
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10);
font-family:var(--fedo-font)}
.mc-side{display:contents}
.mc-head{grid-area:head}
.mc-icon{grid-area:icon}
.mc-players{grid-area:players}
.mc-main{grid-area:main;justify-self:stretch;align-self:center}
/* pills */
.mc-head,.mc-players{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;
background:rgba(255,255,255,.6);border:1px solid #dad6ce;font-size:.85rem;font-weight:600;line-height:1;
white-space:nowrap;cursor:default}
.mc-dot{width:9px;height:9px;border-radius:50%;background:#a09b94}
.mc-status.is-online .mc-dot{background:#2fbf71;animation:mcpulse 2s infinite}
.mc-status.is-offline .mc-dot{background:#e5484d}
.mc-status.is-online .mc-head{background:#d6f3e2;border-color:#a9dfc0}
.mc-status.is-offline .mc-head{background:#f8d5d2;border-color:#ebb5b0}
@keyframes mcpulse{0%{box-shadow:0 0 0 0 rgba(47,191,113,.55)}100%{box-shadow:0 0 0 9px rgba(47,191,113,0)}}
.mc-players{font-weight:700}
.mc-players::after{content:" players";font-weight:500;color:var(--muted)}
/* logo */
.mc-icon{width:112px;height:112px;border-radius:24px;overflow:hidden;background:#ddd9d2;
border:1px solid #cfcac2;box-shadow:0 4px 12px rgba(40,30,20,.12);
display:flex;align-items:center;justify-content:center;font-size:2.4rem}
.mc-icon img{width:100%;height:100%;display:block;object-fit:cover;image-rendering:pixelated}
/* address */
.mc-main{min-width:0;container-type:inline-size;cursor:pointer;user-select:none;
-webkit-tap-highlight-color:transparent;border-radius:12px;outline-offset:6px}
.mc-addr{font-family:var(--fedo-font);font-weight:800;
text-transform:uppercase;letter-spacing:-.02em;line-height:1;white-space:nowrap;
font-size:8.4cqw;color:var(--ink);transition:color .15s,transform .15s}
.mc-main:hover .mc-addr{color:#3f7a35}
.mc-main:active .mc-addr{transform:scale(.985)}
.mc-main:focus-visible{outline:2px solid #3f7a35}
.mc-motd{margin-top:14px;font-size:.95rem;line-height:1.35;color:var(--muted);white-space:pre-line}
.mc-motd:empty{display:none}
/* open-page icon, top right */
.mc-status{position:relative}
.mc-open{position:absolute;top:16px;right:16px;z-index:2}
.mc-open a{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;
background:rgba(255,255,255,.6);border:1px solid #dad6ce;color:var(--muted);text-decoration:none!important;
transition:background .15s,color .15s,transform .15s;-webkit-tap-highlight-color:transparent}
.mc-open a:hover,.mc-open a:focus-visible{background:#fff;color:#3f7a35;transform:translateY(-1px)}
.mc-open-icon{display:block;width:18px;height:18px;background-color:currentColor;
-webkit-mask:var(--mc-ext) center/contain no-repeat;mask:var(--mc-ext) center/contain no-repeat;
--mc-ext:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E")}
/* phones: icon + pills on top, address full width below */
@media(max-width:640px){
.mc-status{--mc-pad:18px;grid-template-areas:"icon head" "icon players" "main main";
row-gap:10px;column-gap:16px;justify-items:start;margin:16px auto;border-radius:20px}
.mc-icon{width:88px;height:88px;border-radius:20px;grid-row:1 / span 2}
.mc-main{margin-top:8px}
.mc-motd{margin-top:10px;font-size:.9rem}
.mc-open{top:12px;right:12px}
/* hide the card on phones unless the server is offline */
.mc-status:not(.is-offline){display:none}
}
@media(prefers-reduced-motion:reduce){.mc-dot{animation:none!important}}
/* =====================================================================
11. PODCAST CAROUSEL
===================================================================== */
.pc-podcast{
--ink:#26231f;
--muted:#6f6a62;
width:calc(100% - 24px);
max-width:740px;
box-sizing:border-box;
margin:24px auto;
color:var(--ink);
font-family:var(--fedo-font);
}
.pc-deck{
display:grid;
padding-bottom:30px;
touch-action:pan-y;
}
.pc-deck:empty{
min-height:180px;
background:linear-gradient(160deg,#f1efea,#e6e3dd);
border:1px solid #d8d4cc;
border-radius:24px;
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10);
}
.pc-card{
grid-area:1/1;
position:relative;
box-sizing:border-box;
min-width:0;
display:grid;
grid-template-columns:auto minmax(0,1fr);
align-items:center;
gap:24px;
padding:28px;
background:linear-gradient(160deg,#f1efea,#e6e3dd);
border:1px solid #d8d4cc;
border-radius:24px;
box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 28px rgba(40,30,20,.10);
transform-origin:50% 100%;
will-change:transform;
transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s;
}
.pc-ghost{
pointer-events:none;
}
.pc-card[data-pos="0"]{z-index:3}
.pc-card[data-pos="1"]{z-index:2;transform:translateY(14px) scale(.95);filter:brightness(.975)}
.pc-card[data-pos="2"]{z-index:1;transform:translateY(28px) scale(.9);filter:brightness(.95)}
.pc-cover{
width:120px;
height:120px;
border-radius:22px;
overflow:hidden;
background:#ddd9d2;
border:1px solid #cfcac2;
box-shadow:0 4px 12px rgba(40,30,20,.12);
display:flex;
align-items:center;
justify-content:center;
font-size:2.2rem;
}
.pc-cover img{
width:100%;
height:100%;
object-fit:cover;
display:block;
}
.pc-body{
min-width:0;
padding-right:32px;
display:flex;
flex-direction:column;
align-items:flex-start;
gap:10px;
}
.pc-meta{
display:flex;
flex-wrap:wrap;
gap:8px;
}
.pc-pill{
display:inline-flex;
align-items:center;
padding:6px 12px;
border-radius:999px;
background:rgba(255,255,255,.6);
border:1px solid #dad6ce;
font-size:.8rem;
font-weight:600;
line-height:1;
color:var(--muted);
white-space:nowrap;
}
.pc-pill-strong{
color:var(--ink);
font-weight:700;
}
.pc-title{
font-weight:800;
font-size:clamp(1.15rem,3.4vw,1.6rem);
line-height:1.15;
letter-spacing:-.01em;
overflow-wrap:anywhere;
display:-webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient:vertical;
overflow:hidden;
}
.pc-title a{
color:inherit!important;
text-decoration:none!important;
transition:color .15s;
}
.pc-title a:hover{
color:#3f7a35!important;
}
.pc-desc{
margin:0;
font-size:.92rem;
line-height:1.4;
color:var(--muted);
display:-webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient:vertical;
overflow:hidden;
}
.pc-desc:empty{
display:none;
}
/* arrows + dots */
.pc-nav{
display:flex;
justify-content:center;
align-items:center;
gap:14px;
}
.pc-nav:empty{
display:none;
}
.pc-btn{
width:36px;
height:36px;
padding:0;
border-radius:50%;
border:1px solid #dad6ce;
background:rgba(255,255,255,.6);
color:var(--muted);
cursor:pointer;
display:flex;
align-items:center;
justify-content:center;
transition:background .15s,color .15s;
-webkit-tap-highlight-color:transparent;
}
.pc-btn:hover,
.pc-btn:focus-visible{
background:#fff;
color:#3f7a35;
}
.pc-btn svg{
width:18px;
height:18px;
}
.pc-dots{
display:flex;
align-items:center;
gap:7px;
}
.pc-dot{
width:8px;
height:8px;
padding:0;
border:0;
border-radius:99px;
background:#cbc6bd;
cursor:pointer;
transition:width .25s,background .25s;
}
.pc-dot[aria-current="true"]{
width:22px;
background:var(--ink);
}
@media(max-width:640px){
.pc-podcast{margin:16px auto}
.pc-card{gap:14px;padding:18px;border-radius:20px}
.pc-cover{width:84px;height:84px;border-radius:18px;font-size:1.8rem}
.pc-body{padding-right:34px;gap:8px}
.pc-title{font-size:1.05rem}
.pc-desc{font-size:.85rem}
.pc-meta{display:none}
}