MediaWiki:Citizen.css: Difference between revisions
MediaWiki interface page
More actions
No edit summary |
No edit summary Tag: Manual revert |
||
| (48 intermediate revisions by the same user not shown) | |||
| Line 517: | Line 517: | ||
.bsg-dialogue { | .bsg-dialogue { | ||
display: flow-root; | |||
border-left: 3px solid var(--yellow-dark); | border-left: 3px solid var(--yellow-dark); | ||
background-color: var(--background2); | background-color: var(--background2); | ||
| Line 612: | Line 612: | ||
color: var(--grey); | color: var(--grey); | ||
} | } | ||
/* ============================================ | /* ============================================ | ||
GENEALOGY TREE STYLING | GENEALOGY TREE STYLING - FINAL VERSION | ||
============================================ */ | ============================================ */ | ||
/* | /* Increase spacing between flowchart elements */ | ||
.ext-mermaid .edgePath { | |||
margin: 50px !important; | |||
} | |||
/* Add padding around nodes to prevent overlap */ | |||
.ext-mermaid .node { | |||
padding: 20px !important; | |||
} | |||
/* Increase SVG viewBox to spread nodes */ | |||
.ext-mermaid .flowchart { | |||
transform: scale(1.5); | |||
transform-origin: top center; | |||
} | |||
/* Specifically target flowchart nodes */ | |||
.ext-mermaid .flowchart .node rect { | |||
margin: 30px !important; | |||
} | |||
/* Reset any clip-path */ | |||
.ext-mermaid .node rect { | .ext-mermaid .node rect { | ||
clip-path: none !important; | |||
} | } | ||
/* | /* Force rect and foreignObject to match exactly */ | ||
.ext-mermaid .node > rect.basic.label-container { | |||
. | width: 140px !important; | ||
height: 150px !important; | |||
x: -70px !important; | |||
y: -75px !important; | |||
fill: var(--background-color-dp-08, #2a2a2a) !important; | fill: var(--background-color-dp-08, #2a2a2a) !important; | ||
stroke: var(--border-color-base, # | stroke: var(--border-color-base, #72777d) !important; | ||
stroke-width: 2px !important; | stroke-width: 2px !important; | ||
rx: 4px !important; | rx: 4px !important; | ||
| Line 634: | Line 655: | ||
} | } | ||
/* | /* Hide any duplicate/background rects */ | ||
.ext-mermaid .node rect:not(.label-container) { | |||
display: none !important; | |||
} | |||
/* Align label with rect */ | |||
.ext-mermaid .label { | |||
transform: translate(-70px, -75px) !important; | |||
} | |||
.ext-mermaid .label foreignObject { | |||
width: 140px !important; | |||
height: 150px !important; | |||
} | |||
.ext-mermaid .label rect { | |||
display: none !important; | |||
} | |||
/* Node label container */ | |||
.ext-mermaid .nodeLabel { | .ext-mermaid .nodeLabel { | ||
width: 100% !important; | |||
height: 100% !important; | |||
display: flex !important; | |||
flex-direction: column !important; | |||
align-items: center !important; | |||
justify-content: center !important; | |||
padding: 0 !important; | |||
margin: 0 !important; | |||
} | |||
/* Square images with cut corners */ | |||
.ext-mermaid .nodeLabel img { | |||
width: 100px !important; | |||
height: 100px !important; | |||
border-radius: 0 !important; | |||
object-fit: cover !important; | |||
object-position: top !important; | |||
/* border: 2px solid var(--border-color-base,#72777d) !important; */ | |||
box-shadow: 0 2px 8px rgba(0,0,0,0.5) !important; | |||
display: block !important; | |||
/* margin: 0 auto 8px auto !important; */ | |||
clip-path: polygon(0 6px,6px 0,calc(100% - 6px) 0,100% 6px,100% calc(100% - 6px),calc(100% - 6px) 100%,6px 100%,0 calc(100% - 6px)) !important; | |||
} | |||
/* Text styling */ | |||
.ext-mermaid .nodeLabel, | |||
.ext-mermaid .nodeLabel span { | |||
color: var(--color-base, #eaecf0) !important; | color: var(--color-base, #eaecf0) !important; | ||
fill: var(--color-base, #eaecf0) !important; | fill: var(--color-base, #eaecf0) !important; | ||
font-family: var(--font-family-base, sans-serif) !important; | font-family: var(--font-family-base, sans-serif) !important; | ||
font-size: 14px !important; | font-size: 14px !important; | ||
line-height: | text-align: center !important; | ||
white-space: normal !important; | |||
word-wrap: break-word !important; | |||
line-height: 0.9 !important; | |||
} | } | ||
/* | /* Connection lines */ | ||
.ext-mermaid .edgePath .path, | |||
.ext-mermaid . | .ext-mermaid .flowchart-link { | ||
stroke: var(--color-base, #c8ccd1) !important; | |||
stroke-width: 2.5px !important; | |||
} | } | ||
/* | /* Dotted lines */ | ||
.ext-mermaid .edge-pattern-dotted .path { | |||
stroke: var(--color-subtle, #a2a9b1) !important; | |||
stroke: var(- | stroke-width: 2.5px !important; | ||
stroke-width: | stroke-dasharray: 5, 5 !important; | ||
} | } | ||
/* | /* Junction diamonds */ | ||
.ext-mermaid .node polygon { | .ext-mermaid .node polygon { | ||
fill: var(--background-color-dp-08, #2a2a2a) !important; | fill: var(--background-color-dp-08, #2a2a2a) !important; | ||
stroke: var(--border-color-base, # | stroke: var(--border-color-base, #72777d) !important; | ||
stroke-width: 2px !important; | stroke-width: 2px !important; | ||
} | } | ||
/* | /* Marriage symbols - CENTER INSIDE DIAMOND */ | ||
.ext-mermaid g[id*="GROUP"] .label { | |||
.ext-mermaid | transform: translate(0, 0) !important; | ||
} | |||
/* Fix marriage symbol - make foreignObject larger */ | |||
.ext-mermaid g[id*="GROUP"] .label foreignObject { | |||
x: -10px !important; | |||
y: -15px !important; | |||
width: 20px !important; | |||
height: 30px !important; | |||
text-align: center !important; | |||
overflow: visible !important; | |||
} | } | ||
/* Container | .ext-mermaid g[id*="GROUP"] .nodeLabel { | ||
font-size: 20px !important; | |||
fill: var(--color-base, #eaecf0) !important; | |||
display: block !important; | |||
text-align: center !important; | |||
line-height: 1 !important; | |||
overflow: visible !important; | |||
} | |||
/* Container - FIX EMPTY SPACE */ | |||
.ext-mermaid { | .ext-mermaid { | ||
padding: 0 !important; | |||
border-radius: 4px !important; | |||
overflow: visible !important; | |||
width: fit-content !important; | |||
margin: 20px auto !important; | |||
} | } | ||
/* | /* Fix cropping - add padding to SVG viewBox */ | ||
.ext-mermaid svg { | .ext-mermaid svg { | ||
max-width: | max-width: 95% !important; | ||
min-height: 1200px !important; | |||
height: auto !important; | height: auto !important; | ||
display: block !important; | |||
overflow: visible !important; | |||
} | |||
/* Hover */ | |||
.ext-mermaid .node.clickable:hover rect.label-container { | |||
fill: var(--background-color-dp-12, #3a3a3a) !important; | |||
stroke: var(--color-primary, #3366cc) !important; | |||
} | |||
.ext-mermaid .node.clickable:hover img { | |||
border-color: var(--color-primary, #3366cc) !important; | |||
} | |||
/* Only apply padding to nodeLabel elements that contain images */ | |||
.ext-mermaid .nodeLabel:has(img) { | |||
padding-top: 10px !important; | |||
} | |||
/* deals with nodeLabels inside mermaid junction points for symbols */ | |||
span.nodeInnerLabel { | |||
position: absolute; | |||
top: 50%; | |||
left: 50%; | |||
transform: translate(-50%, -50%); | |||
} | |||
/** | |||
* BattlestarWiki — Responsive Main Page styles | |||
* Append to MediaWiki:Citizen.css | |||
* | |||
* All colors use variables defined in Citizen.css / skin theme. | |||
* Adapts automatically to dark / light / black Citizen themes. | |||
* Only hardcoded colors are per-series portal stripe accents. | |||
* | |||
* Breakpoints: | |||
* Desktop ≥ 1080px | |||
* Tablet 640px – 1079px | |||
* Mobile < 640px | |||
* XSmall < 380px | |||
*/ | |||
/* ── Reset ───────────────────────────────────────────────────────── */ | |||
.bsw-main-page *, | |||
.bsw-main-page *::before, | |||
.bsw-main-page *::after { | |||
box-sizing: border-box; | |||
} | |||
/* ── Wrapper ─────────────────────────────────────────────────────── */ | |||
.bsw-main-page { | |||
/* Pull edge-to-edge inside Citizen's content padding */ | |||
margin: -1rem; | |||
padding: 0; | |||
background: var(--background3); | |||
color: var(--color-base); | |||
font-size: 0.875rem; | |||
line-height: 1.5; | |||
} | |||
/* ── Shared section header bar ───────────────────────────────────── */ | |||
.bsw-card-hd, | |||
.bsw-votd-hd, | |||
.bsw-portals-label { | |||
background: var(--color-surface-2--active); | |||
color: var(--color-primary); | |||
border-bottom: 1px solid var(--border-color-base); | |||
font-size: 0.6875rem; | |||
font-weight: 600; | |||
text-transform: uppercase; | |||
letter-spacing: 0.08em; | |||
} | |||
.bsw-card-hd, | |||
.bsw-votd-hd { | |||
padding: 0.3125rem 0.75rem; | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
flex-wrap: wrap; | |||
gap: 4px; | |||
} | |||
.bsw-card-hd a, | |||
.bsw-votd-hd a { | |||
font-size: 0.6875rem; | |||
font-weight: 400; | |||
color: var(--color-link); | |||
text-transform: none; | |||
letter-spacing: 0; | |||
text-decoration: none; | |||
} | |||
.bsw-card-hd a:hover, | |||
.bsw-votd-hd a:hover { | |||
color: var(--color-link--hover); | |||
} | |||
/* ── Generic card ────────────────────────────────────────────────── */ | |||
/* Cards and clip-path elements use a wrapper padding gap for the border effect. | |||
The .bsw-col-left/.bsw-col-right background is var(--background3), | |||
which is slightly different from card var(--background2), creating a | |||
natural visual edge at the cut-corner without any border property. */ | |||
.bsw-card { | |||
background: var(--background2); | |||
clip-path: polygon( | |||
0 10px, 10px 0, | |||
calc(100% - 8px) 0, 100% 10px, | |||
100% calc(100% - 10px), calc(100% - 10px) 100%, | |||
10px 100%, 0 calc(100% - 10px) | |||
); | |||
} | |||
.bsw-card-body { | |||
padding: 0.625rem 0.75rem; | |||
} | |||
/* ── Welcome band ────────────────────────────────────────────────── */ | |||
.bsw-welcome { | |||
display: flex; | |||
align-items: center; | |||
gap: 0.875rem; | |||
padding: 0.625rem 1rem; | |||
background: var(--background2); | |||
border-bottom: 1px solid var(--border-color-base); | |||
} | |||
.bsw-welcome-logo img { | |||
display: block; | |||
width: 40px; | |||
height: 40px; | |||
clip-path: none !important; | |||
} | |||
.bsw-welcome-text { | |||
flex: 1; | |||
min-width: 0; | |||
} | |||
.bsw-welcome-title { | |||
font-size: 1rem; | |||
font-weight: 700; | |||
color: var(--color-primary); | |||
line-height: 1.2; | |||
letter-spacing: 0.02em; | |||
} | |||
.bsw-welcome-desc { | |||
font-size: 0.75rem; | |||
color: var(--color-base--subtle); | |||
margin-top: 1px; | |||
white-space: nowrap; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
} | |||
.bsw-welcome-links { | |||
display: flex; | |||
gap: 0.5rem; | |||
flex-shrink: 0; | |||
} | |||
.bsw-welcome-links a { | |||
font-size: 0.6875rem; | |||
color: var(--color-link); | |||
padding: 2px 8px; | |||
border: 1px solid var(--border-color-base--lighter); | |||
border-radius: 10px; | |||
text-decoration: none; | |||
white-space: nowrap; | |||
transition: background 0.15s; | |||
} | |||
.bsw-welcome-links a:hover { | |||
background: var(--background-color-quiet--hover); | |||
color: var(--color-link--hover); | |||
text-decoration: none; | |||
} | |||
@media ( max-width: 640px ) { | |||
.bsw-welcome-links { display: none; } | |||
.bsw-welcome-desc { display: none; } | |||
} | |||
/* ── Hero slideshow ──────────────────────────────────────────────── */ | |||
.bsw-hero { | |||
position: relative; | |||
height: 460px; | |||
overflow: hidden; | |||
background: var(--background3); | |||
border-bottom: 1px solid var(--border-color-base); | |||
} | |||
.bsw-slide { | |||
position: absolute; | |||
inset: 0; | |||
opacity: 0; | |||
transition: opacity 0.8s ease; | |||
display: flex; | |||
align-items: flex-end; | |||
} | |||
.bsw-slide.bsw-active { opacity: 1; } | |||
.bsw-slide-overlay { | |||
position: absolute; | |||
inset: 0; | |||
background: linear-gradient( | |||
to top, | |||
var(--background3) 0%, | |||
rgba(0,0,0,0.35) 55%, | |||
transparent 100% | |||
); | |||
z-index: 1; | |||
} | |||
/* Background image container */ | |||
.bsw-slide-bg { | |||
position: absolute; | |||
inset: 0; | |||
overflow: hidden; | |||
} | |||
/* Blurred background layer — fills full width, heavily blurred and darkened */ | |||
.bsw-slide-bg-blur { | |||
position: absolute; | |||
inset: -20px; /* bleed beyond edges so blur doesn't show hard border */ | |||
width: calc(100% + 40px); | |||
height: calc(100% + 40px); | |||
object-fit: cover; | |||
object-position: center center; | |||
filter: blur(24px) brightness(0.45) saturate(1.4); | |||
display: block; | |||
clip-path: none !important; | |||
transform: scale(1.05); /* slight zoom prevents blur edge artifacts */ | |||
} | |||
/* Sharp centered foreground layer — natural size, centered */ | |||
.bsw-slide-bg-img { | |||
position: absolute; | |||
inset: 0; | |||
width: 100%; | |||
height: 100%; | |||
object-fit: contain; /* show full image, no cropping */ | |||
object-position: center center; | |||
display: block; | |||
clip-path: none !important; | |||
} | |||
.bsw-slide-content { | |||
position: relative; | |||
z-index: 2; | |||
padding: 1rem 1.25rem; | |||
width: 100%; | |||
} | |||
.bsw-slide-badge { | |||
display: inline-flex; | |||
align-items: center; | |||
gap: 5px; | |||
background: var(--background-color-quiet--hover); | |||
border: 1px solid var(--border-color-base--lighter); | |||
border-radius: 12px; | |||
padding: 2px 9px; | |||
margin-bottom: 0.375rem; | |||
} | |||
.bsw-slide-badge-dot { | |||
width: 6px; | |||
height: 6px; | |||
border-radius: 50%; | |||
background: var(--color-primary); | |||
flex-shrink: 0; | |||
} | |||
.bsw-slide-badge span { | |||
font-size: 0.6875rem; | |||
color: var(--color-primary--hover); | |||
text-transform: uppercase; | |||
letter-spacing: 0.08em; | |||
} | |||
.bsw-slide-title { | |||
font-size: 1.375rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
margin-bottom: 0.25rem; | |||
line-height: 1.2; | |||
} | |||
.bsw-slide-title a { | |||
color: var(--color-base); | |||
text-decoration: none; | |||
} | |||
.bsw-slide-title a:hover { | |||
color: var(--color-primary--hover); | |||
} | |||
.bsw-slide-desc { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
max-width: 560px; | |||
line-height: 1.55; | |||
} | |||
/* Hero nav dots */ | |||
.bsw-hero-dots { | |||
position: absolute; | |||
top: 0.75rem; | |||
right: 0.75rem; | |||
display: flex; | |||
gap: 5px; | |||
z-index: 10; | |||
} | |||
.bsw-hero-dot { | |||
width: 7px; | |||
height: 7px; | |||
border-radius: 50%; | |||
background: var(--background-color-icon); | |||
cursor: pointer; | |||
transition: background 0.2s; | |||
display: inline-block; | |||
vertical-align: middle; | |||
} | |||
.bsw-hero-dot.bsw-active { | |||
background: var(--color-primary); | |||
} | |||
.bsw-hero-nav { | |||
position: absolute; | |||
bottom: 0.75rem; | |||
right: 0.75rem; | |||
display: flex; | |||
gap: 5px; | |||
z-index: 10; | |||
} | |||
.bsw-hero-btn { | |||
width: 24px; | |||
height: 24px; | |||
border-radius: 50%; | |||
background: var(--background-color-quiet--hover); | |||
border: 1px solid var(--border-color-base--lighter); | |||
color: var(--color-primary); | |||
font-size: 0.8125rem; | |||
cursor: pointer; | |||
display: inline-flex; | |||
align-items: center; | |||
justify-content: center; | |||
line-height: 1; | |||
transition: background 0.15s; | |||
user-select: none; | |||
} | |||
.bsw-hero-btn:hover { | |||
background: var(--background-color-quiet--active); | |||
color: var(--color-primary--hover); | |||
} | |||
/* ── Portals bar ─────────────────────────────────────────────────── */ | |||
.bsw-portals { | |||
background: var(--background2); | |||
border-bottom: 1px solid var(--border-color-base); | |||
padding: 0.625rem 0.875rem; | |||
} | |||
.bsw-portals-label { | |||
padding: 0.25rem 0; | |||
margin-bottom: 0.5rem; | |||
text-align: center; | |||
border-bottom: none; | |||
background: transparent; | |||
} | |||
.bsw-portals-grid { | |||
display: grid; | |||
grid-template-columns: repeat(5, 1fr); | |||
gap: 6px; | |||
} | |||
.bsw-portal { | |||
background: var(--background3); | |||
padding: 0.5rem 0.375rem; | |||
text-align: center; | |||
text-decoration: none; | |||
position: relative; | |||
overflow: hidden; | |||
transition: background 0.15s; | |||
display: block; | |||
clip-path: polygon( | |||
0 8px, 8px 0, | |||
calc(100% - 8px) 0, 100% 8px, | |||
100% calc(100% - 8px), calc(100% - 8px) 100%, | |||
8px 100%, 0 calc(100% - 8px) | |||
); | |||
} | |||
.bsw-portal:hover { | |||
background: var(--color-surface-2--hover); | |||
text-decoration: none; | |||
} | |||
.bsw-portal-stripe { | |||
height: 2px; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
} | |||
.bsw-portal-icon { | |||
font-size: 1.125rem; | |||
display: block; | |||
margin-bottom: 0.25rem; | |||
line-height: 1; | |||
} | |||
.bsw-portal-name { | |||
font-size: 0.6875rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
line-height: 1.25; | |||
display: block; | |||
} | |||
.bsw-portal-sub { | |||
font-size: 0.625rem; | |||
color: var(--color-base--subtle); | |||
display: block; | |||
margin-top: 1px; | |||
} | |||
/* ── Video of the Day band ───────────────────────────────────────── */ | |||
.bsw-votd-band { | |||
background: var(--background2); | |||
border-bottom: 1px solid var(--border-color-base); | |||
} | |||
.bsw-votd-hd-inner { | |||
display: flex; | |||
align-items: center; | |||
gap: 6px; | |||
} | |||
.bsw-votd-hd-dot { | |||
width: 6px; | |||
height: 6px; | |||
border-radius: 50%; | |||
background: var(--color-primary); | |||
flex-shrink: 0; | |||
} | |||
.bsw-votd-inner { | |||
display: grid; | |||
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); | |||
} | |||
.bsw-votd-player { | |||
background: var(--background3); | |||
border-right: 1px solid var(--border-color-base); | |||
} | |||
.bsw-votd-poster { | |||
width: 100%; | |||
aspect-ratio: 16 / 9; | |||
overflow: hidden; | |||
cursor: pointer; | |||
display: block; | |||
position: relative; | |||
background: var(--background3); | |||
} | |||
.bsw-votd-poster img { | |||
width: 100%; | |||
height: 100%; | |||
object-fit: cover; | |||
display: block; | |||
} | |||
.bsw-votd-poster-overlay { | |||
position: absolute; | |||
inset: 0; | |||
background: var(--background-color-quiet--hover); | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
transition: background 0.15s; | |||
} | |||
.bsw-votd-poster:hover .bsw-votd-poster-overlay { | |||
background: var(--background-color-quiet--active); | |||
} | |||
.bsw-votd-play { | |||
width: 52px; | |||
height: 52px; | |||
border-radius: 50%; | |||
background: var(--background-color-primary--hover); | |||
border: 2px solid var(--border-color-base--lighter); | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
transition: background 0.15s, transform 0.1s; | |||
} | |||
.bsw-votd-poster:hover .bsw-votd-play { | |||
background: var(--background-color-primary--active); | |||
transform: scale(1.06); | |||
} | |||
.bsw-votd-play-arrow { | |||
width: 0; | |||
height: 0; | |||
border-top: 9px solid transparent; | |||
border-bottom: 9px solid transparent; | |||
border-left: 16px solid var(--color-base); | |||
margin-left: 4px; | |||
} | |||
.bsw-votd-info { | |||
padding: 0.75rem 0.875rem; | |||
display: flex; | |||
flex-direction: column; | |||
gap: 0.375rem; | |||
background: var(--background2); | |||
} | |||
.bsw-votd-title { | |||
font-size: 0.9375rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
line-height: 1.3; | |||
} | |||
.bsw-votd-meta { | |||
font-size: 0.6875rem; | |||
color: var(--color-base--subtle); | |||
} | |||
.bsw-votd-desc { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
line-height: 1.65; | |||
flex: 1; | |||
} | |||
.bsw-votd-desc a { | |||
color: var(--color-link); | |||
} | |||
.bsw-votd-desc a:hover { | |||
color: var(--color-link--hover); | |||
} | |||
.bsw-votd-tags { | |||
display: flex; | |||
flex-wrap: wrap; | |||
gap: 3px; | |||
} | |||
.bsw-votd-tag { | |||
font-size: 0.625rem; | |||
padding: 1px 7px; | |||
border-radius: 10px; | |||
border: 1px solid var(--border-color-base--lighter); | |||
color: var(--color-base--subtle); | |||
background: var(--background3); | |||
} | |||
.bsw-votd-actions { | |||
display: flex; | |||
align-items: center; | |||
gap: 0.625rem; | |||
flex-wrap: wrap; | |||
padding-top: 0.375rem; | |||
border-top: 1px solid var(--border-color-base); | |||
} | |||
.bsw-votd-watch { | |||
display: inline-block; | |||
padding: 0.3125rem 0.875rem; | |||
background: var(--background-color-primary--hover); | |||
color: var(--color-base); | |||
clip-path: polygon( | |||
0 5px, 5px 0, | |||
calc(100% - 5px) 0, 100% 5px, | |||
100% calc(100% - 5px), calc(100% - 5px) 100%, | |||
5px 100%, 0 calc(100% - 5px) | |||
); | |||
font-size: 0.8125rem; | |||
font-weight: 500; | |||
text-decoration: none; | |||
transition: background 0.15s; | |||
} | |||
.bsw-votd-watch:hover { | |||
background: var(--background-color-primary--active); | |||
color: var(--color-base); | |||
text-decoration: none; | |||
} | |||
.bsw-votd-archive { | |||
font-size: 0.75rem; | |||
color: var(--color-link); | |||
text-decoration: none; | |||
} | |||
.bsw-votd-archive:hover { | |||
color: var(--color-link--hover); | |||
} | |||
.bsw-votd-stats { | |||
font-size: 0.6875rem; | |||
color: var(--color-base--subtle); | |||
} | |||
/* ── Loading / error states ──────────────────────────────────────── */ | |||
.bsw-loading, | |||
.bsw-error { | |||
padding: 1.5rem 1rem; | |||
text-align: center; | |||
color: var(--color-base--subtle); | |||
font-size: 0.8125rem; | |||
} | } | ||
/* | .bsw-spinner { | ||
. | width: 22px; | ||
text-align: center | height: 22px; | ||
display: flex | border: 2px solid var(--border-color-base--lighter); | ||
flex-direction: column | border-top-color: var(--color-primary); | ||
align-items: center | border-radius: 50%; | ||
animation: bsw-spin 0.8s linear infinite; | |||
margin: 0 auto 0.75rem; | |||
} | |||
@keyframes bsw-spin { to { transform: rotate(360deg); } } | |||
.bsw-error { color: var(--red, #d44); } | |||
/* ── Page body grid ──────────────────────────────────────────────── */ | |||
.bsw-body { | |||
padding: 0.75rem; | |||
display: grid; | |||
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); | |||
gap: 0.75rem; | |||
align-items: start; | |||
background: var(--background3); | |||
} | |||
.bsw-col-left, | |||
.bsw-col-right { | |||
display: flex; | |||
flex-direction: column; | |||
gap: 0.75rem; | |||
} | |||
/* ── Featured article ────────────────────────────────────────────── */ | |||
#bsw-featured-inner, | |||
#bsw-newest-inner { | |||
display: flex; | |||
gap: 0.75rem; | |||
align-items: flex-start; | |||
overflow: hidden; | |||
} | |||
.bsw-fa-thumb { | |||
width: 90px; | |||
height: 110px; | |||
object-fit: cover; | |||
object-position: center top; | |||
flex-shrink: 0; | |||
background: var(--background3); | |||
display: block; | |||
margin-top: 2px; | |||
margin-left: 2px; | |||
clip-path: polygon( | |||
0 8px, 8px 0, | |||
calc(100% - 8px) 0, 100% 8px, | |||
100% calc(100% - 8px), calc(100% - 8px) 100%, | |||
8px 100%, 0 calc(100% - 8px) | |||
); | |||
} | |||
.bsw-fa-thumb-ph { | |||
width: 80px; | |||
height: 80px; | |||
flex-shrink: 0; | |||
background: var(--background3); | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
font-size: 1.75rem; | |||
clip-path: polygon( | |||
0 8px, 8px 0, | |||
calc(100% - 8px) 0, 100% 8px, | |||
100% calc(100% - 8px), calc(100% - 8px) 100%, | |||
8px 100%, 0 calc(100% - 8px) | |||
); | |||
} | |||
.bsw-newest-date { | |||
font-size: 0.6875rem; | |||
color: var(--color-base--subtle); | |||
margin-bottom: 0.25rem; | |||
} | |||
.bsw-fa-title { | |||
font-size: 0.9375rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
margin-bottom: 0.25rem; | |||
line-height: 1.3; | |||
} | |||
.bsw-fa-title a { | |||
color: var(--color-link); | |||
text-decoration: none; | |||
} | |||
.bsw-fa-title a:hover { color: var(--color-link--hover); } | |||
.bsw-fa-extract { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
line-height: 1.65; | |||
} | |||
.bsw-fa-extract p { margin: 0 0 0.25rem; } | |||
.bsw-fa-extract p:last-child { margin-bottom: 0; } | |||
.bsw-fa-extract a { color: var(--color-link); } | |||
.bsw-fa-extract a:hover { color: var(--color-link--hover); } | |||
/* ── Photo Lab ───────────────────────────────────────────────────── */ | |||
.bsw-photo-img { | |||
display: block; | |||
width: 100%; | |||
max-height: 220px; | |||
object-fit: cover; | |||
clip-path: none; /* override global image clip-path on main page images */ | |||
} | |||
.bsw-photo-nav { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
padding: 0.375rem 0.75rem; | |||
border-top: 1px solid var(--border-color-base); | |||
font-size: 0.75rem; | |||
background: var(--background2); | |||
} | |||
.bsw-photo-nav a { | |||
color: var(--color-link); | |||
text-decoration: none; | |||
} | |||
.bsw-photo-nav a:hover { color: var(--color-link--hover); } | |||
.bsw-photo-caption { | |||
color: var(--color-base--subtle); | |||
font-size: 0.75rem; | |||
text-align: center; | |||
flex: 1; | |||
padding: 0 0.5rem; | |||
} | |||
/* ── Did you know ────────────────────────────────────────────────── */ | |||
.bsw-dyk { | |||
list-style: none; | |||
display: flex; | |||
flex-direction: column; | |||
gap: 0.5rem; | |||
} | |||
.bsw-dyk li { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
padding-left: 1rem; | |||
line-height: 1.65; | |||
} | |||
.bsw-dyk li strong { color: var(--color-base); font-weight: 600; } | |||
.bsw-dyk li a { color: var(--color-link); } | |||
.bsw-dyk li a:hover { color: var(--color-link--hover); } | |||
/* ── Recent changes tabs ─────────────────────────────────────────── */ | |||
.bsw-wiki-tabs { | |||
display: flex; | |||
gap: 3px; | |||
flex-wrap: wrap; | |||
} | |||
.bsw-wtab { | |||
font-size: 0.6875rem; | |||
padding: 2px 8px; | |||
border-radius: 10px; | |||
border: 1px solid var(--border-color-base--lighter); | |||
background: transparent; | |||
cursor: pointer; | |||
color: var(--color-base--subtle); | |||
transition: all 0.15s; | |||
display: inline-block; | |||
user-select: none; | |||
} | |||
.bsw-wtab.bsw-active { | |||
background: var(--background-color-primary--hover); | |||
border-color: var(--border-color-base); | |||
color: var(--color-base); | |||
} | |||
.bsw-wtab:hover:not(.bsw-active) { | |||
background: var(--background-color-quiet--hover); | |||
color: var(--color-base); | |||
} | |||
/* Card header link — span used when href is '#' (JS updates to real URL) */ | |||
.bsw-card-hd-link { | |||
font-size: 0.6875rem; | |||
font-weight: 400; | |||
color: var(--color-link); | |||
cursor: pointer; | |||
text-transform: none; | |||
letter-spacing: 0; | |||
} | |||
/* Stat links rendered as spans wrapping wikitext links */ | |||
.bsw-stat-link { | |||
display: block; | |||
text-align: center; | |||
font-size: 0.6875rem; | |||
padding: 0.3125rem; | |||
background: var(--background3); | |||
clip-path: polygon(0 5px,5px 0,calc(100% - 5px) 0,100% 5px,100% calc(100% - 5px),calc(100% - 5px) 100%,5px 100%,0 calc(100% - 5px)); | |||
color: var(--color-link); | |||
transition: background 0.15s; | |||
} | |||
.bsw-stat-links a:hover .bsw-stat-link { | |||
background: var(--background-color-quiet--hover); | |||
color: var(--color-link--hover); | |||
} | |||
/* Portal links — wikitext link wraps a div.bsw-portal */ | |||
.bsw-portals-grid a { | |||
text-decoration: none; | |||
} | |||
.bsw-portals-grid a:hover .bsw-portal { | |||
border-color: var(--border-color-base--darker); | |||
background: var(--color-surface-2--hover); | |||
} | |||
.bsw-recent { | |||
list-style: none; | |||
display: flex; | |||
flex-direction: column; | |||
gap: 0.3125rem; | |||
} | |||
.bsw-recent li { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: baseline; | |||
font-size: 0.8125rem; | |||
} | |||
.bsw-recent li a { | |||
color: var(--color-link); | |||
text-decoration: none; | |||
} | |||
.bsw-recent li a:hover { color: var(--color-link--hover); } | |||
.bsw-recent-time { | |||
font-size: 0.6875rem; | |||
color: var(--color-base--subtle); | |||
flex-shrink: 0; | |||
margin-left: 0.5rem; | |||
} | |||
/* ── Statistics ──────────────────────────────────────────────────── */ | |||
.bsw-stats-grid { | |||
display: grid; | |||
grid-template-columns: repeat(3, 1fr); | |||
gap: 5px; | |||
margin-bottom: 0.5rem; | |||
} | |||
.bsw-stat { | |||
background: var(--background3); | |||
clip-path: polygon( | |||
0 5px, 5px 0, | |||
calc(100% - 5px) 0, 100% 5px, | |||
100% calc(100% - 5px), calc(100% - 5px) 100%, | |||
5px 100%, 0 calc(100% - 5px) | |||
); | |||
padding: 0.4375rem 0.25rem; | |||
text-align: center; | |||
} | |||
.bsw-stat-n { | |||
font-size: 1.0625rem; | |||
font-weight: 600; | |||
color: var(--color-primary); | |||
line-height: 1; | |||
} | |||
.bsw-stat-l { | |||
font-size: 0.625rem; | |||
color: var(--color-base--subtle); | |||
text-transform: uppercase; | |||
letter-spacing: 0.04em; | |||
margin-top: 2px; | |||
} | |||
.bsw-stat-links { | |||
display: flex; | |||
gap: 5px; | |||
} | |||
.bsw-stat-link:hover { | |||
background: var(--background-color-quiet--hover); | |||
color: var(--color-link--hover); | |||
text-decoration: none; | |||
} | |||
/* ── On this day ─────────────────────────────────────────────────── */ | |||
.bsw-otd-date { | |||
font-size: 0.6875rem; | |||
color: var(--color-base--subtle); | |||
text-transform: uppercase; | |||
letter-spacing: 0.06em; | |||
margin-bottom: 0.25rem; | |||
} | |||
.bsw-otd-title { | |||
font-size: 0.875rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
margin-bottom: 0.25rem; | |||
} | |||
.bsw-otd-body { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
line-height: 1.65; | |||
} | |||
.bsw-otd-body a { color: var(--color-link); } | |||
.bsw-otd-body a:hover { color: var(--color-link--hover); } | |||
/* ── Wiki news ───────────────────────────────────────────────────── */ | |||
.bsw-news { | |||
list-style: none; | |||
display: flex; | |||
flex-direction: column; | |||
gap: 0.5rem; | |||
} | |||
.bsw-news li { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
line-height: 1.55; | |||
} | |||
.bsw-news li strong { color: var(--color-base); font-weight: 600; } | |||
.bsw-news-date { font-size: 0.6875rem; color: var(--color-base--subtle); display: block; margin-top: 1px; opacity: 0.6; } | |||
/* ── Newest article ──────────────────────────────────────────────── */ | |||
.bsw-newest-title { | |||
font-size: 0.875rem; | |||
font-weight: 600; | |||
color: var(--color-base); | |||
margin-bottom: 0.25rem; | |||
line-height: 1.3; | |||
} | |||
.bsw-newest-title a { color: var(--color-link); text-decoration: none; } | |||
.bsw-newest-title a:hover { color: var(--color-link--hover); } | |||
.bsw-newest-body { | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
line-height: 1.65; | |||
margin-bottom: 0.375rem; | |||
} | |||
/* ── Sister projects ─────────────────────────────────────────────── */ | |||
.bsw-sister-link { | |||
display: block; | |||
text-align: left; | |||
padding: 0.375rem 0.625rem; | |||
background: var(--background3); | |||
clip-path: polygon( | |||
0 5px, 5px 0, | |||
calc(100% - 5px) 0, 100% 5px, | |||
100% calc(100% - 5px), calc(100% - 5px) 100%, | |||
5px 100%, 0 calc(100% - 5px) | |||
); | |||
color: var(--color-link); | |||
font-size: 0.8125rem; | |||
text-decoration: none; | |||
transition: background 0.15s; | |||
} | |||
.bsw-sister-link:hover { | |||
background: var(--background-color-quiet--hover); | |||
color: var(--color-link--hover); | |||
text-decoration: none; | |||
} | |||
/* ── Interwiki bar ───────────────────────────────────────────────── */ | |||
.bsw-interwiki { | |||
display: flex; | |||
align-items: center; | |||
flex-wrap: wrap; | |||
gap: 5px; | |||
padding: 0.5rem 0.75rem; | |||
background: var(--background2); | |||
border-top: 1px solid var(--border-color-base); | |||
} | |||
.bsw-iw { | |||
display: inline-flex; | |||
align-items: center; | |||
gap: 4px; | |||
background: var(--background3); | |||
clip-path: polygon( | |||
0 5px, 5px 0, | |||
calc(100% - 5px) 0, 100% 5px, | |||
100% calc(100% - 5px), calc(100% - 5px) 100%, | |||
5px 100%, 0 calc(100% - 5px) | |||
); | |||
padding: 3px 9px; | |||
font-size: 0.8125rem; | |||
color: var(--color-base); | |||
text-decoration: none; | |||
transition: background 0.15s; | |||
} | |||
.bsw-iw:hover { | |||
background: var(--background-color-quiet--hover); | |||
text-decoration: none; | |||
} | |||
.bsw-iw a { color: var(--color-link); text-decoration: none; } | |||
.bsw-iw a:hover { color: var(--color-link--hover); } | |||
/* ── Tagline ─────────────────────────────────────────────────────── */ | |||
.bsw-tagline { | |||
text-align: center; | |||
font-size: 0.8125rem; | |||
color: var(--color-base--subtle); | |||
padding: 0.625rem 0.75rem; | |||
border-top: 1px solid var(--border-color-base); | |||
background: var(--background2); | |||
line-height: 1.7; | |||
} | |||
.bsw-tagline strong { color: var(--color-primary); } | |||
/* ══════════════════════════════════════════ | |||
RESPONSIVE BREAKPOINTS | |||
══════════════════════════════════════════ */ | |||
/* ── Tablet (640px – 1079px) ─────────────────────────────────────── */ | |||
@media screen and (max-width: 1079px) { | |||
.bsw-hero { height: 360px; } | |||
.bsw-slide-title { font-size: 1.1875rem; } | |||
} | |||
/* ── Mobile (< 640px) ────────────────────────────────────────────── */ | |||
@media screen and (max-width: 639px) { | |||
.bsw-main-page { margin: -0.5rem; } | |||
.bsw-hero { height: 280px; } | |||
.bsw-slide-title { font-size: 1rem; } | |||
.bsw-slide-desc { font-size: 0.75rem; } | |||
.bsw-slide-content { padding: 0.75rem; } | |||
/* Portals: 3-column on mobile */ | |||
.bsw-portals-grid { grid-template-columns: repeat(3, 1fr); } | |||
/* VotD: stack vertically */ | |||
.bsw-votd-inner { grid-template-columns: 1fr; } | |||
.bsw-votd-player { border-right: none; border-bottom: 1px solid var(--border-color-base); } | |||
/* Body: single column, left before right */ | |||
.bsw-body { grid-template-columns: 1fr; padding: 0.5rem; gap: 0.5rem; } | |||
.bsw-col-left { order: 1; } | |||
.bsw-col-right { order: 2; } | |||
/* Smaller featured thumbnail */ | |||
.bsw-fa-thumb, | |||
.bsw-fa-thumb-ph { width: 60px; height: 60px; } | |||
/* VotD play button */ | |||
.bsw-votd-play { width: 42px; height: 42px; } | |||
} | } | ||
/* | /* ── Very small (< 380px) ────────────────────────────────────────── */ | ||
@media screen and (max-width: 379px) { | |||
.bsw-portals-grid { grid-template-columns: repeat(2, 1fr); } | |||
.bsw-portal-sub { display: none; } | |||
.bsw-stats-grid { grid-template-columns: repeat(2, 1fr); } | |||
} | } | ||
Latest revision as of 03:13, 13 April 2026
/* All CSS here will be loaded for users of the Citizen skin */
@font-face {
font-family: Caprica;
font-style: normal;
src: url('https://en.battlestarwiki.org/resources/fonts/caprica.ttf') format('truetype'),
url('https://en.battlestarwiki.org/resources/fonts/caprica.otf') format('opentype');
}
#mw-header-container #p-banner,
#mw-header-container #personal h2,
#content h1,
#content h2,
#content h3,
#content h4,
#content h5,
#content h6,
#content #firstHeading,
.mw-logo-wordmark,
#header-pagetitle {
font-family: Caprica;
}
#content h1,
#content h2 {
font-variant: small-caps;
}
:root.skin-citizen-dark, :root.skin-theme-clientpref-night {
--text: #fff;
--background: #471919;
--background2: #330c0c; /* orig #000; */
--background3: #160807;
--background-dark: #f4a460;
--background-dark2: #d2691e;
--text-inverse: #018;
--grey: #ccc;
--grey-bright: #eee;
--grey-dark: #666;
--red: #d44;
--red-bright: #f55;
--red-dark: #900;
--orange: #ffa500;
--orange-bright: #ff4500;
--orange-dark: #ff8c00;
--yellow: #ffff00;
--yellow-bright: #ffffe0;
--yellow-dark: #ffd700;
--green: #3b7;
--green-bright: #4c8;
--green-dark: #396;
--blue: #08d;
--blue-bright: #2af;
--blue-dark: #069;
--color-link: #ffff00;
--color-link-red: #d44;
--color-link--hover: #ffffe0;
--link: #ffff00;
--link-red: #d44;
--font-size: 0.93em;
--color-primary__l: 60%;
--color-surface-0: hsl(4deg 52% 6%);
--color-surface-1: hsl(0deg 48% 19%);
--color-surface-2: hsl(0deg 48% 19%);
--color-surface-3: hsl(0deg 48% 19%);
--color-surface-4: hsl(0deg 48% 19%);
--background-color-primary--hover: hsl(55deg 79% 38%);
--background-color-primary--active: hsl(var(--color-primary__h),var(--color-primary__s),20%);
--color-surface-2--hover: hsl(0deg 53% 30%);
--color-surface-2--active: hsl(0deg 66% 28%);
--background-color-dp-00: #160807;
--background-color-dp-01: #160807;
--background-color-dp-02: #160807;
--background-color-dp-03: #160807;
--background-color-dp-04: #160807;
--background-color-dp-06: #160807;
--background-color-dp-08: #160807;
--background-color-dp-12: #160807;
--background-color-dp-16: #160807;
--background-color-dp-24: #160807;
--background-color-overlay: rgba(19,26,33,0.95);
--background-color-overlay--lighter: rgba(19,26,33,0.6);
--background-color-framed: #160807;
--background-color-framed--hover: #262c32;
--background-color-framed--active: #131a21;
--background-color-input: rgba(0,0,0,0.5);
--background-color-icon: rgba(255,255,255,0.6);
--background-color-icon--hover: rgba(255,255,255,0.8);
--background-color-icon--active: rgba(255,255,255,0.4);
--background-color-quiet--hover: rgba(255,255,255,0.07000000000000001);
--background-color-quiet--active: rgba(255,255,255,0.03);
--background-color-destructive: #b32424;
--background-color-warning: #ac6600;
--background-color-success: #14866d;
--color-base: #fff;
--color-base--emphasized: rgba(255,255,255,0.87);
--color-base--subtle: rgba(255,255,255,0.38);
--color-primary: #ffff00;
--color-primary--hover: #ffffe0;
--color-primary--active: #ffd700;
--color-link-new: #d44;
--color-link-new--hover: #f55;
--color-link-new--active: #900;
--opacity-icon-base--active: 0.4;
--border-color-base: #ffd700;
--border-color-base--lighter: #ffffe0;
--border-color-base--darker: #ffd700;
--border-color-input: rgba(255,255,255,0.05);
--border-color-input--hover: rgba(255,255,255,0.5);
}
.mw-footer {
background: var(--background-color-dp-00);
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
border-color: var(--green-dark);
background-color: var(--green-dark);
color: var(--link);
}
.editOptions, .ext-replacetext-searchoptions {
background-color: var(--background3);
color: #c8ccd1;
border: 1px solid var(--border-color-base);
border-top: 0;
padding: 1em 1em 1.5em 1em;
margin-bottom: 2em;
}
/* Page Triage */
#mwe-pt-toolbar {
background: var(--background);
}
.mwe-pt-tool-flyout {
position: absolute;
top: -12px;
width: 500px;
padding: 5px;
background-color: var(--background) !important;
text-align: left;
z-index: 2;
border-radius: 4px;
border: 1px solid var(--yellow-dark) !important;
box-shadow: 0 4px 8px rgba(0,0,0,0.4);
}
.mwe-pt-tool-content {
background-color: var(--background2) !important;
font-size: 0.8em;
/* border: var(--red-dark); */
padding: 6px;
}
/* Lingo Tooltips */
.qtip-content{
border: 1px var(--yellow) solid !important;
}
/* Drawer Menu */
#mw-drawer-header {
background-color: var(--background3);
}
#mw-drawer-menu {
background-color: var(--background2);
}
#ca-history > a:after {
background-image: linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2217%22 viewBox=%220 0 20 17%22%3E%3Ctitle%3E history %3C/title%3E%3Cg fill=%22%23000%22%3E %3Cpath d=%22M11.424 0C6.686 0 2.857 3.806 2.857 8.5H0l3.71 3.68.066.136L7.62 8.5H4.76c0-3.65 2.986-6.61 6.667-6.61 3.68 0 6.665 2.96 6.665 6.61 0 3.65-2.985 6.61-6.666 6.61a6.668 6.668 0 0 1-4.71-1.94l-1.35 1.337A8.553 8.553 0 0 0 11.426 17C16.16 17 20 13.194 20 8.5S16.162 0 11.424 0zm-1.037 5v4.524l3.904 2.298.66-1.1-3.192-1.877V5H10.39z%22/%3E %3C/g%3E%3C/svg%3E");
}
#ca-view > a:after {
background-image: linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3E article %3C/title%3E%3Cg fill=%22%23000%22%3E %3Cpath d=%22M5 1a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 3h5v1H5zm0 2h5v1H5zm0 2h5v1H5zm10 7H5v-1h10zm0-2H5v-1h10zm0-2H5v-1h10zm0-2h-4V4h4z%22/%3E %3C/g%3E%3C/svg%3E");
}
#ca-edit > a:after {
background-image: linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22%23000%22%3E %3Cpath d=%22m19.5 9.8 2.2-2.2c.4-.4.4-1.1 0-1.6L18 2.3c-.4-.4-1.1-.4-1.6 0l-2.2 2.2 5.3 5.3zm-6.4-4.1L2 16.7V22h5.3l11.1-11.1c-.1 0-5.3-5.2-5.3-5.2z%22/%3E %3C/g%3E%3C/svg%3E");
}
#ca-ve-edit > a:after {
background-image: linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Ctitle%3E Visual Edit %3C/title%3E%3Cg fill=%22%23000%22%3E %3Cpath d=%22m19.5 9.8 2.2-2.2a1.215 1.215 0 0 0 0-1.6L18 2.3a1.215 1.215 0 0 0-1.6 0l-2.2 2.2zm-6.4-4.1L2 16.7V22h5.3l11.1-11.1c-.1 0-5.3-5.2-5.3-5.2zM18 21a1.8 1.8 0 1 1 1.8-1.8A1.8 1.8 0 0 1 18 21zm0-4.6c-2.8 0-4 2.8-4 2.8s1.2 2.8 4 2.8 4-2.8 4-2.8-1.2-2.8-4-2.8z%22/%3E %3Ccircle cx=%2218%22 cy=%2219.2%22 r=%221%22/%3E %3C/g%3E%3C/svg%3E");
}
div#addthistoolbar {
background: inherit !important;
}
/* Popping this out as it causes problems with clip-path. - JB 12.29.24*/
.citizen-body {
padding: 1px 10px;
}
.mw-body-content {
background-color: var(--background) !important;
padding: 10px;
clip-path: polygon(0 10.00px, 10.00px 0, calc(100% - 8px) 0, 100% 10.00px, 100% calc(100% - 10.00px), calc(100% - 10.00px) 100%, 10.00px 100%, 0 calc(100% - 10.00px)) ;
}
.citizen-loading:after {
background: linear-gradient(90deg,var(--red) 0%,var(--red) 100%) -10% 0 / 0 var(--height-progress-bar) no-repeat,transparent;
}
/* boxes */
.infobox tr {
/* border-bottom: 1px solid var(--yellow) !important; */ /*blanking for now because of issues with infobox formatting */
padding: 8px;
}
.infoboxheader td {
background-color: var(--color-surface-2--active);
border-bottom: none !important;
}
.infobox td {
padding: 3px;
border-bottom: 2px groove var(--background3);
}
table.infobox {
float: right;
/* border: 1px solid var(--yellow); */
background-color: var(--background2) !important;
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 8px) 0,100% 10.00px,100% calc(100% - 10.00px),calc(100% - 10.00px) 100%,10.00px 100%,0 calc(100% - 10.00px));
border-collapse: unset; /* originally collapse, but this caused problems with yellow borders not showing up properly */
margin: 10px;
padding: 10px;
/*width: 300px;*/
}
th.infoboxheader, .infoboxheader, dl .noexcerpt, .sortable thead tr {
background-color: var(--color-surface-2--active);
clip-path: polygon(0 5.00px,5.00px 0,calc(100% - 5px) 0,100% 5.00px,100% calc(100% - 5.00px),calc(100% - 5.00px) 100%,5.00px 100%,0 calc(100% - 5.00px));
padding:.5em;
}
table tr:nth-child(even) {
background: var(--background3) !important;
}
table.infobox tr:nth-child(even) {
background: inherit !important;
}
.sortable td {
padding: 0.5em;
}
.hiddenStructure, .mw-collapsible .mw-collapsed .hiddenStructure {
display: none;
}
/* Dealing with images */
a.images {
display: inline !important;
}
figure .thumbinner a.new, .thumb .thumbinner a.new {
display: inline !important;
padding: 0px !important;
background-color: inherit !important;
background: inherit !important;
transition: background 200ms ease,color 200ms ease;
}
.thumb {
background-color: var(--background2) !important;
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 8px) 0,100% 10.00px,100% calc(100% - 10.00px),calc(100% - 10.00px) 100%,10.00px 100%,0 calc(100% - 10.00px));
}
.thumbcaption {
padding: 0.25em 1em;
}
/* Inline article preview popups */
/*
.mwe-popups {
background-color:var(--background-dark) !important;
color:var(--background2) !important;
border: 1px solid var(--red) !important;
}
.mwe-popups-container {
background-color:var(--orange) !important;
}
.mwe-popups .mwe-popups-extract:after {
background-image: -webkit-linear-gradient(to right,rgba(244,164,96,0),#f4a460 50%) !important;
background-image: linear-gradient(to right,rgba(244,164,96,0),#f4a460 50%) !important;
}
*/
/* no images */
.mwe-popups.flipped-x-y:after, .mwe-popups.flipped-y:after {
border-top: 12px solid var(--background-dark) !important;
}
.mwe-popups.mwe-popups-no-image-pointer:after, .mwe-popups.mwe-popups-no-image-pointer:before {
border-bottom: 12px solid var(--background-dark) !important;
}
/* with images */
.mwe-popups.mwe-popups-image-pointer:before, .mwe-popups.flipped-x.mwe-popups-is-tall:before, .mwe-popups.mwe-popups-image-pointer.flipped-x:before {
border-bottom: 8px solid var(--red) !important
}
.mwe-popups.mwe-popups-type-page.mwe-popups-fade-in-down.flipped-x-y.mwe-popups-is-tall:before, .mwe-popups.mwe-popups-type-page.mwe-popups-fade-in-down.flipped-x-y.mwe-popups-is-not-tall:before {
border-top: 8px solid var(--red) !important
}
.mwe-popups.mwe-popups-type-page.mwe-popups-fade-in-down.flipped-x-y.mwe-popups-is-tall:after {
border-top: 12px solid var(--red) !important
}
/* gallery */
ul.gallery.mw-gallery-slideshow .gallerybox.slideshow-current {
background: var(--color-surface-2--active) !important;
}
/* checkboxes */
.oo-ui-checkboxInputWidget [type='checkbox'] + span {
background-color: var(--color-surface-1) !important;
}
/* visual editor */
.ve-ce-linkAnnotation.ve-ce-annotation-active {
background-color: var(--color-surface-1) !important;
}
/* Handles an issue preventing the dialog from going outside the bonds of the "cut corner" clipping.*/
.ve-ui-surface.oo-ui-widget {
clip-path: none !important;
}
/* visual editor save change dialogue */
.oo-ui-menuOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget:hover, .ve-ui-specialCharacterPage-character:hover, .oo-ui-menuOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget:selected, .ve-ui-specialCharacterPage-character:selected {
background-color: var(--color-surface-2--hover) !important;
}
/* prevents "negative" on images when editing a link that has an image preview in editor */
span.oo-ui-widget.oo-ui-widget-enabled.oo-ui-iconElement.oo-ui-iconElement-icon.oo-ui-icon-page-existing.oo-ui-labelElement-invisible.oo-ui-iconWidget.ve-ui-mwInternalLinkContextItem-hasImage {
filter: none;
}
.mw-widget-titleOptionWidget-hasImage {
filter: none !important;
}
/* TABBER */
.tabber.tabber--animate.tabber--live, .tabber {
background-color: var(--background2) !important;
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 8px) 0,100% 10.00px,100% calc(100% - 10.00px),calc(100% - 10.00px) 100%,10.00px 100%,0 calc(100% - 10.00px));
}
.tabber__tab:visited {
color: var(--color-primary) !important;
}
.tabber__tab[aria-selected='true'], .tabber__tab[aria-selected='true']:visited {
color: var(--color-primary--active) !important;
background-color: var(--background3) !important;
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 10.00px) 0,100% 10.00px,100% 100%,0 100%) !important;
}
.tabber__tabs {
margin: .3em 0em 0em .3em !important;
}
.tabber__indicator {
background: var(--red) !important;
box-shadow: 0 1px 20px 1px var(--red);
}
.tabber__panel {
padding: 0.1em 1em;
}
/* handles the coloring of infoboxes and thumb backgrounds ONLY if called from within the tabber panel, so as to make them more distinct */
.tabber__panel table.infobox, .tabber__panel .thumb {
background-color: var(--background3) !important;
}
/* hides the edit section pencil ONLY if called from within the tabber panel, to avoid technical issues that user will encounter */
.tabber__panel .mw-editsection {
display: none !important;
}
/* hides error messages relating to defaultsorts ONLY if called from the tabber panel */
.tabber__panel .error {
display: none;
}
/* hides the infobox header on transcluded pages, particularly as they use templates that call on {{pagename}} to fill in those areas... causing confusing results on disambiguation tabbed pages... */
.tabber__panel tr.infoboxheader, .tabber__panel .infoboxheader {
display: none !important;
}
/* Message boxes */
.box, .navbox, .cdx-card {
background: var(--background3);
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 8px) 0,100% 10.00px,100% calc(100% - 10.00px),calc(100% - 10.00px) 100%,10.00px 100%,0 calc(100% - 10.00px));
}
.cdx-card {
background: var(--background);
border:0px !important;
}
.cdx-card__text__title {
color: var(--color-link);
}
/* Cut Corner Images */
.citizen-body a.image > img, .mw-body-content a.image > img, a > img {
clip-path: polygon(0 10.00px,10.00px 0,calc(100% - 8px) 0,100% 10.00px,100% calc(100% - 10.00px),calc(100% - 10.00px) 100%,10.00px 100%,0 calc(100% - 10.00px));
}
.flag img, .messagebox img {
clip-path: none !important;
}
/* fixes issue on front page with localization flags */
.flag a.image {
display: inline !important;
}
.ace-tm {
backgroud-color: var(--background2) !important;
color: var(text) !important;
}
.wikiEditor-ui .ace_editor {
font-family: var(--font-family-monospace);
background: var(--background3);
}
/* images in VisualEditor */
/*deals with the article header overlapping the edit bar when in VE mode - JB 9.1.24 */
/* disabled as this causes problems in VE.... it may be removed in full later on, depending on updates to Citizen skin - JB 12.29.24*/
.ve-init-mw-desktopArticleTarget-originalContent > .citizen-body-container > .citizen-page-header {
/* z-index: unset;*/
}
img.ve-ce-mwBlockImageNode-thumbimage, figure.ve-ce-mwBlockImageNode img {
/* contain: inherit !important;*/
}
/* Flow */
.flow-topic-titlebar {
background-color: var(--background3) !important;
}
.flow-post {
background-color: var(--background2) !important;
color: var(--text) !important;
padding: 1em;
}
/* Quote Template Styling */
/* Add this to MediaWiki:Citizen.css */
.bsg-quote {
display: flow-root;
border-left: 3px solid var(--yellow-dark);
background-color: var(--background2);
padding: 0.8em 1.2em;
margin: 1em 2em;
font-style: italic;
clip-path: polygon(0 8px, 8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px));
}
.bsg-quote-text {
line-height: 1.5em;
color: var(--text);
}
.bsg-quote-attribution {
text-align: right;
font-style: normal;
font-size: 0.9em;
margin-top: 0.5em;
color: var(--grey);
}
.bsg-quote-source {
font-style: italic;
/* color: var(--color-primary);*/
}
.bsg-quote-error {
color: var(--red);
font-weight: bold;
}
/* Dialogue/Conversation Quote Template Styling */
/* Add this to MediaWiki:Citizen.css along with the other quote styles */
.bsg-dialogue {
display: flow-root;
border-left: 3px solid var(--yellow-dark);
background-color: var(--background2);
padding: 1em 1.5em;
margin: 1em 2em;
clip-path: polygon(0 8px, 8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px));
}
.bsg-dialogue-context {
font-style: italic;
color: var(--grey);
margin-bottom: 0.8em;
font-size: 0.95em;
}
.bsg-dialogue-line {
margin: 0.4em 0;
color: var(--text);
}
.bsg-dialogue-speaker {
font-weight: bold;
color: var(--color-primary);
}
.bsg-dialogue-text {
color: var(--text);
}
.bsg-dialogue-action {
font-style: italic;
color: var(--grey-bright);
margin: 0.4em 0 0.4em 1.5em;
}
.bsg-dialogue-attribution {
text-align: right;
font-style: normal;
font-size: 0.9em;
margin-top: 0.8em;
padding-top: 0.5em;
border-top: 1px solid var(--yellow-dark);
color: var(--grey);
}
.bsg-dialogue-source {
font-style: italic;
/* color: var(--color-primary); */
}
.bsg-dialogue-lines {
line-height: 1.6em;
}
.tabber__panel .bsg-quote, .tabber__panel .bsg-dialogue {
background-color: var(--background3);
}
/* Make h1 and h2 tags inside dialogue boxes look appropriate */
.bsg-dialogue .mw-heading,
.bsg-dialogue .mw-heading1,
.bsg-dialogue .mw-heading2 {
margin-top: 0;
margin-bottom: 0.8em;
}
/* Logo at Related Pages - Placeholder Default */
.cdx-thumbnail__placeholder {
-webkit-mask-image: none;
background-image: url(https://media.battlestarwiki.org/w/thumb.php?f=BSG-WIKI_SM.png&width=48);
background-color: var(--background);
height: 48px;
width: 48px;
/* Recommended Additions */
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
-webkit-mask-position: center;
mask-position: center;
-webkit-mask-size: contain;
mask-size: contain;
}
.cdx-thumbnail__placeholder__icon {
-webkit-mask-image: none;
mask-image: none;
background-color: transparent;
}
span.cdx-icon.cdx-icon--medium.cdx-thumbnail__placeholder__icon--vue {
margin-left: 25px;
margin-top: 25px;
color: var(--grey);
}
/* ============================================
GENEALOGY TREE STYLING - FINAL VERSION
============================================ */
/* Increase spacing between flowchart elements */
.ext-mermaid .edgePath {
margin: 50px !important;
}
/* Add padding around nodes to prevent overlap */
.ext-mermaid .node {
padding: 20px !important;
}
/* Increase SVG viewBox to spread nodes */
.ext-mermaid .flowchart {
transform: scale(1.5);
transform-origin: top center;
}
/* Specifically target flowchart nodes */
.ext-mermaid .flowchart .node rect {
margin: 30px !important;
}
/* Reset any clip-path */
.ext-mermaid .node rect {
clip-path: none !important;
}
/* Force rect and foreignObject to match exactly */
.ext-mermaid .node > rect.basic.label-container {
width: 140px !important;
height: 150px !important;
x: -70px !important;
y: -75px !important;
fill: var(--background-color-dp-08, #2a2a2a) !important;
stroke: var(--border-color-base, #72777d) !important;
stroke-width: 2px !important;
rx: 4px !important;
ry: 4px !important;
}
/* Hide any duplicate/background rects */
.ext-mermaid .node rect:not(.label-container) {
display: none !important;
}
/* Align label with rect */
.ext-mermaid .label {
transform: translate(-70px, -75px) !important;
}
.ext-mermaid .label foreignObject {
width: 140px !important;
height: 150px !important;
}
.ext-mermaid .label rect {
display: none !important;
}
/* Node label container */
.ext-mermaid .nodeLabel {
width: 100% !important;
height: 100% !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: center !important;
padding: 0 !important;
margin: 0 !important;
}
/* Square images with cut corners */
.ext-mermaid .nodeLabel img {
width: 100px !important;
height: 100px !important;
border-radius: 0 !important;
object-fit: cover !important;
object-position: top !important;
/* border: 2px solid var(--border-color-base,#72777d) !important; */
box-shadow: 0 2px 8px rgba(0,0,0,0.5) !important;
display: block !important;
/* margin: 0 auto 8px auto !important; */
clip-path: polygon(0 6px,6px 0,calc(100% - 6px) 0,100% 6px,100% calc(100% - 6px),calc(100% - 6px) 100%,6px 100%,0 calc(100% - 6px)) !important;
}
/* Text styling */
.ext-mermaid .nodeLabel,
.ext-mermaid .nodeLabel span {
color: var(--color-base, #eaecf0) !important;
fill: var(--color-base, #eaecf0) !important;
font-family: var(--font-family-base, sans-serif) !important;
font-size: 14px !important;
text-align: center !important;
white-space: normal !important;
word-wrap: break-word !important;
line-height: 0.9 !important;
}
/* Connection lines */
.ext-mermaid .edgePath .path,
.ext-mermaid .flowchart-link {
stroke: var(--color-base, #c8ccd1) !important;
stroke-width: 2.5px !important;
}
/* Dotted lines */
.ext-mermaid .edge-pattern-dotted .path {
stroke: var(--color-subtle, #a2a9b1) !important;
stroke-width: 2.5px !important;
stroke-dasharray: 5, 5 !important;
}
/* Junction diamonds */
.ext-mermaid .node polygon {
fill: var(--background-color-dp-08, #2a2a2a) !important;
stroke: var(--border-color-base, #72777d) !important;
stroke-width: 2px !important;
}
/* Marriage symbols - CENTER INSIDE DIAMOND */
.ext-mermaid g[id*="GROUP"] .label {
transform: translate(0, 0) !important;
}
/* Fix marriage symbol - make foreignObject larger */
.ext-mermaid g[id*="GROUP"] .label foreignObject {
x: -10px !important;
y: -15px !important;
width: 20px !important;
height: 30px !important;
text-align: center !important;
overflow: visible !important;
}
.ext-mermaid g[id*="GROUP"] .nodeLabel {
font-size: 20px !important;
fill: var(--color-base, #eaecf0) !important;
display: block !important;
text-align: center !important;
line-height: 1 !important;
overflow: visible !important;
}
/* Container - FIX EMPTY SPACE */
.ext-mermaid {
padding: 0 !important;
border-radius: 4px !important;
overflow: visible !important;
width: fit-content !important;
margin: 20px auto !important;
}
/* Fix cropping - add padding to SVG viewBox */
.ext-mermaid svg {
max-width: 95% !important;
min-height: 1200px !important;
height: auto !important;
display: block !important;
overflow: visible !important;
}
/* Hover */
.ext-mermaid .node.clickable:hover rect.label-container {
fill: var(--background-color-dp-12, #3a3a3a) !important;
stroke: var(--color-primary, #3366cc) !important;
}
.ext-mermaid .node.clickable:hover img {
border-color: var(--color-primary, #3366cc) !important;
}
/* Only apply padding to nodeLabel elements that contain images */
.ext-mermaid .nodeLabel:has(img) {
padding-top: 10px !important;
}
/* deals with nodeLabels inside mermaid junction points for symbols */
span.nodeInnerLabel {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/**
* BattlestarWiki — Responsive Main Page styles
* Append to MediaWiki:Citizen.css
*
* All colors use variables defined in Citizen.css / skin theme.
* Adapts automatically to dark / light / black Citizen themes.
* Only hardcoded colors are per-series portal stripe accents.
*
* Breakpoints:
* Desktop ≥ 1080px
* Tablet 640px – 1079px
* Mobile < 640px
* XSmall < 380px
*/
/* ── Reset ───────────────────────────────────────────────────────── */
.bsw-main-page *,
.bsw-main-page *::before,
.bsw-main-page *::after {
box-sizing: border-box;
}
/* ── Wrapper ─────────────────────────────────────────────────────── */
.bsw-main-page {
/* Pull edge-to-edge inside Citizen's content padding */
margin: -1rem;
padding: 0;
background: var(--background3);
color: var(--color-base);
font-size: 0.875rem;
line-height: 1.5;
}
/* ── Shared section header bar ───────────────────────────────────── */
.bsw-card-hd,
.bsw-votd-hd,
.bsw-portals-label {
background: var(--color-surface-2--active);
color: var(--color-primary);
border-bottom: 1px solid var(--border-color-base);
font-size: 0.6875rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.bsw-card-hd,
.bsw-votd-hd {
padding: 0.3125rem 0.75rem;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 4px;
}
.bsw-card-hd a,
.bsw-votd-hd a {
font-size: 0.6875rem;
font-weight: 400;
color: var(--color-link);
text-transform: none;
letter-spacing: 0;
text-decoration: none;
}
.bsw-card-hd a:hover,
.bsw-votd-hd a:hover {
color: var(--color-link--hover);
}
/* ── Generic card ────────────────────────────────────────────────── */
/* Cards and clip-path elements use a wrapper padding gap for the border effect.
The .bsw-col-left/.bsw-col-right background is var(--background3),
which is slightly different from card var(--background2), creating a
natural visual edge at the cut-corner without any border property. */
.bsw-card {
background: var(--background2);
clip-path: polygon(
0 10px, 10px 0,
calc(100% - 8px) 0, 100% 10px,
100% calc(100% - 10px), calc(100% - 10px) 100%,
10px 100%, 0 calc(100% - 10px)
);
}
.bsw-card-body {
padding: 0.625rem 0.75rem;
}
/* ── Welcome band ────────────────────────────────────────────────── */
.bsw-welcome {
display: flex;
align-items: center;
gap: 0.875rem;
padding: 0.625rem 1rem;
background: var(--background2);
border-bottom: 1px solid var(--border-color-base);
}
.bsw-welcome-logo img {
display: block;
width: 40px;
height: 40px;
clip-path: none !important;
}
.bsw-welcome-text {
flex: 1;
min-width: 0;
}
.bsw-welcome-title {
font-size: 1rem;
font-weight: 700;
color: var(--color-primary);
line-height: 1.2;
letter-spacing: 0.02em;
}
.bsw-welcome-desc {
font-size: 0.75rem;
color: var(--color-base--subtle);
margin-top: 1px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bsw-welcome-links {
display: flex;
gap: 0.5rem;
flex-shrink: 0;
}
.bsw-welcome-links a {
font-size: 0.6875rem;
color: var(--color-link);
padding: 2px 8px;
border: 1px solid var(--border-color-base--lighter);
border-radius: 10px;
text-decoration: none;
white-space: nowrap;
transition: background 0.15s;
}
.bsw-welcome-links a:hover {
background: var(--background-color-quiet--hover);
color: var(--color-link--hover);
text-decoration: none;
}
@media ( max-width: 640px ) {
.bsw-welcome-links { display: none; }
.bsw-welcome-desc { display: none; }
}
/* ── Hero slideshow ──────────────────────────────────────────────── */
.bsw-hero {
position: relative;
height: 460px;
overflow: hidden;
background: var(--background3);
border-bottom: 1px solid var(--border-color-base);
}
.bsw-slide {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.8s ease;
display: flex;
align-items: flex-end;
}
.bsw-slide.bsw-active { opacity: 1; }
.bsw-slide-overlay {
position: absolute;
inset: 0;
background: linear-gradient(
to top,
var(--background3) 0%,
rgba(0,0,0,0.35) 55%,
transparent 100%
);
z-index: 1;
}
/* Background image container */
.bsw-slide-bg {
position: absolute;
inset: 0;
overflow: hidden;
}
/* Blurred background layer — fills full width, heavily blurred and darkened */
.bsw-slide-bg-blur {
position: absolute;
inset: -20px; /* bleed beyond edges so blur doesn't show hard border */
width: calc(100% + 40px);
height: calc(100% + 40px);
object-fit: cover;
object-position: center center;
filter: blur(24px) brightness(0.45) saturate(1.4);
display: block;
clip-path: none !important;
transform: scale(1.05); /* slight zoom prevents blur edge artifacts */
}
/* Sharp centered foreground layer — natural size, centered */
.bsw-slide-bg-img {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: contain; /* show full image, no cropping */
object-position: center center;
display: block;
clip-path: none !important;
}
.bsw-slide-content {
position: relative;
z-index: 2;
padding: 1rem 1.25rem;
width: 100%;
}
.bsw-slide-badge {
display: inline-flex;
align-items: center;
gap: 5px;
background: var(--background-color-quiet--hover);
border: 1px solid var(--border-color-base--lighter);
border-radius: 12px;
padding: 2px 9px;
margin-bottom: 0.375rem;
}
.bsw-slide-badge-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--color-primary);
flex-shrink: 0;
}
.bsw-slide-badge span {
font-size: 0.6875rem;
color: var(--color-primary--hover);
text-transform: uppercase;
letter-spacing: 0.08em;
}
.bsw-slide-title {
font-size: 1.375rem;
font-weight: 600;
color: var(--color-base);
margin-bottom: 0.25rem;
line-height: 1.2;
}
.bsw-slide-title a {
color: var(--color-base);
text-decoration: none;
}
.bsw-slide-title a:hover {
color: var(--color-primary--hover);
}
.bsw-slide-desc {
font-size: 0.8125rem;
color: var(--color-base--subtle);
max-width: 560px;
line-height: 1.55;
}
/* Hero nav dots */
.bsw-hero-dots {
position: absolute;
top: 0.75rem;
right: 0.75rem;
display: flex;
gap: 5px;
z-index: 10;
}
.bsw-hero-dot {
width: 7px;
height: 7px;
border-radius: 50%;
background: var(--background-color-icon);
cursor: pointer;
transition: background 0.2s;
display: inline-block;
vertical-align: middle;
}
.bsw-hero-dot.bsw-active {
background: var(--color-primary);
}
.bsw-hero-nav {
position: absolute;
bottom: 0.75rem;
right: 0.75rem;
display: flex;
gap: 5px;
z-index: 10;
}
.bsw-hero-btn {
width: 24px;
height: 24px;
border-radius: 50%;
background: var(--background-color-quiet--hover);
border: 1px solid var(--border-color-base--lighter);
color: var(--color-primary);
font-size: 0.8125rem;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
line-height: 1;
transition: background 0.15s;
user-select: none;
}
.bsw-hero-btn:hover {
background: var(--background-color-quiet--active);
color: var(--color-primary--hover);
}
/* ── Portals bar ─────────────────────────────────────────────────── */
.bsw-portals {
background: var(--background2);
border-bottom: 1px solid var(--border-color-base);
padding: 0.625rem 0.875rem;
}
.bsw-portals-label {
padding: 0.25rem 0;
margin-bottom: 0.5rem;
text-align: center;
border-bottom: none;
background: transparent;
}
.bsw-portals-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 6px;
}
.bsw-portal {
background: var(--background3);
padding: 0.5rem 0.375rem;
text-align: center;
text-decoration: none;
position: relative;
overflow: hidden;
transition: background 0.15s;
display: block;
clip-path: polygon(
0 8px, 8px 0,
calc(100% - 8px) 0, 100% 8px,
100% calc(100% - 8px), calc(100% - 8px) 100%,
8px 100%, 0 calc(100% - 8px)
);
}
.bsw-portal:hover {
background: var(--color-surface-2--hover);
text-decoration: none;
}
.bsw-portal-stripe {
height: 2px;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.bsw-portal-icon {
font-size: 1.125rem;
display: block;
margin-bottom: 0.25rem;
line-height: 1;
}
.bsw-portal-name {
font-size: 0.6875rem;
font-weight: 600;
color: var(--color-base);
line-height: 1.25;
display: block;
}
.bsw-portal-sub {
font-size: 0.625rem;
color: var(--color-base--subtle);
display: block;
margin-top: 1px;
}
/* ── Video of the Day band ───────────────────────────────────────── */
.bsw-votd-band {
background: var(--background2);
border-bottom: 1px solid var(--border-color-base);
}
.bsw-votd-hd-inner {
display: flex;
align-items: center;
gap: 6px;
}
.bsw-votd-hd-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--color-primary);
flex-shrink: 0;
}
.bsw-votd-inner {
display: grid;
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
}
.bsw-votd-player {
background: var(--background3);
border-right: 1px solid var(--border-color-base);
}
.bsw-votd-poster {
width: 100%;
aspect-ratio: 16 / 9;
overflow: hidden;
cursor: pointer;
display: block;
position: relative;
background: var(--background3);
}
.bsw-votd-poster img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.bsw-votd-poster-overlay {
position: absolute;
inset: 0;
background: var(--background-color-quiet--hover);
display: flex;
align-items: center;
justify-content: center;
transition: background 0.15s;
}
.bsw-votd-poster:hover .bsw-votd-poster-overlay {
background: var(--background-color-quiet--active);
}
.bsw-votd-play {
width: 52px;
height: 52px;
border-radius: 50%;
background: var(--background-color-primary--hover);
border: 2px solid var(--border-color-base--lighter);
display: flex;
align-items: center;
justify-content: center;
transition: background 0.15s, transform 0.1s;
}
.bsw-votd-poster:hover .bsw-votd-play {
background: var(--background-color-primary--active);
transform: scale(1.06);
}
.bsw-votd-play-arrow {
width: 0;
height: 0;
border-top: 9px solid transparent;
border-bottom: 9px solid transparent;
border-left: 16px solid var(--color-base);
margin-left: 4px;
}
.bsw-votd-info {
padding: 0.75rem 0.875rem;
display: flex;
flex-direction: column;
gap: 0.375rem;
background: var(--background2);
}
.bsw-votd-title {
font-size: 0.9375rem;
font-weight: 600;
color: var(--color-base);
line-height: 1.3;
}
.bsw-votd-meta {
font-size: 0.6875rem;
color: var(--color-base--subtle);
}
.bsw-votd-desc {
font-size: 0.8125rem;
color: var(--color-base--subtle);
line-height: 1.65;
flex: 1;
}
.bsw-votd-desc a {
color: var(--color-link);
}
.bsw-votd-desc a:hover {
color: var(--color-link--hover);
}
.bsw-votd-tags {
display: flex;
flex-wrap: wrap;
gap: 3px;
}
.bsw-votd-tag {
font-size: 0.625rem;
padding: 1px 7px;
border-radius: 10px;
border: 1px solid var(--border-color-base--lighter);
color: var(--color-base--subtle);
background: var(--background3);
}
.bsw-votd-actions {
display: flex;
align-items: center;
gap: 0.625rem;
flex-wrap: wrap;
padding-top: 0.375rem;
border-top: 1px solid var(--border-color-base);
}
.bsw-votd-watch {
display: inline-block;
padding: 0.3125rem 0.875rem;
background: var(--background-color-primary--hover);
color: var(--color-base);
clip-path: polygon(
0 5px, 5px 0,
calc(100% - 5px) 0, 100% 5px,
100% calc(100% - 5px), calc(100% - 5px) 100%,
5px 100%, 0 calc(100% - 5px)
);
font-size: 0.8125rem;
font-weight: 500;
text-decoration: none;
transition: background 0.15s;
}
.bsw-votd-watch:hover {
background: var(--background-color-primary--active);
color: var(--color-base);
text-decoration: none;
}
.bsw-votd-archive {
font-size: 0.75rem;
color: var(--color-link);
text-decoration: none;
}
.bsw-votd-archive:hover {
color: var(--color-link--hover);
}
.bsw-votd-stats {
font-size: 0.6875rem;
color: var(--color-base--subtle);
}
/* ── Loading / error states ──────────────────────────────────────── */
.bsw-loading,
.bsw-error {
padding: 1.5rem 1rem;
text-align: center;
color: var(--color-base--subtle);
font-size: 0.8125rem;
}
.bsw-spinner {
width: 22px;
height: 22px;
border: 2px solid var(--border-color-base--lighter);
border-top-color: var(--color-primary);
border-radius: 50%;
animation: bsw-spin 0.8s linear infinite;
margin: 0 auto 0.75rem;
}
@keyframes bsw-spin { to { transform: rotate(360deg); } }
.bsw-error { color: var(--red, #d44); }
/* ── Page body grid ──────────────────────────────────────────────── */
.bsw-body {
padding: 0.75rem;
display: grid;
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
gap: 0.75rem;
align-items: start;
background: var(--background3);
}
.bsw-col-left,
.bsw-col-right {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
/* ── Featured article ────────────────────────────────────────────── */
#bsw-featured-inner,
#bsw-newest-inner {
display: flex;
gap: 0.75rem;
align-items: flex-start;
overflow: hidden;
}
.bsw-fa-thumb {
width: 90px;
height: 110px;
object-fit: cover;
object-position: center top;
flex-shrink: 0;
background: var(--background3);
display: block;
margin-top: 2px;
margin-left: 2px;
clip-path: polygon(
0 8px, 8px 0,
calc(100% - 8px) 0, 100% 8px,
100% calc(100% - 8px), calc(100% - 8px) 100%,
8px 100%, 0 calc(100% - 8px)
);
}
.bsw-fa-thumb-ph {
width: 80px;
height: 80px;
flex-shrink: 0;
background: var(--background3);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.75rem;
clip-path: polygon(
0 8px, 8px 0,
calc(100% - 8px) 0, 100% 8px,
100% calc(100% - 8px), calc(100% - 8px) 100%,
8px 100%, 0 calc(100% - 8px)
);
}
.bsw-newest-date {
font-size: 0.6875rem;
color: var(--color-base--subtle);
margin-bottom: 0.25rem;
}
.bsw-fa-title {
font-size: 0.9375rem;
font-weight: 600;
color: var(--color-base);
margin-bottom: 0.25rem;
line-height: 1.3;
}
.bsw-fa-title a {
color: var(--color-link);
text-decoration: none;
}
.bsw-fa-title a:hover { color: var(--color-link--hover); }
.bsw-fa-extract {
font-size: 0.8125rem;
color: var(--color-base--subtle);
line-height: 1.65;
}
.bsw-fa-extract p { margin: 0 0 0.25rem; }
.bsw-fa-extract p:last-child { margin-bottom: 0; }
.bsw-fa-extract a { color: var(--color-link); }
.bsw-fa-extract a:hover { color: var(--color-link--hover); }
/* ── Photo Lab ───────────────────────────────────────────────────── */
.bsw-photo-img {
display: block;
width: 100%;
max-height: 220px;
object-fit: cover;
clip-path: none; /* override global image clip-path on main page images */
}
.bsw-photo-nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.375rem 0.75rem;
border-top: 1px solid var(--border-color-base);
font-size: 0.75rem;
background: var(--background2);
}
.bsw-photo-nav a {
color: var(--color-link);
text-decoration: none;
}
.bsw-photo-nav a:hover { color: var(--color-link--hover); }
.bsw-photo-caption {
color: var(--color-base--subtle);
font-size: 0.75rem;
text-align: center;
flex: 1;
padding: 0 0.5rem;
}
/* ── Did you know ────────────────────────────────────────────────── */
.bsw-dyk {
list-style: none;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.bsw-dyk li {
font-size: 0.8125rem;
color: var(--color-base--subtle);
padding-left: 1rem;
line-height: 1.65;
}
.bsw-dyk li strong { color: var(--color-base); font-weight: 600; }
.bsw-dyk li a { color: var(--color-link); }
.bsw-dyk li a:hover { color: var(--color-link--hover); }
/* ── Recent changes tabs ─────────────────────────────────────────── */
.bsw-wiki-tabs {
display: flex;
gap: 3px;
flex-wrap: wrap;
}
.bsw-wtab {
font-size: 0.6875rem;
padding: 2px 8px;
border-radius: 10px;
border: 1px solid var(--border-color-base--lighter);
background: transparent;
cursor: pointer;
color: var(--color-base--subtle);
transition: all 0.15s;
display: inline-block;
user-select: none;
}
.bsw-wtab.bsw-active {
background: var(--background-color-primary--hover);
border-color: var(--border-color-base);
color: var(--color-base);
}
.bsw-wtab:hover:not(.bsw-active) {
background: var(--background-color-quiet--hover);
color: var(--color-base);
}
/* Card header link — span used when href is '#' (JS updates to real URL) */
.bsw-card-hd-link {
font-size: 0.6875rem;
font-weight: 400;
color: var(--color-link);
cursor: pointer;
text-transform: none;
letter-spacing: 0;
}
/* Stat links rendered as spans wrapping wikitext links */
.bsw-stat-link {
display: block;
text-align: center;
font-size: 0.6875rem;
padding: 0.3125rem;
background: var(--background3);
clip-path: polygon(0 5px,5px 0,calc(100% - 5px) 0,100% 5px,100% calc(100% - 5px),calc(100% - 5px) 100%,5px 100%,0 calc(100% - 5px));
color: var(--color-link);
transition: background 0.15s;
}
.bsw-stat-links a:hover .bsw-stat-link {
background: var(--background-color-quiet--hover);
color: var(--color-link--hover);
}
/* Portal links — wikitext link wraps a div.bsw-portal */
.bsw-portals-grid a {
text-decoration: none;
}
.bsw-portals-grid a:hover .bsw-portal {
border-color: var(--border-color-base--darker);
background: var(--color-surface-2--hover);
}
.bsw-recent {
list-style: none;
display: flex;
flex-direction: column;
gap: 0.3125rem;
}
.bsw-recent li {
display: flex;
justify-content: space-between;
align-items: baseline;
font-size: 0.8125rem;
}
.bsw-recent li a {
color: var(--color-link);
text-decoration: none;
}
.bsw-recent li a:hover { color: var(--color-link--hover); }
.bsw-recent-time {
font-size: 0.6875rem;
color: var(--color-base--subtle);
flex-shrink: 0;
margin-left: 0.5rem;
}
/* ── Statistics ──────────────────────────────────────────────────── */
.bsw-stats-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 5px;
margin-bottom: 0.5rem;
}
.bsw-stat {
background: var(--background3);
clip-path: polygon(
0 5px, 5px 0,
calc(100% - 5px) 0, 100% 5px,
100% calc(100% - 5px), calc(100% - 5px) 100%,
5px 100%, 0 calc(100% - 5px)
);
padding: 0.4375rem 0.25rem;
text-align: center;
}
.bsw-stat-n {
font-size: 1.0625rem;
font-weight: 600;
color: var(--color-primary);
line-height: 1;
}
.bsw-stat-l {
font-size: 0.625rem;
color: var(--color-base--subtle);
text-transform: uppercase;
letter-spacing: 0.04em;
margin-top: 2px;
}
.bsw-stat-links {
display: flex;
gap: 5px;
}
.bsw-stat-link:hover {
background: var(--background-color-quiet--hover);
color: var(--color-link--hover);
text-decoration: none;
}
/* ── On this day ─────────────────────────────────────────────────── */
.bsw-otd-date {
font-size: 0.6875rem;
color: var(--color-base--subtle);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 0.25rem;
}
.bsw-otd-title {
font-size: 0.875rem;
font-weight: 600;
color: var(--color-base);
margin-bottom: 0.25rem;
}
.bsw-otd-body {
font-size: 0.8125rem;
color: var(--color-base--subtle);
line-height: 1.65;
}
.bsw-otd-body a { color: var(--color-link); }
.bsw-otd-body a:hover { color: var(--color-link--hover); }
/* ── Wiki news ───────────────────────────────────────────────────── */
.bsw-news {
list-style: none;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.bsw-news li {
font-size: 0.8125rem;
color: var(--color-base--subtle);
line-height: 1.55;
}
.bsw-news li strong { color: var(--color-base); font-weight: 600; }
.bsw-news-date { font-size: 0.6875rem; color: var(--color-base--subtle); display: block; margin-top: 1px; opacity: 0.6; }
/* ── Newest article ──────────────────────────────────────────────── */
.bsw-newest-title {
font-size: 0.875rem;
font-weight: 600;
color: var(--color-base);
margin-bottom: 0.25rem;
line-height: 1.3;
}
.bsw-newest-title a { color: var(--color-link); text-decoration: none; }
.bsw-newest-title a:hover { color: var(--color-link--hover); }
.bsw-newest-body {
font-size: 0.8125rem;
color: var(--color-base--subtle);
line-height: 1.65;
margin-bottom: 0.375rem;
}
/* ── Sister projects ─────────────────────────────────────────────── */
.bsw-sister-link {
display: block;
text-align: left;
padding: 0.375rem 0.625rem;
background: var(--background3);
clip-path: polygon(
0 5px, 5px 0,
calc(100% - 5px) 0, 100% 5px,
100% calc(100% - 5px), calc(100% - 5px) 100%,
5px 100%, 0 calc(100% - 5px)
);
color: var(--color-link);
font-size: 0.8125rem;
text-decoration: none;
transition: background 0.15s;
}
.bsw-sister-link:hover {
background: var(--background-color-quiet--hover);
color: var(--color-link--hover);
text-decoration: none;
}
/* ── Interwiki bar ───────────────────────────────────────────────── */
.bsw-interwiki {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 5px;
padding: 0.5rem 0.75rem;
background: var(--background2);
border-top: 1px solid var(--border-color-base);
}
.bsw-iw {
display: inline-flex;
align-items: center;
gap: 4px;
background: var(--background3);
clip-path: polygon(
0 5px, 5px 0,
calc(100% - 5px) 0, 100% 5px,
100% calc(100% - 5px), calc(100% - 5px) 100%,
5px 100%, 0 calc(100% - 5px)
);
padding: 3px 9px;
font-size: 0.8125rem;
color: var(--color-base);
text-decoration: none;
transition: background 0.15s;
}
.bsw-iw:hover {
background: var(--background-color-quiet--hover);
text-decoration: none;
}
.bsw-iw a { color: var(--color-link); text-decoration: none; }
.bsw-iw a:hover { color: var(--color-link--hover); }
/* ── Tagline ─────────────────────────────────────────────────────── */
.bsw-tagline {
text-align: center;
font-size: 0.8125rem;
color: var(--color-base--subtle);
padding: 0.625rem 0.75rem;
border-top: 1px solid var(--border-color-base);
background: var(--background2);
line-height: 1.7;
}
.bsw-tagline strong { color: var(--color-primary); }
/* ══════════════════════════════════════════
RESPONSIVE BREAKPOINTS
══════════════════════════════════════════ */
/* ── Tablet (640px – 1079px) ─────────────────────────────────────── */
@media screen and (max-width: 1079px) {
.bsw-hero { height: 360px; }
.bsw-slide-title { font-size: 1.1875rem; }
}
/* ── Mobile (< 640px) ────────────────────────────────────────────── */
@media screen and (max-width: 639px) {
.bsw-main-page { margin: -0.5rem; }
.bsw-hero { height: 280px; }
.bsw-slide-title { font-size: 1rem; }
.bsw-slide-desc { font-size: 0.75rem; }
.bsw-slide-content { padding: 0.75rem; }
/* Portals: 3-column on mobile */
.bsw-portals-grid { grid-template-columns: repeat(3, 1fr); }
/* VotD: stack vertically */
.bsw-votd-inner { grid-template-columns: 1fr; }
.bsw-votd-player { border-right: none; border-bottom: 1px solid var(--border-color-base); }
/* Body: single column, left before right */
.bsw-body { grid-template-columns: 1fr; padding: 0.5rem; gap: 0.5rem; }
.bsw-col-left { order: 1; }
.bsw-col-right { order: 2; }
/* Smaller featured thumbnail */
.bsw-fa-thumb,
.bsw-fa-thumb-ph { width: 60px; height: 60px; }
/* VotD play button */
.bsw-votd-play { width: 42px; height: 42px; }
}
/* ── Very small (< 380px) ────────────────────────────────────────── */
@media screen and (max-width: 379px) {
.bsw-portals-grid { grid-template-columns: repeat(2, 1fr); }
.bsw-portal-sub { display: none; }
.bsw-stats-grid { grid-template-columns: repeat(2, 1fr); }
}