Template:Portal Box/styles.css
Appearance
/*
* Portal grid layout + section card styling.
* Adapted from Template:Navigation_Wikimedia_infrastructure/style.css
*
* Outer wrapper pattern (place on the page, not in this template):
* <div class="infranav infranav--portal">
* <div class="infranav-title">Title</div>
* <div class="infranav-contents">{{Portal Box|...}} ...</div>
* </div>
*
* Each {{Portal Box}} call generates one .infranav-section.
*/
/* ── Outer container ─────────────────────────────────────────────────────── */
.infranav {
border: 1px solid var(--border-color-base, #a2a9b1);
background: var(--background-color-neutral-subtle, #f8f9fa);
color: var(--color-base, #202122);
font-size: 88%;
line-height: 1.5;
}
/* ── Portal mode ─────────────────────────────────────────────────────────── */
.infranav--portal {
float: none;
max-width: initial;
clear: both;
margin: 1em 0;
}
.infranav--portal .infranav-title {
font-weight: bold;
text-align: center;
padding: 4px 8px;
background: #3366cc;
color: #fff;
border-bottom: 1px solid var(--border-color-base, #a2a9b1);
}
.infranav--portal .infranav-contents {
margin: 0 8px;
padding: 8px 0;
display: flex;
flex-flow: row wrap;
gap: 16px;
}
.infranav--portal .infranav-section {
break-inside: avoid;
flex: 1 1 180px;
min-width: 160px;
}
.infranav--portal .infranav-heading {
font-weight: bold;
border-bottom: 1px solid var(--border-color-base, #a2a9b1);
margin-bottom: 4px;
padding-bottom: 2px;
}
/* ── Sidebar mode ────────────────────────────────────────────────────────── */
.infranav--sidebar {
float: right;
clear: right;
width: 14em;
margin: 0 0 1em 1em;
}
.infranav--sidebar .infranav-title {
font-weight: bold;
text-align: center;
padding: 4px 8px;
background: #3366cc;
color: #fff;
border-bottom: 1px solid var(--border-color-base, #a2a9b1);
}
.infranav--sidebar .infranav-contents {
padding: 4px 0;
}
.infranav--sidebar .infranav-heading {
font-weight: normal;
margin: 1px 0 0 0;
}
.infranav--sidebar .infranav-heading a {
display: block;
border-top: 1px solid var(--border-color-base, #a2a9b1);
background-color: var(--background-color-neutral-subtle, #f8f9fa);
color: var(--color-base, #202122);
margin: 0 -8px;
padding: 4px 8px 0 8px;
}
.infranav--sidebar .infranav-heading a:hover {
background-color: var(--background-color-base, #fff);
color: var(--color-emphasized, #000);
}
.infranav--sidebar .infranav-section {
padding: 0 8px;
}
/* ── Shared list styles ──────────────────────────────────────────────────── */
.infranav .infranav-section ul { margin-top: unset !important; margin-bottom: 4px; }
.infranav .infranav-section li { margin: 1px 0; }
/* ── Dark mode ───────────────────────────────────────────────────────────── */
@media screen {
html.skin-theme-clientpref-night .infranav--portal .infranav-title,
html.skin-theme-clientpref-night .infranav--sidebar .infranav-title { background: #1a3a5c; }
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .infranav--portal .infranav-title,
html.skin-theme-clientpref-os .infranav--sidebar .infranav-title { background: #1a3a5c; }
}