MediaWiki:Timeless.css:修订间差异
来自Mindustry中文wiki
无编辑摘要 |
无编辑摘要 标签:已被回退 |
||
| 第21行: | 第21行: | ||
box-shadow: var(--mdtShadow); | box-shadow: var(--mdtShadow); | ||
border-bottom: 1px solid rgba(0, 0, 0, 0.12); | border-bottom: 1px solid rgba(0, 0, 0, 0.12); | ||
} | |||
body.skin-timeless #mw-header-container img { | |||
max-height: 2.2rem; | |||
width: auto; | |||
} | } | ||
| 第28行: | 第34行: | ||
gap: 0.75rem; | gap: 0.75rem; | ||
flex-wrap: nowrap; | flex-wrap: nowrap; | ||
min-height: 3.25rem; | |||
} | |||
/* Keep search + user tools vertically centered */ | |||
body.skin-timeless #p-search, | |||
body.skin-timeless #user-tools { | |||
align-self: center; | |||
margin-top: 0 !important; | |||
} | } | ||
| 第62行: | 第76行: | ||
body.skin-timeless #p-logo-text #p-banner::before { | body.skin-timeless #p-logo-text #p-banner::before { | ||
content: ''; | content: ''; | ||
width: | width: 30px; | ||
height: | height: 27px; | ||
background: url(/resources/assets/ | flex: 0 0 auto; | ||
border-radius: | background: url(/resources/assets/ui/alphaaaa.png) center / contain no-repeat; | ||
image-rendering: pixelated; | |||
border-radius: 6px; | |||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.22); | box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.22); | ||
} | } | ||
| 第73行: | 第89行: | ||
order: 2; | order: 2; | ||
margin-left: auto; | margin-left: auto; | ||
flex: 0 1 | flex: 0 1 11.5rem; | ||
min-width: | min-width: 9.5rem; | ||
max-width: | max-width: 18vw; | ||
} | } | ||
| 第146行: | 第162行: | ||
body.skin-timeless #mw-header .dropdown a:visited { | body.skin-timeless #mw-header .dropdown a:visited { | ||
color: #0645ad; | color: #0645ad; | ||
} | |||
/* Fix: dropdown menu clipped/mispositioned after header flex tweaks */ | |||
body.skin-timeless #mw-header-container, | |||
body.skin-timeless #mw-header, | |||
body.skin-timeless #mw-header #user-tools { | |||
overflow: visible !important; | |||
} | |||
body.skin-timeless #mw-header .dropdown { | |||
position: relative; | |||
overflow: visible !important; | |||
} | |||
body.skin-timeless #mw-header .dropdown .mw-portlet-body, | |||
body.skin-timeless #mw-header .dropdown .dropdown-content, | |||
body.skin-timeless #mw-header .dropdown .dropdown-menu { | |||
z-index: 10000; | |||
} | |||
/* Personal tools menu: align to the right edge */ | |||
body.skin-timeless #mw-header #user-tools .dropdown .mw-portlet-body, | |||
body.skin-timeless #mw-header #user-tools .dropdown .dropdown-content, | |||
body.skin-timeless #mw-header #user-tools .dropdown .dropdown-menu { | |||
left: auto; | |||
right: 0; | |||
} | } | ||
| 第215行: | 第257行: | ||
max-height: calc(100vh - 4rem); | max-height: calc(100vh - 4rem); | ||
overflow-y: auto; | overflow-y: auto; | ||
} | |||
} | |||
/* Small screens: allow sidebar wheel/touch scrolling when shown */ | |||
@media (max-width: 999px) { | |||
body.skin-timeless #mw-site-navigation, | |||
body.skin-timeless #mw-related-navigation { | |||
max-height: 100vh; | |||
overflow-y: auto; | |||
-webkit-overflow-scrolling: touch; | |||
} | } | ||
} | } | ||
| 第308行: | 第360行: | ||
} | } | ||
/* | /* ===== Foldable headings (mdtFold) ===== */ | ||
@media (max-width: | body.skin-timeless #mw-content-text .mdtFoldHeadline { | ||
body.skin-timeless #mw- | display: inline-flex; | ||
align-items: center; | |||
gap: 0.35rem; | |||
} | |||
body.skin-timeless #mw-content-text .mdtFoldToggle, | |||
body.skin-timeless .mw-parser-output .mdtFoldToggle { | |||
width: 1.6rem; | |||
height: 1.6rem; | |||
margin-left: 0.25rem; | |||
border: 0 !important; | |||
border-radius: 10px; | |||
display: inline-flex; | |||
align-items: center; | |||
justify-content: center; | |||
background: rgba(0, 175, 137, 0.10) !important; | |||
color: var(--mdtBrand); | |||
cursor: pointer; | |||
padding: 0; | |||
appearance: none; | |||
-webkit-appearance: none; | |||
box-shadow: none !important; | |||
outline: none; | |||
font-family: inherit; | |||
font-size: 16px; | |||
font-weight: 700; | |||
line-height: 1; | |||
} | |||
body.skin-timeless #mw-content-text .mdtFoldToggle:hover, | |||
body.skin-timeless .mw-parser-output .mdtFoldToggle:hover { | |||
background: rgba(0, 175, 137, 0.18) !important; | |||
} | |||
/* Arrow is rendered by JS via button textContent */ | |||
body.skin-timeless #mw-content-text .mdtFoldCollapsed + .mdtFoldBody, | |||
body.skin-timeless .mw-parser-output .mdtFoldCollapsed + .mdtFoldBody { | |||
display: none; | |||
} | |||
/* Some gadgets/skins force <div hidden> via user agent styles; use class instead */ | |||
body.skin-timeless #mw-content-text .mdtFoldBody.mdtFoldHidden, | |||
body.skin-timeless .mw-parser-output .mdtFoldBody.mdtFoldHidden { | |||
display: none !important; | |||
} | |||
/* ===== In-article two-column layout (mdtLayout) ===== */ | |||
body.skin-timeless #mw-content-text .mdtLayout, | |||
body.skin-timeless .mw-parser-output .mdtLayout { | |||
display: grid; | |||
grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem); | |||
gap: 1rem; | |||
align-items: start; | |||
text-align: left; | |||
} | |||
/* Ensure the right rail is on the right even if DOM order differs */ | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail { | |||
grid-column: 2; | |||
} | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtMain, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtMain { | |||
grid-column: 1; | |||
} | |||
/* Optional: wrap-right-rail layout (float like the external Mindustry wiki) | |||
- Keeps the right rail on the right | |||
- Main content can "fill" the space below once the rail ends | |||
Usage: | |||
<div class="mdtLayout mdtLight mdtWrapRail"> | |||
<div class="mdtRightRail">...</div> | |||
<div class="mdtMain">...</div> | |||
</div> | |||
*/ | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail { | |||
display: block !important; | |||
} | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail::after, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail::after { | |||
content: ""; | |||
display: block; | |||
clear: both; | |||
} | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtRightRail, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtRightRail { | |||
float: right !important; | |||
width: min(22rem, 38%); | |||
margin: 0 0 1rem 1rem; | |||
position: sticky; | |||
top: 4.5rem; | |||
} | |||
/* Only keep the float-clear behavior when the content is NOT wrapped in .mdtMain. | |||
(Some pages use <div class="mdtLayout ..."> ...content... <div class="mdtRightRail">...) */ | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > :not(.mdtRightRail):not(.mdtMain), | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > :not(.mdtRightRail):not(.mdtMain) { | |||
overflow: hidden; | |||
} | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtMain, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtMain { | |||
/* Keep main content in normal flow so it can expand to full width | |||
after the floated rail ends (like the external Mindustry wiki). */ | |||
display: block; | |||
min-width: 0; | |||
} | |||
/* Hide built-in TOC inside custom layout blocks (optional) */ | |||
body.skin-timeless #mw-content-text .mdtLayout #toc, | |||
body.skin-timeless #mw-content-text .mdtLayout .toc, | |||
body.skin-timeless .mw-parser-output .mdtLayout #toc, | |||
body.skin-timeless .mw-parser-output .mdtLayout .toc { | |||
display: none !important; | |||
} | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtMain, | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtSide, | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtMain, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtSide, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail { | |||
min-width: 0; | |||
} | |||
@media (min-width: 1000px) { | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtSide, | |||
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtSide, | |||
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail { | |||
position: sticky; | |||
top: 4.5rem; | |||
align-self: start; | |||
} | |||
} | |||
@media (max-width: 999px) { | |||
body.skin-timeless #mw-content-text .mdtLayout, | |||
body.skin-timeless .mw-parser-output .mdtLayout { | |||
grid-template-columns: 1fr; | |||
} | } | ||
body.skin-timeless # | body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtRightRail, | ||
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtRightRail { | |||
float: none; | |||
margin | width: auto; | ||
margin: 0 0 1rem 0; | |||
position: static; | |||
} | } | ||
} | } | ||
/* | /* Optional: light variant for panels within the layout */ | ||
body.skin-timeless .mdtHome { | body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtHome, | ||
--mdtHomePanel: # | body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtHome { | ||
--mdtHomeCard: # | --mdtHomePanel: #ffffff; | ||
--mdtHomeCardHover: # | --mdtHomeBorder: rgba(0, 0, 0, 0.12); | ||
--mdtHomeBorder: rgba( | --mdtHomeText: rgba(0, 0, 0, 0.88); | ||
--mdtHomeText: rgba( | --mdtHomeMut: rgba(0, 0, 0, 0.58); | ||
--mdtHomeMut: rgba(255, 255, 255, 0. | |||
--mdtHomeCard: #f0fffb; | |||
--mdtHomeCardHover: #e6fff7; | |||
--mdtHomeCardTint: rgba(0, 175, 137, 0.12); | |||
--mdtHomeCardTintHover: rgba(0, 175, 137, 0.18); | |||
} | |||
/* Optional: light variant vars for non-.mdtHome blocks (e.g., right rail) */ | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtLight, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight { | |||
--mdtHomePanel: #ffffff; | |||
--mdtHomeBorder: rgba(0, 0, 0, 0.12); | |||
--mdtHomeText: rgba(0, 0, 0, 0.88); | |||
--mdtHomeMut: rgba(0, 0, 0, 0.58); | |||
} | |||
/* Optional: remove the thin grey frame on light panels only */ | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtHome .mdtPanel, | |||
body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtSidePanel, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtHome .mdtPanel, | |||
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtSidePanel { | |||
border: 0 !important; | |||
border-top: 3px solid rgba(0, 207, 160, 0.35) !important; | |||
} | |||
/* Right-side info table (label/value) */ | |||
body.skin-timeless #mw-content-text .mdtInfoTable { | |||
width: 100%; | |||
border-collapse: collapse; | |||
} | |||
body.skin-timeless #mw-content-text .mdtInfoTable th, | |||
body.skin-timeless #mw-content-text .mdtInfoTable td { | |||
padding: 0.5rem 0.75rem; | |||
border-top: 1px solid rgba(0, 0, 0, 0.10); | |||
vertical-align: top; | |||
} | |||
body.skin-timeless #mw-content-text .mdtHome .mdtInfoTable th, | |||
body.skin-timeless #mw-content-text .mdtHome .mdtInfoTable td { | |||
border-top-color: rgba(255, 255, 255, 0.12); | |||
} | |||
body.skin-timeless #mw-content-text .mdtInfoTable th { | |||
- | text-align: left; | ||
font-weight: 700; | |||
color: inherit; | |||
opacity: 0.9; | |||
width: 40%; | |||
} | |||
- | body.skin-timeless #mw-content-text .mdtInfoTable td { | ||
text-align: right; | |||
color: inherit; | |||
opacity: 0.95; | |||
} | |||
/* Right rail (custom sector pages) */ | |||
- | body.skin-timeless #mw-content-text .mdtRightRail { | ||
text-align: left; | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtSidePanel { | |||
body.skin-timeless . | background: var(--mdtHomePanel, #242e2d); | ||
background: var(--mdtHomePanel) | border: 1px solid var(--mdtHomeBorder, rgba(255, 255, 255, 0.12)); | ||
border: 1px solid var(--mdtHomeBorder); | |||
border-top: 3px solid rgba(0, 207, 160, 0.35); | border-top: 3px solid rgba(0, 207, 160, 0.35); | ||
border-radius: | border-radius: 22px; | ||
color: var(--mdtHomeText); | color: var(--mdtHomeText, rgba(255, 255, 255, 0.92)); | ||
box-shadow: | box-shadow: | ||
inset 0 1px 0 rgba(255, 255, 255, 0.06), | inset 0 1px 0 rgba(255, 255, 255, 0.06), | ||
| 第354行: | 第600行: | ||
} | } | ||
body.skin-timeless #mw-content-text .mdtSideTitle { | |||
body.skin-timeless . | padding: 0.85rem 1rem 0.35rem; | ||
padding: 1rem | font-weight: 900; | ||
font-size: 1.05rem; | |||
line-height: 1.2; | |||
gap: | display: flex; | ||
gap: 0.5rem; | |||
align-items: center; | align-items: center; | ||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtSideTitle a.image, | ||
body.skin-timeless #mw-content-text .mdtSideTitle a.mw-file-description { | |||
display: inline-flex; | |||
} | |||
body.skin-timeless #mw-content-text .mdtSideTitle img { | |||
image-rendering: pixelated; | image-rendering: pixelated; | ||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtSideId { | ||
padding: 0 1rem; | |||
opacity: 0.65; | |||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, | |||
"Liberation Mono", "Courier New", monospace; | |||
} | |||
body.skin-timeless #mw-content-text .mdtSideDesc { | |||
padding: 0.6rem 1rem 1rem; | |||
opacity: 0.88; | |||
line-height: 1.45; | |||
} | |||
body.skin-timeless #mw-content-text .mdtSideSection { | |||
padding: 0.55rem 1rem; | |||
font-weight: 850; | font-weight: 850; | ||
opacity: 0.9; | |||
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10)); | |||
background: rgba(0, 207, 160, 0.06); | |||
} | |||
body.skin-timeless #mw-content-text table.mdtSideTable { | |||
width: 100%; | |||
border-collapse: collapse; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text table.mdtSideTable th, | ||
body.skin-timeless #mw-content-text table.mdtSideTable td { | |||
/* Reduce padding so content sits closer to the left like Mindustry wiki */ | |||
padding: 8px 10px; | |||
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10)); | |||
vertical-align: top; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text table.mdtSideTable th { | ||
text-align: left; | |||
width: 5.5em; | |||
opacity: 0.8; | |||
font-weight: 750; | |||
white-space: nowrap; | |||
} | } | ||
body.skin-timeless | body.skin-timeless #mw-content-text table.mdtSideTable td { | ||
text-align: left; | |||
text- | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtPixelIcon { | ||
display: inline-flex; | |||
vertical-align: middle; | |||
align-items: center; | |||
line-height: 1; | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtPixelIcon.mdtAutoIcon { | |||
body.skin-timeless . | margin-right: 0.35rem; | ||
margin- | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtPixelIcon.mdtAutoIcon img { | ||
width: 18px; | |||
height: 18px; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless .mdtEditorTools .mw-ui-button { | ||
border-radius: 10px; | |||
} | } | ||
body.skin-timeless . | /* Tech tree mini panel */ | ||
body.skin-timeless #mw-content-text .mdtTechTreePanel { | |||
margin-top: 1rem; | |||
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10)); | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtTechTreeTitle { | |||
body.skin-timeless . | padding: 0.85rem 1rem; | ||
font-weight: 950; | |||
font-size: 1.25rem; | |||
text-align: center; | |||
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10)); | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtTechTreeGrid { | |||
body.skin-timeless . | padding: 0.85rem 1rem; | ||
display: grid; | display: grid; | ||
grid-template-columns: repeat(3, minmax(0, 1fr)); | |||
gap: 0.9rem; | |||
align-items: start; | |||
} | } | ||
body.skin-timeless | body.skin-timeless #mw-content-text .mdtTechCol { | ||
text-align: center; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtTechColTitle { | ||
font-weight: 850; | |||
opacity: 0.8; | |||
margin-bottom: 0.35rem; | |||
} | } | ||
body.skin-timeless | body.skin-timeless #mw-content-text .mdtTechTreeGrid img { | ||
image-rendering: pixelated; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtTechTreeNote { | ||
padding: 0.75rem 1rem 1rem; | |||
font-size: 0.92em; | |||
opacity: 0.75; | |||
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10)); | |||
} | } | ||
body.skin-timeless . | /* Image blocks */ | ||
body.skin-timeless #mw-content-text .mdt-imgFill { | |||
margin-top: 0.75rem; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdt-imgFill a.image, | ||
body.skin-timeless #mw-content-text .mdt-imgFill a.mw-file-description { | |||
display: block; | display: block; | ||
border-radius: 22px; | |||
overflow: hidden; | |||
border: 1px solid rgba(0, 0, 0, 0.12); | |||
background: rgba(0, 0, 0, 0.04); | |||
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.16); | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdt-imgFill img { | ||
display: block; | display: block; | ||
width: 100%; | |||
height: auto; | |||
} | |||
/* Research panel */ | |||
body.skin-timeless #mw-content-text .mdtResearchPanel { | |||
margin-top: 0.75rem; | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text table.mdtResearchTable { | ||
width: 100%; | |||
border-collapse: separate; | |||
border-spacing: 0; | |||
} | } | ||
body.skin-timeless #mw-content-text table.mdtResearchTable th, | |||
body.skin-timeless #mw-content-text table.mdtResearchTable td { | |||
padding: 0.55rem 0.75rem; | |||
border-top: 1px solid rgba(0, 0, 0, 0.10); | |||
vertical-align: top; | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtHome table.mdtResearchTable th, | |||
body.skin-timeless # | body.skin-timeless #mw-content-text .mdtHome table.mdtResearchTable td { | ||
border-top-color: rgba(255, 255, 255, 0.12); | |||
} | } | ||
body.skin-timeless # | body.skin-timeless #mw-content-text table.mdtResearchTable th { | ||
text-align: left; | |||
font-weight: 800; | |||
opacity: 0.95; | |||
width: 38%; | |||
white-space: nowrap; | white-space: nowrap; | ||
} | } | ||
body.skin-timeless #mw-content-text table.mdtResearchTable td { | |||
text-align: left; | |||
} | |||
body.skin-timeless #mw-content-text .mdtResearchReq { | |||
display: inline-flex; | |||
align-items: center; | |||
gap: 0.4rem; | |||
font-weight: 800; | |||
} | |||
body.skin-timeless #mw-content-text .mdtResearchReq img, | |||
body.skin-timeless #mw-content-text .mdtPixelIcon img { | |||
image-rendering: pixelated; | |||
} | |||
body.skin-timeless #mw-content-text .mdtResearchFoot { | |||
font-size: 0.9em; | |||
opacity: 0.7; | |||
} | |||
body.skin-timeless #mw-content-text .mdtResearchNote { | |||
font-size: 0.92em; | |||
opacity: 0.78; | |||
} | |||
/* Small screens: search wraps */ | |||
@media (max-width: 720px) { | @media (max-width: 720px) { | ||
body.skin-timeless # | body.skin-timeless #mw-header { | ||
body.skin-timeless #p- | flex-wrap: wrap; | ||
} | |||
body.skin-timeless #p-search { | |||
flex: 1 1 100%; | |||
max-width: none; | max-width: none; | ||
margin-left: 0; | |||
} | } | ||
} | } | ||
/* ===== Homepage (mdtHome): rounded + Mindustry green accent ===== */ | /* ===== Homepage (mdtHome): rounded + Mindustry green accent ===== */ | ||
body.skin-timeless .mdtHome { | body.skin-timeless .mdtHome { | ||
--mdtHomePanel: #242e2d; | --mdtHomePanel: #242e2d; | ||
--mdtHomeCard: # | --mdtHomeCard: #2f6a5d; | ||
--mdtHomeCardHover: # | --mdtHomeCardHover: #37786c; | ||
--mdtHomeBorder: rgba(255, 255, 255, 0.12); | --mdtHomeBorder: rgba(255, 255, 255, 0.12); | ||
--mdtHomeText: rgba(255, 255, 255, 0.92); | --mdtHomeText: rgba(255, 255, 255, 0.92); | ||
| 第565行: | 第836行: | ||
--mdtHomeRadiusPanel: 22px; | --mdtHomeRadiusPanel: 22px; | ||
--mdtHomeRadiusCard: | --mdtHomeRadiusCard: 22px; | ||
} | } | ||
| 第663行: | 第934行: | ||
margin-top: 0.85rem; | margin-top: 0.85rem; | ||
display: grid; | display: grid; | ||
grid-template-columns: repeat(auto- | /* Use auto-fill so items don't stretch when the last row isn't full. */ | ||
grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); | |||
gap: 1rem; | gap: 1rem; | ||
} | } | ||
| 第757行: | 第1,029行: | ||
} | } | ||
/* MDTWIKI_FORCE_HOME_CARDS_SOLID v20260109c */ | |||
body.skin-timeless #mw-content-text .mdtHome .mdtCard { | |||
border-radius: var(--mdtHomeRadiusCard, 22px); | |||
border: 0 !important; | |||
background: transparent !important; | |||
box-shadow: none !important; | |||
padding: 0 !important; | |||
overflow: visible !important; | |||
padding: 0 | |||
} | } | ||
body.skin-timeless . | body.skin-timeless #mw-content-text .mdtHome .mdtCard a, | ||
body.skin-timeless #mw-content-text .mdtHome .mdtCard a:visited { | |||
body.skin-timeless . | |||
display: block; | display: block; | ||
border: 0 !important; | |||
background: var(--mdtHomeCard, #2f6a5d) !important; | |||
background-image: none !important; | |||
background-color: var(--mdtHomeCard, #2f6a5d) !important; | |||
box-shadow: inset 4px 0 0 rgba(0, 207, 160, 0.18), 0 12px 26px rgba(0, 0, 0, 0.20); | |||
} | } | ||
body.skin-timeless #mw-content-text .mdtHome .mdtCard a:hover { | |||
background: var(--mdtHomeCardHover, #37786c) !important; | |||
background-image: none !important; | |||
background-color: var(--mdtHomeCardHover, #37786c) !important; | |||
box-shadow: | box-shadow: | ||
inset 0 | inset 4px 0 0 rgba(0, 207, 160, 0.30), | ||
0 | 0 18px 36px rgba(0, 0, 0, 0.26), | ||
0 0 0 4px rgba(0, 207, 160, 0.12); | |||
} | } | ||
body.skin-timeless #mw-content-text . | body.skin-timeless #mw-content-text .mdtHome .mdtCard a::before { | ||
content: none !important; | |||
} | } | ||
body.skin-timeless # | /* 可选:防止站点标题换行导致顶部栏变高、搜索下移 */ | ||
width: | body.skin-timeless #p-logo-text { | ||
max-width: 42vw; | |||
} | } | ||
body.skin-timeless # | body.skin-timeless #p-logo-text #p-banner { | ||
max-width: 42vw; | |||
overflow: hidden; | overflow: hidden; | ||
white-space: nowrap; | white-space: nowrap; | ||
text-overflow: ellipsis; | |||
text- | |||
} | } | ||
@media (max-width: 720px) { | @media (max-width: 720px) { | ||
body.skin-timeless # | body.skin-timeless #p-logo-text, | ||
body.skin-timeless #p-logo-text #p-banner { | |||
max-width: none; | |||
body.skin-timeless # | overflow: visible; | ||
text-overflow: clip; | |||
} | } | ||
} | } | ||
2026年1月30日 (五) 19:21的版本
/* MediaWiki:Timeless.css - Mindustry green header + MkDocs-ish sidebars */
body.skin-timeless {
--mdtBrand: #00af89;
--mdtBrand2: #00cfa0;
--mdtHeaderFg: #ffffff;
--mdtText: rgba(0, 0, 0, 0.87);
--mdtTextMut: rgba(0, 0, 0, 0.55);
--mdtHover: rgba(0, 0, 0, 0.06);
--mdtSidebarW: 16rem;
--mdtShadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.08),
0 0 0.05rem rgba(0, 0, 0, 0.12);
}
/* ===== Header (Mindustry green) ===== */
body.skin-timeless #mw-header-container {
background: var(--mdtBrand) !important;
color: var(--mdtHeaderFg);
box-shadow: var(--mdtShadow);
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}
body.skin-timeless #mw-header-container img {
max-height: 2.2rem;
width: auto;
}
body.skin-timeless #mw-header {
display: flex;
align-items: center;
gap: 0.75rem;
flex-wrap: nowrap;
min-height: 3.25rem;
}
/* Keep search + user tools vertically centered */
body.skin-timeless #p-search,
body.skin-timeless #user-tools {
align-self: center;
margin-top: 0 !important;
}
body.skin-timeless #mw-header .visualClear {
display: none;
}
/* Site title (left) */
body.skin-timeless #p-logo-text {
order: 1;
flex: 0 0 auto;
min-width: 0;
max-width: none;
position: static !important;
text-align: left !important;
}
body.skin-timeless #p-logo-text #p-banner {
display: flex;
align-items: center;
gap: 0.5rem;
color: inherit;
text-decoration: none;
font-weight: 700;
letter-spacing: 0.02em;
line-height: 1.1;
}
/* Hide sidebar logo; show a small icon next to title */
body.skin-timeless #mw-site-navigation #p-logo {
display: none !important;
}
body.skin-timeless #p-logo-text #p-banner::before {
content: '';
width: 30px;
height: 27px;
flex: 0 0 auto;
background: url(/resources/assets/ui/alphaaaa.png) center / contain no-repeat;
image-rendering: pixelated;
border-radius: 6px;
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.22);
}
/* Search (right, smaller, dark like external wiki) */
body.skin-timeless #p-search {
order: 2;
margin-left: auto;
flex: 0 1 11.5rem;
min-width: 9.5rem;
max-width: 18vw;
}
body.skin-timeless #p-search h3 {
display: none;
}
body.skin-timeless #p-search form {
margin: 0;
}
body.skin-timeless #mw-header-container #simpleSearch {
display: flex;
align-items: stretch;
height: 2.2rem;
width: 100%;
background: rgba(0, 0, 0, 0.28) !important;
border: 1px solid rgba(255, 255, 255, 0.14) !important;
border-radius: 0.35rem !important;
box-shadow: none !important;
overflow: hidden;
}
body.skin-timeless #mw-header-container #simpleSearch:focus-within {
background: rgba(0, 0, 0, 0.36) !important;
border-color: rgba(255, 255, 255, 0.25) !important;
}
body.skin-timeless #mw-header-container #searchInput-container {
flex: 1 1 auto;
}
body.skin-timeless #mw-header-container #searchInput {
height: 100% !important;
width: 100% !important;
background: transparent !important;
border: 0 !important;
box-shadow: none !important;
color: var(--mdtHeaderFg) !important;
padding: 0.25rem 0.55rem !important;
}
body.skin-timeless #mw-header-container #searchInput::placeholder {
color: rgba(255, 255, 255, 0.75) !important;
}
/* Hide both submit buttons (press Enter to search) */
body.skin-timeless #mw-header-container #mw-searchButton,
body.skin-timeless #mw-header-container #searchButton {
display: none !important;
}
/* Account area on far right */
body.skin-timeless #user-tools {
order: 3;
flex: 0 0 auto;
white-space: nowrap;
}
body.skin-timeless #mw-header a,
body.skin-timeless #mw-header a:visited {
color: var(--mdtHeaderFg);
}
body.skin-timeless #mw-header .dropdown {
color: rgba(0, 0, 0, 0.87);
}
body.skin-timeless #mw-header .dropdown a,
body.skin-timeless #mw-header .dropdown a:visited {
color: #0645ad;
}
/* Fix: dropdown menu clipped/mispositioned after header flex tweaks */
body.skin-timeless #mw-header-container,
body.skin-timeless #mw-header,
body.skin-timeless #mw-header #user-tools {
overflow: visible !important;
}
body.skin-timeless #mw-header .dropdown {
position: relative;
overflow: visible !important;
}
body.skin-timeless #mw-header .dropdown .mw-portlet-body,
body.skin-timeless #mw-header .dropdown .dropdown-content,
body.skin-timeless #mw-header .dropdown .dropdown-menu {
z-index: 10000;
}
/* Personal tools menu: align to the right edge */
body.skin-timeless #mw-header #user-tools .dropdown .mw-portlet-body,
body.skin-timeless #mw-header #user-tools .dropdown .dropdown-content,
body.skin-timeless #mw-header #user-tools .dropdown .dropdown-menu {
left: auto;
right: 0;
}
/* Header color bar -> solid Mindustry green */
body.skin-timeless #mw-header-hack {
background: var(--mdtBrand) !important;
}
body.skin-timeless #mw-header-hack .color-left,
body.skin-timeless #mw-header-hack .color-middle,
body.skin-timeless #mw-header-hack .color-right {
background: var(--mdtBrand) !important;
}
/* ===== Sidebars (left + right consistent) ===== */
body.skin-timeless #mw-site-navigation,
body.skin-timeless #mw-related-navigation {
width: var(--mdtSidebarW) !important;
flex: 0 0 var(--mdtSidebarW) !important;
}
body.skin-timeless #mw-site-navigation .sidebar-chunk,
body.skin-timeless #mw-related-navigation .sidebar-chunk {
background: transparent;
border: 0;
box-shadow: none;
padding: 0.25rem 0;
margin: 0 0 1rem;
}
body.skin-timeless #mw-site-navigation .sidebar-chunk > h2,
body.skin-timeless #mw-related-navigation .sidebar-chunk > h2 {
margin: 0.25rem 0.75rem 0.5rem;
font-size: 0.8rem;
letter-spacing: 0.06em;
color: var(--mdtTextMut);
}
body.skin-timeless #mw-site-navigation .mw-portlet-body ul,
body.skin-timeless #mw-related-navigation .mw-portlet-body ul {
list-style: none;
margin: 0;
padding: 0;
}
body.skin-timeless #mw-site-navigation .mw-portlet-body a,
body.skin-timeless #mw-related-navigation .mw-portlet-body a {
display: block;
padding: 0.38rem 0.85rem;
border-radius: 10px;
text-decoration: none;
color: var(--mdtText);
box-shadow: inset 3px 0 0 transparent;
}
body.skin-timeless #mw-site-navigation .mw-portlet-body a:hover,
body.skin-timeless #mw-related-navigation .mw-portlet-body a:hover {
background: var(--mdtHover);
box-shadow: inset 3px 0 0 var(--mdtBrand2);
}
/* Desktop: sticky and scrollable sidebars */
@media (min-width: 1000px) {
body.skin-timeless #mw-site-navigation,
body.skin-timeless #mw-related-navigation {
position: sticky;
top: 4rem;
align-self: flex-start;
max-height: calc(100vh - 4rem);
overflow-y: auto;
}
}
/* Small screens: allow sidebar wheel/touch scrolling when shown */
@media (max-width: 999px) {
body.skin-timeless #mw-site-navigation,
body.skin-timeless #mw-related-navigation {
max-height: 100vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
}
/* Thin scrollbar like MkDocs */
body.skin-timeless #mw-site-navigation,
body.skin-timeless #mw-related-navigation {
scrollbar-width: thin;
scrollbar-color: rgba(0, 207, 160, 0.85) transparent;
}
body.skin-timeless #mw-site-navigation::-webkit-scrollbar,
body.skin-timeless #mw-related-navigation::-webkit-scrollbar {
width: 6px;
}
body.skin-timeless #mw-site-navigation::-webkit-scrollbar-track,
body.skin-timeless #mw-related-navigation::-webkit-scrollbar-track {
background: transparent;
}
body.skin-timeless #mw-site-navigation::-webkit-scrollbar-thumb,
body.skin-timeless #mw-related-navigation::-webkit-scrollbar-thumb {
background: rgba(0, 207, 160, 0.85);
border-radius: 999px;
}
/* ===== Collapsible navigation (left) ===== */
body.skin-timeless #mw-site-navigation #p-navigation li.mdtNavGroup {
display: grid;
grid-template-columns: 1fr 2rem;
align-items: center;
min-width: 0;
}
body.skin-timeless #mw-site-navigation #p-navigation li.mdtNavGroup > a {
min-width: 0;
}
body.skin-timeless #mw-site-navigation #p-navigation .mdtNavToggle {
width: 2rem;
height: 2rem;
border: 0;
background: transparent;
cursor: pointer;
color: var(--mdtTextMut);
border-radius: 10px;
}
body.skin-timeless #mw-site-navigation #p-navigation .mdtNavToggle:hover {
background: var(--mdtHover);
}
body.skin-timeless #mw-site-navigation #p-navigation .mdtNavToggle::before {
content: '\25B8';
display: block;
font-size: 18px;
line-height: 1;
transition: transform 0.15s ease;
}
body.skin-timeless #mw-site-navigation #p-navigation li.mdtNavOpen > .mdtNavToggle::before {
transform: rotate(90deg);
}
body.skin-timeless #mw-site-navigation #p-navigation .mdtNavSublist {
grid-column: 1 / -1;
list-style: none;
margin: 0.15rem 0 0.4rem;
padding: 0 0 0 0.85rem;
border-left: 1px solid rgba(0, 0, 0, 0.08);
display: none;
}
body.skin-timeless #mw-site-navigation #p-navigation li.mdtNavOpen > .mdtNavSublist {
display: block;
}
body.skin-timeless #mw-site-navigation #p-navigation .mdtNavSublist a {
font-size: 0.92em;
padding: 0.32rem 0.85rem;
}
body.skin-timeless #mw-site-navigation #p-navigation a.mdtNavActive {
color: var(--mdtBrand) !important;
background: rgba(0, 175, 137, 0.12) !important;
box-shadow: inset 3px 0 0 var(--mdtBrand) !important;
}
/* Page title underline -> green */
body.skin-timeless .mw-body h1.firstHeading {
border-bottom-color: var(--mdtBrand) !important;
}
/* ===== Foldable headings (mdtFold) ===== */
body.skin-timeless #mw-content-text .mdtFoldHeadline {
display: inline-flex;
align-items: center;
gap: 0.35rem;
}
body.skin-timeless #mw-content-text .mdtFoldToggle,
body.skin-timeless .mw-parser-output .mdtFoldToggle {
width: 1.6rem;
height: 1.6rem;
margin-left: 0.25rem;
border: 0 !important;
border-radius: 10px;
display: inline-flex;
align-items: center;
justify-content: center;
background: rgba(0, 175, 137, 0.10) !important;
color: var(--mdtBrand);
cursor: pointer;
padding: 0;
appearance: none;
-webkit-appearance: none;
box-shadow: none !important;
outline: none;
font-family: inherit;
font-size: 16px;
font-weight: 700;
line-height: 1;
}
body.skin-timeless #mw-content-text .mdtFoldToggle:hover,
body.skin-timeless .mw-parser-output .mdtFoldToggle:hover {
background: rgba(0, 175, 137, 0.18) !important;
}
/* Arrow is rendered by JS via button textContent */
body.skin-timeless #mw-content-text .mdtFoldCollapsed + .mdtFoldBody,
body.skin-timeless .mw-parser-output .mdtFoldCollapsed + .mdtFoldBody {
display: none;
}
/* Some gadgets/skins force <div hidden> via user agent styles; use class instead */
body.skin-timeless #mw-content-text .mdtFoldBody.mdtFoldHidden,
body.skin-timeless .mw-parser-output .mdtFoldBody.mdtFoldHidden {
display: none !important;
}
/* ===== In-article two-column layout (mdtLayout) ===== */
body.skin-timeless #mw-content-text .mdtLayout,
body.skin-timeless .mw-parser-output .mdtLayout {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem);
gap: 1rem;
align-items: start;
text-align: left;
}
/* Ensure the right rail is on the right even if DOM order differs */
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail {
grid-column: 2;
}
body.skin-timeless #mw-content-text .mdtLayout > .mdtMain,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtMain {
grid-column: 1;
}
/* Optional: wrap-right-rail layout (float like the external Mindustry wiki)
- Keeps the right rail on the right
- Main content can "fill" the space below once the rail ends
Usage:
<div class="mdtLayout mdtLight mdtWrapRail">
<div class="mdtRightRail">...</div>
<div class="mdtMain">...</div>
</div>
*/
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail,
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail {
display: block !important;
}
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail::after,
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail::after {
content: "";
display: block;
clear: both;
}
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtRightRail,
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtRightRail {
float: right !important;
width: min(22rem, 38%);
margin: 0 0 1rem 1rem;
position: sticky;
top: 4.5rem;
}
/* Only keep the float-clear behavior when the content is NOT wrapped in .mdtMain.
(Some pages use <div class="mdtLayout ..."> ...content... <div class="mdtRightRail">...) */
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > :not(.mdtRightRail):not(.mdtMain),
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > :not(.mdtRightRail):not(.mdtMain) {
overflow: hidden;
}
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtMain,
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtMain {
/* Keep main content in normal flow so it can expand to full width
after the floated rail ends (like the external Mindustry wiki). */
display: block;
min-width: 0;
}
/* Hide built-in TOC inside custom layout blocks (optional) */
body.skin-timeless #mw-content-text .mdtLayout #toc,
body.skin-timeless #mw-content-text .mdtLayout .toc,
body.skin-timeless .mw-parser-output .mdtLayout #toc,
body.skin-timeless .mw-parser-output .mdtLayout .toc {
display: none !important;
}
body.skin-timeless #mw-content-text .mdtLayout > .mdtMain,
body.skin-timeless #mw-content-text .mdtLayout > .mdtSide,
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtMain,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtSide,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail {
min-width: 0;
}
@media (min-width: 1000px) {
body.skin-timeless #mw-content-text .mdtLayout > .mdtSide,
body.skin-timeless #mw-content-text .mdtLayout > .mdtRightRail,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtSide,
body.skin-timeless .mw-parser-output .mdtLayout > .mdtRightRail {
position: sticky;
top: 4.5rem;
align-self: start;
}
}
@media (max-width: 999px) {
body.skin-timeless #mw-content-text .mdtLayout,
body.skin-timeless .mw-parser-output .mdtLayout {
grid-template-columns: 1fr;
}
body.skin-timeless #mw-content-text .mdtLayout.mdtWrapRail > .mdtRightRail,
body.skin-timeless .mw-parser-output .mdtLayout.mdtWrapRail > .mdtRightRail {
float: none;
width: auto;
margin: 0 0 1rem 0;
position: static;
}
}
/* Optional: light variant for panels within the layout */
body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtHome,
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtHome {
--mdtHomePanel: #ffffff;
--mdtHomeBorder: rgba(0, 0, 0, 0.12);
--mdtHomeText: rgba(0, 0, 0, 0.88);
--mdtHomeMut: rgba(0, 0, 0, 0.58);
--mdtHomeCard: #f0fffb;
--mdtHomeCardHover: #e6fff7;
--mdtHomeCardTint: rgba(0, 175, 137, 0.12);
--mdtHomeCardTintHover: rgba(0, 175, 137, 0.18);
}
/* Optional: light variant vars for non-.mdtHome blocks (e.g., right rail) */
body.skin-timeless #mw-content-text .mdtLayout.mdtLight,
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight {
--mdtHomePanel: #ffffff;
--mdtHomeBorder: rgba(0, 0, 0, 0.12);
--mdtHomeText: rgba(0, 0, 0, 0.88);
--mdtHomeMut: rgba(0, 0, 0, 0.58);
}
/* Optional: remove the thin grey frame on light panels only */
body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtHome .mdtPanel,
body.skin-timeless #mw-content-text .mdtLayout.mdtLight .mdtSidePanel,
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtHome .mdtPanel,
body.skin-timeless .mw-parser-output .mdtLayout.mdtLight .mdtSidePanel {
border: 0 !important;
border-top: 3px solid rgba(0, 207, 160, 0.35) !important;
}
/* Right-side info table (label/value) */
body.skin-timeless #mw-content-text .mdtInfoTable {
width: 100%;
border-collapse: collapse;
}
body.skin-timeless #mw-content-text .mdtInfoTable th,
body.skin-timeless #mw-content-text .mdtInfoTable td {
padding: 0.5rem 0.75rem;
border-top: 1px solid rgba(0, 0, 0, 0.10);
vertical-align: top;
}
body.skin-timeless #mw-content-text .mdtHome .mdtInfoTable th,
body.skin-timeless #mw-content-text .mdtHome .mdtInfoTable td {
border-top-color: rgba(255, 255, 255, 0.12);
}
body.skin-timeless #mw-content-text .mdtInfoTable th {
text-align: left;
font-weight: 700;
color: inherit;
opacity: 0.9;
width: 40%;
}
body.skin-timeless #mw-content-text .mdtInfoTable td {
text-align: right;
color: inherit;
opacity: 0.95;
}
/* Right rail (custom sector pages) */
body.skin-timeless #mw-content-text .mdtRightRail {
text-align: left;
}
body.skin-timeless #mw-content-text .mdtSidePanel {
background: var(--mdtHomePanel, #242e2d);
border: 1px solid var(--mdtHomeBorder, rgba(255, 255, 255, 0.12));
border-top: 3px solid rgba(0, 207, 160, 0.35);
border-radius: 22px;
color: var(--mdtHomeText, rgba(255, 255, 255, 0.92));
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.06),
0 16px 34px rgba(0, 0, 0, 0.22);
overflow: hidden;
}
body.skin-timeless #mw-content-text .mdtSideTitle {
padding: 0.85rem 1rem 0.35rem;
font-weight: 900;
font-size: 1.05rem;
line-height: 1.2;
display: flex;
gap: 0.5rem;
align-items: center;
}
body.skin-timeless #mw-content-text .mdtSideTitle a.image,
body.skin-timeless #mw-content-text .mdtSideTitle a.mw-file-description {
display: inline-flex;
}
body.skin-timeless #mw-content-text .mdtSideTitle img {
image-rendering: pixelated;
}
body.skin-timeless #mw-content-text .mdtSideId {
padding: 0 1rem;
opacity: 0.65;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
}
body.skin-timeless #mw-content-text .mdtSideDesc {
padding: 0.6rem 1rem 1rem;
opacity: 0.88;
line-height: 1.45;
}
body.skin-timeless #mw-content-text .mdtSideSection {
padding: 0.55rem 1rem;
font-weight: 850;
opacity: 0.9;
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10));
background: rgba(0, 207, 160, 0.06);
}
body.skin-timeless #mw-content-text table.mdtSideTable {
width: 100%;
border-collapse: collapse;
}
body.skin-timeless #mw-content-text table.mdtSideTable th,
body.skin-timeless #mw-content-text table.mdtSideTable td {
/* Reduce padding so content sits closer to the left like Mindustry wiki */
padding: 8px 10px;
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10));
vertical-align: top;
}
body.skin-timeless #mw-content-text table.mdtSideTable th {
text-align: left;
width: 5.5em;
opacity: 0.8;
font-weight: 750;
white-space: nowrap;
}
body.skin-timeless #mw-content-text table.mdtSideTable td {
text-align: left;
}
body.skin-timeless #mw-content-text .mdtPixelIcon {
display: inline-flex;
vertical-align: middle;
align-items: center;
line-height: 1;
}
body.skin-timeless #mw-content-text .mdtPixelIcon.mdtAutoIcon {
margin-right: 0.35rem;
}
body.skin-timeless #mw-content-text .mdtPixelIcon.mdtAutoIcon img {
width: 18px;
height: 18px;
}
body.skin-timeless .mdtEditorTools .mw-ui-button {
border-radius: 10px;
}
/* Tech tree mini panel */
body.skin-timeless #mw-content-text .mdtTechTreePanel {
margin-top: 1rem;
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10));
}
body.skin-timeless #mw-content-text .mdtTechTreeTitle {
padding: 0.85rem 1rem;
font-weight: 950;
font-size: 1.25rem;
text-align: center;
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10));
}
body.skin-timeless #mw-content-text .mdtTechTreeGrid {
padding: 0.85rem 1rem;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 0.9rem;
align-items: start;
}
body.skin-timeless #mw-content-text .mdtTechCol {
text-align: center;
}
body.skin-timeless #mw-content-text .mdtTechColTitle {
font-weight: 850;
opacity: 0.8;
margin-bottom: 0.35rem;
}
body.skin-timeless #mw-content-text .mdtTechTreeGrid img {
image-rendering: pixelated;
}
body.skin-timeless #mw-content-text .mdtTechTreeNote {
padding: 0.75rem 1rem 1rem;
font-size: 0.92em;
opacity: 0.75;
border-top: 1px solid var(--mdtHomeBorder, rgba(0, 0, 0, 0.10));
}
/* Image blocks */
body.skin-timeless #mw-content-text .mdt-imgFill {
margin-top: 0.75rem;
}
body.skin-timeless #mw-content-text .mdt-imgFill a.image,
body.skin-timeless #mw-content-text .mdt-imgFill a.mw-file-description {
display: block;
border-radius: 22px;
overflow: hidden;
border: 1px solid rgba(0, 0, 0, 0.12);
background: rgba(0, 0, 0, 0.04);
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.16);
}
body.skin-timeless #mw-content-text .mdt-imgFill img {
display: block;
width: 100%;
height: auto;
}
/* Research panel */
body.skin-timeless #mw-content-text .mdtResearchPanel {
margin-top: 0.75rem;
}
body.skin-timeless #mw-content-text table.mdtResearchTable {
width: 100%;
border-collapse: separate;
border-spacing: 0;
}
body.skin-timeless #mw-content-text table.mdtResearchTable th,
body.skin-timeless #mw-content-text table.mdtResearchTable td {
padding: 0.55rem 0.75rem;
border-top: 1px solid rgba(0, 0, 0, 0.10);
vertical-align: top;
}
body.skin-timeless #mw-content-text .mdtHome table.mdtResearchTable th,
body.skin-timeless #mw-content-text .mdtHome table.mdtResearchTable td {
border-top-color: rgba(255, 255, 255, 0.12);
}
body.skin-timeless #mw-content-text table.mdtResearchTable th {
text-align: left;
font-weight: 800;
opacity: 0.95;
width: 38%;
white-space: nowrap;
}
body.skin-timeless #mw-content-text table.mdtResearchTable td {
text-align: left;
}
body.skin-timeless #mw-content-text .mdtResearchReq {
display: inline-flex;
align-items: center;
gap: 0.4rem;
font-weight: 800;
}
body.skin-timeless #mw-content-text .mdtResearchReq img,
body.skin-timeless #mw-content-text .mdtPixelIcon img {
image-rendering: pixelated;
}
body.skin-timeless #mw-content-text .mdtResearchFoot {
font-size: 0.9em;
opacity: 0.7;
}
body.skin-timeless #mw-content-text .mdtResearchNote {
font-size: 0.92em;
opacity: 0.78;
}
/* Small screens: search wraps */
@media (max-width: 720px) {
body.skin-timeless #mw-header {
flex-wrap: wrap;
}
body.skin-timeless #p-search {
flex: 1 1 100%;
max-width: none;
margin-left: 0;
}
}
/* ===== Homepage (mdtHome): rounded + Mindustry green accent ===== */
body.skin-timeless .mdtHome {
--mdtHomePanel: #242e2d;
--mdtHomeCard: #2f6a5d;
--mdtHomeCardHover: #37786c;
--mdtHomeBorder: rgba(255, 255, 255, 0.12);
--mdtHomeText: rgba(255, 255, 255, 0.92);
--mdtHomeMut: rgba(255, 255, 255, 0.68);
/* Use site theme vars when available */
--mdtHomeAccent: var(--mdtBrand2, #00cfa0);
--mdtHomeAccent2: var(--mdtBrand, #00af89);
--mdtHomeCardTint: rgba(0, 207, 160, 0.22);
--mdtHomeCardTintHover: rgba(0, 207, 160, 0.30);
--mdtHomeRadiusPanel: 22px;
--mdtHomeRadiusCard: 22px;
}
/* Panels */
body.skin-timeless .mdtHome .mdtPanel {
background: var(--mdtHomePanel) !important;
border: 1px solid var(--mdtHomeBorder);
border-top: 3px solid rgba(0, 207, 160, 0.35);
border-radius: var(--mdtHomeRadiusPanel);
color: var(--mdtHomeText);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.06),
0 16px 34px rgba(0, 0, 0, 0.22);
overflow: hidden;
}
/* Hero */
body.skin-timeless .mdtHome .mdtHomeHero {
padding: 1rem 1.1rem;
display: grid;
grid-template-columns: 4.75rem 1fr;
gap: 1rem;
align-items: center;
background-image: none !important;
}
body.skin-timeless .mdtHome .mdtHomeHeroLogo {
width: 72px;
height: 72px;
border-radius: 14px;
background: url(/resources/assets/ui/alphaaaa.png) center / contain no-repeat;
image-rendering: pixelated;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.08),
0 10px 22px rgba(0, 0, 0, 0.28),
0 0 0 2px rgba(0, 207, 160, 0.14);
}
body.skin-timeless .mdtHome .mdtHomeHeroTitle {
color: var(--mdtHomeText);
font-weight: 850;
font-size: 1.45rem;
line-height: 1.1;
margin: 0;
}
body.skin-timeless .mdtHome .mdtHomeHeroSubtitle {
color: var(--mdtHomeMut);
margin-top: 0.35rem;
}
body.skin-timeless .mdtHome .mdtHomeHeroLinks {
margin-top: 0.85rem;
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
body.skin-timeless .mdtHome .mdtHomeHeroLinks a {
display: inline-block;
padding: 0.44rem 0.9rem;
border-radius: 999px;
border: 1px solid rgba(0, 207, 160, 0.28);
background: rgba(0, 207, 160, 0.14);
color: var(--mdtHomeText) !important;
text-decoration: none !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
body.skin-timeless .mdtHome .mdtHomeHeroLinks a:hover {
border-color: rgba(0, 207, 160, 0.65);
background: rgba(0, 207, 160, 0.18);
}
/* Sections */
body.skin-timeless .mdtHome .mdtHomeSection {
padding: 1rem 1.1rem;
margin-top: 1rem;
}
body.skin-timeless .mdtHome .mdtHomeSection h2 {
margin-top: 0;
border-bottom: 1px solid rgba(0, 207, 160, 0.18) !important;
color: var(--mdtHomeText);
}
body.skin-timeless .mdtHome .mdtHomeSection a {
color: var(--mdtHomeAccent);
}
body.skin-timeless .mdtHome .mdtHomeSection a:visited {
color: var(--mdtHomeAccent2);
}
/* Card grid */
body.skin-timeless .mdtHome .mdtHomeGrid {
margin-top: 0.85rem;
display: grid;
/* Use auto-fill so items don't stretch when the last row isn't full. */
grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
gap: 1rem;
}
/* Cards: style the wiki-generated <a> (use [[Page|...]] in wikitext) */
body.skin-timeless .mdtHome .mdtCard a {
position: relative;
display: grid;
gap: 0.35rem;
padding: 1.05rem 1.1rem;
border: 1px solid rgba(255, 255, 255, 0.10);
border-radius: var(--mdtHomeRadiusCard);
background:
linear-gradient(0deg, rgba(0, 207, 160, 0.12), rgba(0, 207, 160, 0.12)),
linear-gradient(180deg, var(--mdtHomeCardTint), rgba(0, 0, 0, 0) 68%),
linear-gradient(90deg, rgba(0, 207, 160, 0.06), rgba(0, 0, 0, 0) 55%),
var(--mdtHomeCard) !important;
background-color: var(--mdtHomeCard) !important;
color: var(--mdtHomeText) !important;
text-decoration: none !important;
box-shadow: 0 12px 26px rgba(0, 0, 0, 0.20);
transition: transform 0.12s ease, border-color 0.12s ease,
background 0.12s ease, box-shadow 0.12s ease;
}
body.skin-timeless .mdtHome .mdtCard a::before {
content: '';
position: absolute;
left: 0;
top: 0.85rem;
bottom: 0.85rem;
width: 3px;
border-radius: 999px;
background: linear-gradient(
180deg,
rgba(0, 207, 160, 0.85),
rgba(0, 175, 137, 0.18)
);
opacity: 0.18;
pointer-events: none;
}
body.skin-timeless .mdtHome .mdtCard a:visited {
color: var(--mdtHomeText) !important;
}
body.skin-timeless .mdtHome .mdtCard a:hover {
transform: translateY(-2px);
border-color: rgba(0, 207, 160, 0.55);
background:
linear-gradient(0deg, rgba(0, 207, 160, 0.16), rgba(0, 207, 160, 0.16)),
linear-gradient(180deg, var(--mdtHomeCardTintHover), rgba(0, 0, 0, 0) 68%),
linear-gradient(90deg, rgba(0, 207, 160, 0.10), rgba(0, 0, 0, 0) 55%),
var(--mdtHomeCardHover) !important;
background-color: var(--mdtHomeCardHover) !important;
box-shadow:
0 18px 36px rgba(0, 0, 0, 0.26),
0 0 0 4px rgba(0, 207, 160, 0.12);
}
body.skin-timeless .mdtHome .mdtCard a:hover::before {
opacity: 0.55;
}
body.skin-timeless .mdtHome .mdtCard a:focus-visible {
outline: 3px solid rgba(0, 207, 160, 0.35);
outline-offset: 3px;
}
body.skin-timeless .mdtHome .mdtCardTitle {
display: block;
font-weight: 850;
font-size: 1.08rem;
line-height: 1.1;
letter-spacing: 0.01em;
}
body.skin-timeless .mdtHome .mdtCardDesc {
display: block;
color: var(--mdtHomeMut);
font-size: 0.93rem;
}
body.skin-timeless .mdtHome .mdtCard a:hover .mdtCardTitle {
color: rgba(0, 207, 160, 0.95);
}
@media (max-width: 720px) {
body.skin-timeless .mdtHome .mdtHomeHero {
grid-template-columns: 1fr;
justify-items: start;
}
}
/* MDTWIKI_FORCE_HOME_CARDS_SOLID v20260109c */
body.skin-timeless #mw-content-text .mdtHome .mdtCard {
border-radius: var(--mdtHomeRadiusCard, 22px);
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
padding: 0 !important;
overflow: visible !important;
}
body.skin-timeless #mw-content-text .mdtHome .mdtCard a,
body.skin-timeless #mw-content-text .mdtHome .mdtCard a:visited {
display: block;
border: 0 !important;
background: var(--mdtHomeCard, #2f6a5d) !important;
background-image: none !important;
background-color: var(--mdtHomeCard, #2f6a5d) !important;
box-shadow: inset 4px 0 0 rgba(0, 207, 160, 0.18), 0 12px 26px rgba(0, 0, 0, 0.20);
}
body.skin-timeless #mw-content-text .mdtHome .mdtCard a:hover {
background: var(--mdtHomeCardHover, #37786c) !important;
background-image: none !important;
background-color: var(--mdtHomeCardHover, #37786c) !important;
box-shadow:
inset 4px 0 0 rgba(0, 207, 160, 0.30),
0 18px 36px rgba(0, 0, 0, 0.26),
0 0 0 4px rgba(0, 207, 160, 0.12);
}
body.skin-timeless #mw-content-text .mdtHome .mdtCard a::before {
content: none !important;
}
/* 可选:防止站点标题换行导致顶部栏变高、搜索下移 */
body.skin-timeless #p-logo-text {
max-width: 42vw;
}
body.skin-timeless #p-logo-text #p-banner {
max-width: 42vw;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
@media (max-width: 720px) {
body.skin-timeless #p-logo-text,
body.skin-timeless #p-logo-text #p-banner {
max-width: none;
overflow: visible;
text-overflow: clip;
}
}
