Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Citizen.css: Difference between revisions

MediaWiki interface page
Joe Beaudoin Jr. (talk | contribs)
No edit summary
Joe Beaudoin Jr. (talk | contribs)
No edit summary
Line 1,444: Line 1,444:
     gap: 0.75rem;
     gap: 0.75rem;
     align-items: flex-start;
     align-items: flex-start;
    overflow: hidden;
}
}


.bsw-fa-thumb {
.bsw-fa-thumb {
     width: 80px;
     width: 90px;
     height: 80px;
     height: 110px;
     object-fit: cover;
     object-fit: cover;
    object-position: center top;
     flex-shrink: 0;
     flex-shrink: 0;
     background: var(--background3);
     background: var(--background3);
     display: block;
     display: block;
    /* Small margin so the image clears the card's clip-path cut corners */
     margin-top: 2px;
     margin-top: 2px;
     margin-left: 2px;
     margin-left: 2px;

Revision as of 02:44, 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); }
}