Jump to content

MediaWiki:Common.css

From Cinnamon Toast Crunch

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* ============================================================
   THE ENCYCLOPEDIA OF THE COLORVERSE — Common.css
   Golden Gate Bridge Theme (dominant) + Colorverse Systems
   
   GGB palette : International Orange #C85C2B | Bay Navy #0B1B2B | Fog #F5F2EC
   KC tokens   : used only by Colorverse template components
   ============================================================ */

/* ── Google Fonts ── */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;0,700;1,400&family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Josefin+Sans:wght@300;400;600&family=Fredoka+One&family=Bubblegum+Sans&family=Schoolbell&family=Patrick+Hand&family=Boogaloo&display=swap');

/* ── Custom Fonts ── */
@font-face {
    font-family: "Fredoka";
    src: url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.eot");
    src: url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.eot?#iefix")format("embedded-opentype"),
    url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.woff2")format("woff2"),
    url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.woff")format("woff"),
    url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.ttf")format("truetype"),
    url("https://db.onlinewebfonts.com/t/0ca2ea96737ff1b488509e1c766d1048.svg#Fredoka")format("svg");
}

@font-face {
    font-family: "Starborn";
    src: url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.eot");
    src: url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.eot?#iefix")format("embedded-opentype"),
    url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.woff2")format("woff2"),
    url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.woff")format("woff"),
    url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.ttf")format("truetype"),
    url("https://db.onlinewebfonts.com/t/2afe16b4e1a977f13d988de8a968ae7c.svg#Starborn")format("svg");
}

/* ============================================================
   CSS VARIABLES
   ============================================================ */
:root {
  /* ── Golden Gate Bridge (dominant theme) ── */
  --ggb-orange:      #C85C2B;
  --ggb-orange-dk:   #9E3F18;
  --ggb-orange-lt:   #E67E4D;
  --ggb-navy:        #0B1B2B;
  --ggb-navy-mid:    #162840;
  --ggb-navy-light:  #2A4560;
  --ggb-fog:         #F5F2EC;
  --ggb-fog-mid:     #EAE6DC;
  --ggb-fog-dark:    #D8D3C6;
  --ggb-cable:       #8A9BB0;
  --ggb-water:       #1A4A6E;
  --ggb-gold:        #C9A84C;
  --ggb-text:        #1C1A15;
  --ggb-text-mid:    #4A4640;
  --ggb-text-light:  #7A7570;
  --ggb-radius:      6px;
  --ggb-shadow:      0 2px 20px rgba(11,27,43,0.14);
  --ggb-t:           0.25s ease;

  /* ── Colorverse component tokens (templates, blinkies, page-color system) ── */
  --kc-yellow:  #FFE500;
  --kc-red:     #E8000D;
  --kc-blue:    #2B44FF;
  --kc-green:   #00B728;
  --kc-white:   #FFFFFF;
  --kc-black:   #1A1A1A;

  --kc-border:        3px solid var(--kc-black);
  --kc-border-thick:  5px solid var(--kc-black);
  --kc-radius:        16px;
  --kc-radius-lg:     24px;
  --kc-shadow:        5px 5px 0px var(--kc-black);

  /* Font tokens — GGB fonts for wiki UI, KC fonts for template components */
  --font-display:  'Cormorant Garamond', Georgia, serif;
  --font-body:     'Crimson Pro', Georgia, serif;
  --font-nav:      'Josefin Sans', sans-serif;
  --font-heading:  "Fredoka", "Fredoka One", cursive;
  --font-accent:   "Bubblegum Sans", cursive;
  --font-note:     "Schoolbell", cursive;

  /* Page-color system defaults (Colorverse {{PageColor}} template) */
  --kc-page-bg:      initial;
  --kc-page-text:    initial;
  --kc-page-links:   initial;
  --kc-page-h1:      initial;
  --kc-page-h1text:  initial;
  --kc-page-h2:      initial;
  --kc-page-h3:      initial;
  --kc-page-border:  initial;
  --kc-page-shadow:  initial;
  --kc-page-toc:     initial;
  --kc-page-cats:    initial;
}

/* ============================================================
   KEYFRAMES
   ============================================================ */
@keyframes ggbFadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ggbSlideRight {
  from { opacity: 0; transform: translateX(-16px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes ggbPageIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ggbCableFlow {
  0%, 100% { background-position: 0 0; }
  50%       { background-position: 0 12px; }
}
@keyframes ggbPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(200,92,43,0.45); }
  50%       { box-shadow: 0 0 0 8px rgba(200,92,43,0); }
}
@keyframes kc-sparkle-fade {
  0%   { opacity: 1; transform: scale(1) translateY(0); }
  100% { opacity: 0; transform: scale(0.4) translateY(-24px); }
}
@keyframes blinkie-border-cycle {
  0%   { outline-color: var(--kc-yellow); }
  25%  { outline-color: var(--kc-red); }
  50%  { outline-color: var(--kc-blue); }
  75%  { outline-color: var(--kc-green); }
  100% { outline-color: var(--kc-yellow); }
}

/* ============================================================
   GLOBAL RESET
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }

/* ============================================================
   BODY — GGB fog
   ============================================================ */
body {
  background: var(--ggb-fog) !important;
  color: var(--ggb-text) !important;
  font-family: var(--font-body) !important;
  font-size: 18px !important;
  line-height: 1.78 !important;
}

#mw-page-base {
  background: linear-gradient(180deg, var(--ggb-navy) 0%, var(--ggb-navy-mid) 55%, var(--ggb-fog) 100%) !important;
  height: 220px !important;
}
#mw-head-base { background: var(--ggb-navy) !important; }

#mw-content-block {
  background-image: url('/images/Split.png');
  background-repeat: no-repeat;
  background-position: center;
  background-attachment: fixed;
  background-size: cover;
}

/* ============================================================
   HEADER
   ============================================================ */
#mw-head, .vector-header {
  background: var(--ggb-navy) !important;
  border-bottom: 3px solid var(--ggb-orange) !important;
  box-shadow: 0 4px 28px rgba(11,27,43,0.5) !important;
}

#p-logo { filter: drop-shadow(0 2px 10px rgba(200,92,43,0.25)); }
#p-logo a { display: block; }

/* ============================================================
   NAVIGATION TABS
   ============================================================ */
#left-navigation, .vector-menu-tabs, .vector-nav-tabs {
  font-family: var(--font-nav) !important;
}

.vector-menu-tabs li a,
#ca-nstab-main a, #ca-talk a,
#ca-view a, #ca-edit a, #ca-history a {
  background: transparent !important;
  border: none !important;
  color: var(--ggb-cable) !important;
  font-family: var(--font-nav) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  letter-spacing: 0.1em !important;
  padding: 10px 16px !important;
  text-transform: uppercase !important;
  transition: color var(--ggb-t), background var(--ggb-t) !important;
}

.vector-menu-tabs li a:hover,
#ca-edit a:hover, #ca-history a:hover {
  background: rgba(200,92,43,0.08) !important;
  color: var(--ggb-orange-lt) !important;
}

.vector-menu-tabs .selected a, li.selected a {
  border-bottom: 3px solid var(--ggb-orange) !important;
  color: var(--ggb-orange) !important;
}

/* Page tabs (Timeless skin) */
#p-views a {
  color: var(--ggb-cable) !important;
  background-color: transparent !important;
  font-family: var(--font-nav) !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transition: color var(--ggb-t), background var(--ggb-t) !important;
}

#p-views a:hover { color: var(--ggb-orange-lt) !important; background: rgba(200,92,43,0.08) !important; transform: none !important; }
#p-views .selected a, #p-views li.selected a {
  color: var(--ggb-orange) !important;
  background-color: transparent !important;
  border-bottom: 3px solid var(--ggb-orange) !important;
  transform: none !important;
}

/* ── Right Nav ── */
#right-navigation a, .vector-user-links a, #p-personal a {
  color: var(--ggb-cable) !important;
  font-family: var(--font-nav) !important;
  font-size: 11px !important;
  letter-spacing: 0.06em !important;
  transition: color var(--ggb-t) !important;
}
#right-navigation a:hover, .vector-user-links a:hover, #p-personal a:hover {
  color: var(--ggb-orange-lt) !important;
}

/* ============================================================
   SEARCH BAR
   ============================================================ */
#p-search form, .vector-search-box form { margin: 0 !important; }

#searchInput, .vector-search-box input[type="search"], .cdx-text-input__input,
input[name="search"], .mw-searchInput {
  background: rgba(255,255,255,0.08) !important;
  border: 1px solid rgba(138,155,176,0.3) !important;
  border-radius: var(--ggb-radius) !important;
  color: var(--ggb-fog) !important;
  font-family: var(--font-nav) !important;
  font-size: 12px !important;
  letter-spacing: 0.05em !important;
  padding: 8px 14px !important;
  transition: border var(--ggb-t), background var(--ggb-t), box-shadow var(--ggb-t) !important;
  width: 220px !important;
  box-shadow: none !important;
  outline: none !important;
}

#searchInput::placeholder, .vector-search-box input::placeholder {
  color: rgba(138,155,176,0.6) !important;
}

#searchInput:focus, .vector-search-box input:focus, .mw-searchInput:focus {
  background: rgba(255,255,255,0.13) !important;
  border-color: var(--ggb-orange) !important;
  box-shadow: 0 0 0 3px rgba(200,92,43,0.18) !important;
  outline: none !important;
}

#searchButton, .vector-search-box .searchButton,
#mw-searchButton, input[type="submit"][name="fulltext"], .searchButton {
  background: var(--ggb-orange) !important;
  border: none !important;
  border-radius: 0 var(--ggb-radius) var(--ggb-radius) 0 !important;
  color: white !important;
  cursor: pointer !important;
  padding: 8px 14px !important;
  transition: background var(--ggb-t) !important;
  box-shadow: none !important;
  font-family: var(--font-nav) !important;
  font-size: 12px !important;
}

#searchButton:hover, #mw-searchButton:hover, .searchButton:hover {
  background: var(--ggb-orange-lt) !important;
  transform: none !important;
  box-shadow: none !important;
}

/* ============================================================
   LEFT SIDEBAR — GGB navy with cable accent
   ============================================================ */
#mw-panel, #mw-site-navigation, .mw-site-navigation, .vector-column-start {
  background: var(--ggb-navy) !important;
  border-right: 1px solid rgba(138,155,176,0.12) !important;
  padding-top: 10px !important;
  position: relative !important;
}

/* Cable shimmer strip */
#mw-panel::after, .vector-column-start::after {
  content: '' !important;
  position: absolute !important;
  top: 0 !important; right: 0 !important;
  width: 2px !important; height: 100% !important;
  background: linear-gradient(180deg,
    transparent 0%,
    rgba(200,92,43,0.25) 20%,
    rgba(200,92,43,0.55) 50%,
    rgba(200,92,43,0.25) 80%,
    transparent 100%) !important;
  pointer-events: none !important;
  animation: ggbCableFlow 5s ease-in-out infinite !important;
}

#mw-panel .portal, #mw-panel .vector-menu {
  border-bottom: 1px solid rgba(138,155,176,0.1) !important;
  margin-bottom: 0 !important;
  padding: 14px 0 !important;
}

/* Sidebar headings */
#mw-panel h3,
#mw-panel .vector-menu-heading,
#mw-panel .vector-menu-heading-label,
#mw-site-navigation h3,
.portal h3,
#mw-site-navigation .sidebar-chunk h3,
#mw-related-navigation .sidebar-chunk h3 {
  animation: ggbSlideRight 0.5s ease both !important;
  color: var(--ggb-orange) !important;
  font-family: var(--font-nav) !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  margin: 0 !important;
  padding: 0 16px 8px !important;
  text-transform: uppercase !important;
  background: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  border: none !important;
  border-bottom: 1px solid rgba(200,92,43,0.3) !important;
  text-shadow: none !important;
  display: block !important;
}

#mw-panel .body ul, #mw-panel .vector-menu-content ul {
  list-style: none !important; margin: 0 !important; padding: 0 !important;
}
#mw-panel .body li, #mw-panel .vector-menu-content li { margin: 0 !important; }

#mw-panel .body li a,
#mw-panel .vector-menu-content li a,
#mw-site-navigation a,
#mw-panel a,
#mw-site-navigation .sidebar-chunk a,
#mw-related-navigation .sidebar-chunk a {
  color: var(--ggb-cable) !important;
  display: block !important;
  font-family: var(--font-nav) !important;
  font-size: 11.5px !important;
  font-weight: 400 !important;
  letter-spacing: 0.04em !important;
  padding: 5px 16px 5px 26px !important;
  position: relative !important;
  text-decoration: none !important;
  transition: color var(--ggb-t), padding-left var(--ggb-t) !important;
  background: none !important;
}

#mw-panel .body li a::before,
#mw-panel .vector-menu-content li a::before {
  background: rgba(138,155,176,0.3) !important;
  border-radius: 50% !important;
  content: '' !important;
  height: 4px !important; width: 4px !important;
  left: 11px !important;
  position: absolute !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  transition: background var(--ggb-t) !important;
}

#mw-panel .body li a:hover,
#mw-panel .vector-menu-content li a:hover,
#mw-site-navigation a:hover,
#mw-panel a:hover {
  color: var(--ggb-orange-lt) !important;
  background: transparent !important;
  padding-left: 30px !important;
  border-radius: 0 !important;
  transform: none !important;
}

#mw-panel .body li a:hover::before,
#mw-panel .vector-menu-content li a:hover::before {
  background: var(--ggb-orange) !important;
}

/* Sidebar portal section containers — strip KC styles */
#p-navigation, #p-Explore, #p-managewiki-sidebar-header, #p-STAFF,
#p-boggio, #p-tb, #p-cactions, #p-pagemisc, #p-userpagetools,
#p-birthday, #p-event, #p-content, #p-more_categories, #p-wiki_tools {
  background-color: transparent !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin-bottom: 0 !important;
  box-shadow: none !important;
  border: none !important;
}

#p-logo { background-color: transparent !important; }

/* ============================================================
   RIGHT SIDEBAR
   ============================================================ */
#mw-related-navigation {
  background-color: var(--ggb-navy-mid) !important;
  border-left: 1px solid rgba(138,155,176,0.12) !important;
}

#mw-related-navigation h3 {
  color: var(--ggb-orange) !important;
  font-family: var(--font-nav) !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  border: none !important;
  border-bottom: 1px solid rgba(200,92,43,0.3) !important;
  background: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  display: block !important;
  text-shadow: none !important;
  padding: 0 16px 8px !important;
}

#mw-related-navigation a       { color: var(--ggb-cable) !important; font-weight: 400 !important; }
#mw-related-navigation a:hover { color: var(--ggb-orange-lt) !important; background: transparent !important; border-radius: 0 !important; }
#mw-related-navigation .portal { background-color: transparent !important; border-color: rgba(138,155,176,0.1) !important; }

/* ============================================================
   MAIN CONTENT
   ============================================================ */
#content, .mw-body, .vector-body {
  animation: ggbPageIn 0.55s ease both !important;
  background: var(--ggb-fog) !important;
  border: none !important;
  border-radius: 10px 10px 0 0 !important;
  box-shadow: var(--ggb-shadow) !important;
  margin-left: 10px !important;
  padding: 36px 44px 50px !important;
  font-family: var(--font-body) !important;
  font-size: 18px !important;
  line-height: 1.78 !important;
}

/* ============================================================
   HEADINGS — GGB typographic style
   ============================================================ */
h1, #firstHeading, .mw-first-heading {
  animation: ggbFadeUp 0.65s ease 0.1s both !important;
  border: none !important;
  color: var(--ggb-navy) !important;
  font-family: var(--font-display) !important;
  font-size: 2.9em !important;
  font-weight: 300 !important;
  letter-spacing: -0.015em !important;
  line-height: 1.12 !important;
  margin-bottom: 28px !important;
  padding: 0 !important;
  background: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  display: block !important;
}

h1::after, #firstHeading::after, .mw-first-heading::after {
  background: linear-gradient(90deg, var(--ggb-orange), var(--ggb-gold)) !important;
  border-radius: 2px !important;
  content: '' !important;
  display: block !important;
  height: 3px !important;
  margin-top: 16px !important;
  width: 70px !important;
}

h2, .mw-body-content h2 {
  border: none !important;
  border-bottom: 1px solid var(--ggb-fog-dark) !important;
  color: var(--ggb-navy) !important;
  font-family: var(--font-display) !important;
  font-size: 1.95em !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  margin-top: 2.2em !important;
  padding: 0 0 10px !important;
  background: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

.mw-body-content h2 .mw-headline::before {
  background: var(--ggb-orange) !important;
  border-radius: 50% !important;
  content: '' !important;
  display: inline-block !important;
  height: 10px !important; width: 10px !important;
  margin-right: 10px !important;
  position: relative !important;
  top: -2px !important;
  vertical-align: middle !important;
}

h3, .mw-body-content h3 {
  border: none !important;
  color: var(--ggb-navy-mid) !important;
  font-family: var(--font-display) !important;
  font-size: 1.45em !important;
  font-style: italic !important;
  font-weight: 600 !important;
  background: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  display: block !important;
  padding: 0 !important;
  margin: 1.2rem 0 0.5rem !important;
}

h4, .mw-body-content h4,
h5, .mw-body-content h5,
h6, .mw-body-content h6 {
  color: var(--ggb-text-mid) !important;
  font-family: var(--font-nav) !important;
  font-size: 0.88em !important;
  font-weight: 600 !important;
  letter-spacing: 0.13em !important;
  text-transform: uppercase !important;
  border: none !important;
}

/* ============================================================
   LINKS
   ============================================================ */
a, a:link {
  color: var(--ggb-water) !important;
  text-decoration: none !important;
  transition: color var(--ggb-t) !important;
  font-weight: normal !important;
}
a:visited { color: #3D5E7A !important; }
a:hover, a:focus {
  color: var(--ggb-orange) !important;
  text-decoration: underline !important;
  text-decoration-color: rgba(200,92,43,0.5) !important;
  text-decoration-thickness: 2px !important;
  text-underline-offset: 3px !important;
  background: none !important;
  transform: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
}
a.new, a.new:link, a.new:hover { color: #A03520 !important; text-decoration: none !important; }

/* Bodytext links — extra specificity to override KC rules */
#bodyContent a         { color: var(--ggb-water) !important; font-weight: normal !important; text-decoration: none !important; }
#bodyContent a:visited { color: #3D5E7A !important; }
#bodyContent a:hover   {
  color: var(--ggb-orange) !important;
  background: none !important;
  transform: none !important;
  padding: 0 !important;
  text-decoration: underline !important;
  text-decoration-color: rgba(200,92,43,0.5) !important;
}

/* ============================================================
   EDIT SECTION LINKS
   ============================================================ */
.mw-editsection { font-family: var(--font-nav) !important; font-size: 11px !important; letter-spacing: 0.07em !important; }

.mw-editsection a {
  background: var(--ggb-orange) !important;
  border: none !important;
  border-radius: 3px !important;
  box-shadow: none !important;
  color: white !important;
  font-family: var(--font-nav) !important;
  font-size: 11px !important;
  margin-left: 8px !important;
  padding: 2px 8px !important;
  text-decoration: none !important;
  text-transform: uppercase !important;
  transition: background var(--ggb-t) !important;
}

.mw-editsection a:hover {
  background: var(--ggb-orange-dk) !important;
  color: white !important;
  transform: none !important;
  text-decoration: none !important;
}

.mw-editsection-bracket { display: none !important; }

/* ============================================================
   TABLE OF CONTENTS
   ============================================================ */
#toc, .toc {
  background: var(--ggb-navy) !important;
  border: none !important;
  border-left: 4px solid var(--ggb-orange) !important;
  border-radius: 0 8px 8px 0 !important;
  box-shadow: var(--ggb-shadow) !important;
  color: var(--ggb-fog) !important;
  display: inline-block !important;
  margin: 1.4em 1.5em 1.4em 0 !important;
  min-width: 210px !important;
  padding: 20px 26px !important;
}

#toctitle, .toc .toctitle, #toc .toctitle h2, .toc .toctitle h2 {
  color: var(--ggb-orange) !important;
  font-family: var(--font-nav) !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  margin-bottom: 14px !important;
  text-transform: uppercase !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  display: block !important;
  text-shadow: none !important;
}

.toc a, #toc a {
  color: var(--ggb-cable) !important;
  font-family: var(--font-nav) !important;
  font-size: 11.5px !important;
  letter-spacing: 0.03em !important;
  text-decoration: none !important;
  transition: color var(--ggb-t) !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
  display: inline !important;
}

.toc a:hover, #toc a:hover { color: var(--ggb-orange-lt) !important; background: none !important; transform: none !important; }
.toc li, #toc li { margin: 5px 0 !important; }
.toc .tocnumber, #toc .tocnumber { color: var(--ggb-orange) !important; margin-right: 6px !important; }
.toc ul, #toc ul { margin-left: 16px !important; padding-left: 0 !important; list-style: none !important; }

/* ============================================================
   WIKITABLES
   ============================================================ */
.wikitable, table.wikitable {
  border: none !important;
  border-collapse: separate !important;
  border-radius: 10px !important;
  border-spacing: 0 !important;
  box-shadow: var(--ggb-shadow) !important;
  font-family: var(--font-body) !important;
  font-size: 0.95em !important;
  margin-bottom: 1.5em !important;
  overflow: hidden !important;
  width: 100% !important;
  background: white !important;
}

.wikitable > caption, table.wikitable > caption {
  background: var(--ggb-navy) !important;
  border-radius: 10px 10px 0 0 !important;
  color: var(--ggb-orange) !important;
  font-family: var(--font-nav) !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 0.18em !important;
  padding: 12px 18px !important;
  text-align: left !important;
  text-transform: uppercase !important;
}

.wikitable th, table.wikitable th {
  background: var(--ggb-navy-mid) !important;
  border: none !important;
  border-bottom: 2px solid var(--ggb-orange) !important;
  color: var(--ggb-fog) !important;
  font-family: var(--font-nav) !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  padding: 13px 18px !important;
  text-align: left !important;
  text-transform: uppercase !important;
}

.wikitable td, table.wikitable td {
  background: white !important;
  border: none !important;
  border-bottom: 1px solid var(--ggb-fog-dark) !important;
  color: var(--ggb-text) !important;
  padding: 11px 18px !important;
  transition: background var(--ggb-t) !important;
  vertical-align: middle !important;
}

.wikitable tr:nth-child(even) td, table.wikitable tr:nth-child(even) td { background: var(--ggb-fog) !important; }
.wikitable tr:hover td, table.wikitable tr:hover td { background: rgba(200,92,43,0.06) !important; }

/* ============================================================
   STANDARD INFOBOX
   ============================================================ */
.infobox, table.infobox {
  background: white !important;
  border: 1px solid var(--ggb-fog-dark) !important;
  border-radius: 10px !important;
  box-shadow: var(--ggb-shadow) !important;
  float: right !important;
  font-size: 0.88em !important;
  margin: 0 0 1.5em 1.8em !important;
  overflow: hidden !important;
  width: 280px !important;
}

.infobox caption, table.infobox caption {
  background: var(--ggb-navy) !important;
  color: var(--ggb-fog) !important;
  font-family: var(--font-display) !important;
  font-size: 1.15em !important;
  font-weight: 600 !important;
  padding: 14px 16px !important;
}

.infobox th, table.infobox th {
  background: var(--ggb-fog) !important;
  border: none !important;
  border-bottom: 1px solid var(--ggb-fog-dark) !important;
  color: var(--ggb-text-mid) !important;
  font-family: var(--font-nav) !important;
  font-size: 9.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.1em !important;
  padding: 9px 12px !important;
  text-align: right !important;
  text-transform: uppercase !important;
  width: 42% !important;
}

.infobox td, table.infobox td {
  border: none !important;
  border-bottom: 1px solid var(--ggb-fog-dark) !important;
  color: var(--ggb-text) !important;
  font-family: var(--font-body) !important;
  padding: 9px 12px !important;
  background: white !important;
}

.infobox a, table.infobox a             { color: var(--ggb-water) !important; }
.infobox a:hover, table.infobox a:hover { color: var(--ggb-orange) !important; background: none !important; }

/* ============================================================
   PORTABLE INFOBOX — Colorverse, fully preserved
   ============================================================ */
.portable-infobox .pi-secondary-background {
    background: linear-gradient(to bottom, #414141, #191919);
    border: 4px solid #000;
}

.pi-border-color {
    border-color: black;
    border-width: 4px;
    border-radius: 20px;
}

.portable-infobox .pi-image {
    background: repeating-linear-gradient(-45deg,
        rgba(0,0,0,0.2) 6%, rgba(0,0,0,0.2) 10%,
        transparent 10%, transparent 15%);
    background-color: rgba(0,0,0,0.2);
}

.portable-infobox .pi-title {
    border-radius: 15px 15px 0 0;
    border-width: 0 0 3px 0;
    border-style: solid;
    border-color: black;
    color: white;
    font-size: 25px !important;
    font-family: Fredoka !important;
    text-shadow: 2px 0 0 black, -2px 0 0 black, 0 2px 0 black, 0 -2px 0 black,
                 2px 2px 0 black, -2px -2px 0 black, -2px 2px 0 black, 2px -2px 0 black;
}

.portable-infobox .pi-header {
    border-width: 3px 0 3px 0 !important;
    border-style: solid !important;
    border-color: black !important;
    color: white;
    font-size: 16px !important;
    font-family: Fredoka !important;
    text-shadow: 1px 0 0 black, -1px 0 0 black, 0 1px 0 black, 0 -1px 0 black,
                 1px 1px 0 black, -1px -1px 0 black, -1px 1px 0 black, 1px -1px 0 black;
}

.portable-infobox .pi-data-label {
  font-size: 0.68rem !important;
  padding: 1px 7px !important;
  line-height: 1.3 !important;
  border-radius: 20px !important;
  background: var(--ggb-orange) !important;
  color: white !important;
  border: 1px solid var(--kc-black) !important;
  display: inline-block !important;
  font-family: var(--font-nav) !important;
}

.portable-infobox .pi-image img {
  transition: none !important;
  transform: none !important;
}

.portable-infobox .pi-image img:hover {
  transform: none !important;
  filter: none !important;
  box-shadow: none !important;
}

/* ============================================================
   BLOCKQUOTES
   ============================================================ */
.mw-body-content blockquote, blockquote {
  background: rgba(200,92,43,0.05) !important;
  border-left: 4px solid var(--ggb-orange) !important;
  border-radius: 0 6px 6px 0 !important;
  color: var(--ggb-text-mid) !important;
  font-size: 1.05em !important;
  font-style: italic !important;
  margin: 1.6em 0 !important;
  padding: 18px 24px !important;
  box-shadow: none !important;
  font-family: var(--font-body) !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
}

/* ============================================================
   CODE / PRE
   ============================================================ */
.mw-body-content code, code, tt {
  background: var(--ggb-navy) !important;
  border: none !important;
  border-radius: 4px !important;
  color: var(--ggb-orange-lt) !important;
  font-family: 'Fira Code', 'Courier New', monospace !important;
  font-size: 0.85em !important;
  padding: 2px 7px !important;
}

.mw-body-content pre, pre {
  background: var(--ggb-navy) !important;
  border: none !important;
  border-left: 3px solid var(--ggb-orange) !important;
  border-radius: 0 8px 8px 0 !important;
  color: var(--ggb-fog) !important;
  font-family: 'Fira Code', 'Courier New', monospace !important;
  font-size: 0.84em !important;
  line-height: 1.65 !important;
  margin: 1.4em 0 !important;
  overflow-x: auto !important;
  padding: 18px 24px !important;
  box-shadow: none !important;
}

/* ============================================================
   HORIZONTAL RULE
   ============================================================ */
.mw-body-content hr {
  border: none !important;
  border-top: 1px solid var(--ggb-fog-dark) !important;
  margin: 2.2em 0 !important;
  position: relative !important;
}

.mw-body-content hr::after {
  background: var(--ggb-orange) !important;
  border-radius: 50% !important;
  content: '' !important;
  display: block !important;
  height: 8px !important; width: 8px !important;
  left: 50% !important;
  margin-left: -4px !important;
  margin-top: -4px !important;
  position: absolute !important;
  top: 0 !important;
}

/* ============================================================
   IMAGES / THUMBNAILS
   ============================================================ */
.thumb { background: transparent !important; border: none !important; }

.thumb .thumbinner {
  background: white !important;
  border: none !important;
  border-radius: 8px !important;
  box-shadow: var(--ggb-shadow) !important;
  overflow: hidden !important;
  padding: 0 !important;
}

.thumb .thumbcaption {
  background: var(--ggb-fog-mid) !important;
  border-top: 1px solid var(--ggb-fog-dark) !important;
  color: var(--ggb-text-light) !important;
  font-family: var(--font-nav) !important;
  font-size: 11px !important;
  letter-spacing: 0.04em !important;
  padding: 8px 12px !important;
}

/* ============================================================
   CATEGORY LINKS
   ============================================================ */
#catlinks, .mw-normal-catlinks {
  background: var(--ggb-fog-mid) !important;
  border: none !important;
  border-radius: 0 0 8px 8px !important;
  border-top: 3px solid var(--ggb-orange) !important;
  color: var(--ggb-text-light) !important;
  font-family: var(--font-nav) !important;
  font-size: 11.5px !important;
  letter-spacing: 0.05em !important;
  margin-top: 2.5em !important;
  padding: 14px 22px !important;
  box-shadow: none !important;
  margin-bottom: 0 !important;
}

#catlinks a, .mw-normal-catlinks a {
  color: var(--ggb-water) !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 3px !important;
  display: inline !important;
  box-shadow: none !important;
  font-size: inherit !important;
  font-weight: normal !important;
  text-decoration: none !important;
  transition: color var(--ggb-t) !important;
}

#catlinks a:hover, .mw-normal-catlinks a:hover {
  color: var(--ggb-orange) !important;
  background: none !important;
  transform: none !important;
}

/* ============================================================
   DIFF PAGES
   ============================================================ */
table.diff { border-radius: 8px !important; overflow: hidden !important; }
td.diff-addedline, .diff-addedline   { background: rgba(26,74,110,0.09) !important; border-left: 5px solid var(--ggb-water) !important; }
td.diff-deletedline, .diff-deletedline { background: rgba(200,92,43,0.09) !important; border-left: 5px solid var(--ggb-orange) !important; }
td.diff-marker { color: var(--ggb-orange) !important; font-weight: 600 !important; }
.diffchange { background: rgba(201,168,76,0.3) !important; color: var(--ggb-text) !important; font-weight: bold; }

/* ============================================================
   ALERTS & MESSAGES
   ============================================================ */
.mw-message-box, .warningbox, .errorbox, .successbox {
  border-radius: 8px !important;
  border: none !important;
  font-family: var(--font-nav) !important;
  font-size: 13px !important;
  letter-spacing: 0.03em !important;
  padding: 14px 18px !important;
}
.warningbox  { background: rgba(201,168,76,0.12) !important; border-left: 4px solid var(--ggb-gold) !important; }
.errorbox    { background: rgba(200,92,43,0.1) !important;   border-left: 4px solid var(--ggb-orange) !important; }
.successbox  { background: rgba(26,74,110,0.08) !important;  border-left: 4px solid var(--ggb-water) !important; }

/* ============================================================
   TARGET HIGHLIGHT
   ============================================================ */
:target {
  animation: ggbPulse 1.4s ease 0.2s !important;
  border-radius: var(--ggb-radius) !important;
}

/* ============================================================
   NOTIFICATIONS
   ============================================================ */
.mw-notification {
  background: var(--ggb-navy) !important;
  border: 1px solid rgba(200,92,43,0.4) !important;
  border-radius: 8px !important;
  border-left: 4px solid var(--ggb-orange) !important;
  box-shadow: 0 8px 32px rgba(11,27,43,0.4) !important;
  color: var(--ggb-fog) !important;
  font-family: var(--font-nav) !important;
}

/* ============================================================
   FOOTER — GGB with bridge silhouette
   ============================================================ */
#footer {
  background: var(--ggb-navy) !important;
  border-top: 3px solid var(--ggb-orange) !important;
  color: var(--ggb-cable) !important;
  font-family: var(--font-nav) !important;
  font-size: 11px !important;
  letter-spacing: 0.06em !important;
  margin-left: 0 !important;
  overflow: hidden !important;
  padding: 0 32px 28px !important;
  position: relative !important;
}

#footer::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 160'%3E%3Crect x='348' y='8' width='22' height='120' rx='4' fill='%23C85C2B' opacity='0.45'/%3E%3Crect x='348' y='8' width='6' height='120' rx='3' fill='%23C85C2B' opacity='0.3'/%3E%3Crect x='364' y='8' width='6' height='120' rx='3' fill='%23C85C2B' opacity='0.3'/%3E%3Crect x='828' y='8' width='22' height='120' rx='4' fill='%23C85C2B' opacity='0.45'/%3E%3Crect x='828' y='8' width='6' height='120' rx='3' fill='%23C85C2B' opacity='0.3'/%3E%3Crect x='844' y='8' width='6' height='120' rx='3' fill='%23C85C2B' opacity='0.3'/%3E%3Cpath d='M0 62 Q359 125 359 18 Q600 -12 839 18 Q839 125 1200 62' stroke='%23C85C2B' stroke-width='2.5' fill='none' opacity='0.5'/%3E%3Cline x1='200' y1='76' x2='200' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='248' y1='55' x2='248' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='296' y1='36' x2='296' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='340' y1='22' x2='340' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='410' y1='10' x2='410' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='470' y1='4' x2='470' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='530' y1='1' x2='530' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='600' y1='0' x2='600' y2='128' stroke='%23C85C2B' stroke-width='1.2' opacity='0.28'/%3E%3Cline x1='670' y1='1' x2='670' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='730' y1='4' x2='730' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='790' y1='10' x2='790' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='860' y1='22' x2='860' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='904' y1='36' x2='904' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='952' y1='55' x2='952' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Cline x1='1000' y1='76' x2='1000' y2='128' stroke='%23C85C2B' stroke-width='1' opacity='0.22'/%3E%3Crect y='128' width='1200' height='10' rx='2' fill='%23C85C2B' opacity='0.4'/%3E%3Crect y='138' width='1200' height='22' fill='%231A4A6E' opacity='0.3'/%3E%3C/svg%3E") !important;
  background-position: center top !important;
  background-repeat: no-repeat !important;
  background-size: 100% auto !important;
  content: '' !important;
  height: 160px !important;
  left: 0 !important;
  pointer-events: none !important;
  position: absolute !important;
  right: 0 !important;
  top: 0 !important;
}

#footer-info, #footer-places, #footer-icons {
  margin-top: 170px !important;
  position: relative !important;
  z-index: 1 !important;
}

#footer li  { color: var(--ggb-cable) !important; }
#footer a   { color: rgba(138,155,176,0.85) !important; text-decoration: none !important; transition: color var(--ggb-t) !important; }
#footer a:hover { color: var(--ggb-orange-lt) !important; }

/* ============================================================
   JS-INJECTED ELEMENTS
   ============================================================ */
/* GGB: reading progress bar */
#ggb-progress {
  background: linear-gradient(90deg, var(--ggb-orange-dk) 0%, var(--ggb-orange) 50%, var(--ggb-gold) 100%) !important;
  box-shadow: 0 0 10px rgba(200,92,43,0.5) !important;
  height: 3px !important;
  left: 0 !important; top: 0 !important;
  position: fixed !important;
  transition: width 0.12s linear !important;
  width: 0% !important;
  z-index: 9999 !important;
}

/* GGB: back-to-top button */
#ggb-top-btn {
  align-items: center !important;
  background: var(--ggb-orange) !important;
  border: none !important;
  border-radius: 50% !important;
  bottom: 30px !important; right: 28px !important;
  box-shadow: 0 4px 18px rgba(200,92,43,0.45) !important;
  color: white !important;
  cursor: pointer !important;
  display: flex !important;
  font-family: var(--font-nav) !important;
  font-size: 20px !important;
  height: 44px !important; width: 44px !important;
  justify-content: center !important;
  line-height: 1 !important;
  opacity: 0 !important;
  position: fixed !important;
  transform: translateY(10px) !important;
  transition: opacity 0.3s ease, transform 0.3s ease, background 0.2s ease !important;
  z-index: 9990 !important;
}
#ggb-top-btn.visible { opacity: 1 !important; transform: translateY(0) !important; }
#ggb-top-btn:hover   { background: var(--ggb-orange-dk) !important; }

/* Colorverse: sparkle effect */
.kc-sparkle {
  position: fixed;
  pointer-events: none;
  z-index: 9999;
  font-size: 1.1rem;
  animation: kc-sparkle-fade 0.7s ease-out forwards;
  user-select: none;
}

#kc-confetti-canvas {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 9998;
}

/* GGB: scroll reveal */
.ggb-reveal { opacity: 0; transform: translateY(22px); transition: opacity 0.65s ease, transform 0.65s ease; }
.ggb-reveal.ggb-in { opacity: 1; transform: translateY(0); }
.ggb-reveal.ggb-in-delay { transition-delay: 0.1s; }

/* ============================================================
   SCROLLBAR — GGB
   ============================================================ */
::-webkit-scrollbar              { height: 7px; width: 7px; }
::-webkit-scrollbar-track        { background: var(--ggb-fog-dark); }
::-webkit-scrollbar-thumb        { background: var(--ggb-cable); border-radius: 4px; border: none; }
::-webkit-scrollbar-thumb:hover  { background: var(--ggb-orange); }
::-webkit-scrollbar-corner       { background: var(--ggb-fog); }

/* ============================================================
   TEXT SELECTION
   ============================================================ */
::selection {
  background: rgba(200,92,43,0.22) !important;
  color: var(--ggb-navy) !important;
}

/* ============================================================
   GRADIENT TEXT FIX (Colorverse {{Gradient}} template)
   ============================================================ */
.mwgt {
    -webkit-text-stroke: 0 transparent !important;
    text-stroke: 0 transparent !important;
    paint-order: fill !important;
}

/* ============================================================
   DROPDOWN MENU TEMPLATE — restyled for GGB palette
   ============================================================ */
.mw-dropdown-item-inner { display: flex; align-items: center; gap: 6px; }

.mw-dropdown { position: relative; display: inline-block; margin: 2px 1px; }

.mw-dropdown-toggle {
  background: var(--ggb-fog-mid);
  border: 1px solid var(--ggb-fog-dark);
  border-radius: var(--ggb-radius);
  padding: 5px 28px 5px 10px;
  font-size: 12px;
  font-family: var(--font-nav);
  letter-spacing: 0.05em;
  cursor: pointer;
  color: var(--ggb-text-mid);
  position: relative;
  white-space: nowrap;
  -webkit-user-select: none;
  user-select: none;
  transition: background var(--ggb-t), border-color var(--ggb-t);
}

.mw-dropdown-toggle::after {
  content: '';
  display: inline-block;
  width: 0; height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid var(--ggb-text-mid);
  position: absolute;
  right: 10px; top: 50%;
  transform: translateY(-50%);
}

.mw-dropdown:hover .mw-dropdown-toggle  { background: var(--ggb-fog-dark); border-color: var(--ggb-cable); }

.mw-dropdown-content {
  display: none;
  position: absolute;
  top: 100%; left: 0;
  z-index: 100;
  background: var(--ggb-fog);
  border: 1px solid var(--ggb-fog-dark);
  border-radius: var(--ggb-radius);
  min-width: 180px;
  box-shadow: var(--ggb-shadow);
  padding: 4px 0;
  max-height: 60vh;
  overflow-y: auto;
}

.mw-dropdown:hover .mw-dropdown-content,
.mw-dropdown.open .mw-dropdown-content  { display: block !important; }

.mw-dropdown-content a {
  display: block;
  padding: 6px 14px;
  font-size: 12px;
  font-family: var(--font-nav);
  letter-spacing: 0.04em;
  color: var(--ggb-water) !important;
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--ggb-t), color var(--ggb-t);
}

.mw-dropdown-content a:hover { background: rgba(200,92,43,0.08); color: var(--ggb-orange) !important; }
.mw-dropdown-divider          { height: 1px; background: var(--ggb-fog-dark); margin: 4px 0; }

.mw-dropdown-header {
  display: block;
  padding: 5px 14px 3px;
  font-size: 9px;
  font-family: var(--font-nav);
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--ggb-orange);
  pointer-events: none;
}

.mw-dropdown-right .mw-dropdown-content { left: auto; right: 0; }

.mw-dropdown-toolbar .mw-dropdown-toggle           { background: transparent; border-color: transparent; }
.mw-dropdown-toolbar:hover .mw-dropdown-toggle     { background: var(--ggb-fog-mid); border-color: var(--ggb-fog-dark); }
.mw-dropdown.open .mw-dropdown-content             { display: block; }
.mw-dropdown.open .mw-dropdown-toggle              { background: var(--ggb-fog-dark); border-color: var(--ggb-cable); }

/* ============================================================
   PORTAL BUTTON GRID — restyled for GGB palette
   ============================================================ */
.portal-grid { display: grid; gap: 16px; margin: 1rem 0 1.5rem; }
.portal-grid > p { display: contents; }

.portal-grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
.portal-grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
.portal-grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
.portal-grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
.portal-grid-cols-5 { grid-template-columns: repeat(5, 1fr); }
.portal-grid-cols-6 { grid-template-columns: repeat(6, 1fr); }
.portal-grid:not([class*="portal-grid-cols"]) { grid-template-columns: repeat(3, 1fr); }

@media (max-width: 900px) {
  .portal-grid,
  .portal-grid-cols-3,
  .portal-grid-cols-4,
  .portal-grid-cols-5,
  .portal-grid-cols-6 { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 540px) {
  .portal-grid { grid-template-columns: 1fr !important; }
}

.portal-grid-heading {
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--ggb-fog);
  background: var(--ggb-navy);
  border-left: 4px solid var(--ggb-orange);
  padding: 0.3em 0.8em;
  margin-bottom: 0.75rem;
  display: inline-block;
  border-radius: 0 var(--ggb-radius) var(--ggb-radius) 0;
}

.portal-btn-wrap { display: contents; }
.portal-grid > p > .portal-btn-wrap, .portal-grid .portal-btn-wrap { display: contents; }

div.portal-btn {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  background: white;
  border: 1px solid var(--ggb-fog-dark);
  border-radius: 10px;
  box-shadow: var(--ggb-shadow);
  overflow: hidden;
  transition: transform var(--ggb-t), box-shadow var(--ggb-t);
  position: relative;
  cursor: pointer;
}

div.portal-btn:hover { transform: translateY(-5px); box-shadow: 0 8px 30px rgba(11,27,43,0.18); }
div.portal-btn:active { transform: translateY(0); }

.portal-btn-stretched-link { position: absolute; inset: 0; z-index: 1; display: block; }

div.portal-btn a,
div.portal-btn a:hover {
  text-decoration: none !important;
  background: none !important;
  color: inherit !important;
  transform: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
}

.portal-btn-top {
  height: 4px;
  background: linear-gradient(90deg, var(--ggb-orange), var(--ggb-gold));
  flex-shrink: 0;
}

.portal-btn-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--ggb-fog-mid);
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 1px solid var(--ggb-fog-dark);
  flex-shrink: 0;
}

.portal-btn-img img {
  width: 100% !important; height: 100% !important;
  object-fit: cover !important; display: block !important;
  transition: transform 0.3s ease;
}

div.portal-btn:hover .portal-btn-img img { transform: scale(1.05); }
.portal-btn-img:empty::after { content: '🖼️'; font-size: 2.5rem; opacity: 0.3; }

.portal-btn-body { padding: 10px 14px 30px; flex: 1; display: flex; flex-direction: column; gap: 4px; }

.portal-btn-title {
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ggb-navy);
  line-height: 1.2;
  display: flex;
  align-items: center;
}

.portal-btn-dot {
  display: inline-block;
  width: 8px; height: 8px; min-width: 8px;
  background: var(--ggb-orange);
  border-radius: 50%;
  margin-right: 6px;
}

.portal-btn-desc { font-family: var(--font-body); font-size: 0.85rem; color: var(--ggb-text-light); line-height: 1.4; margin-top: 2px; }

.portal-btn-arrow {
  position: absolute;
  bottom: 10px; right: 12px;
  font-family: var(--font-nav);
  font-size: 0.9rem;
  color: var(--ggb-orange);
  border: 1.5px solid var(--ggb-fog-dark);
  border-radius: 50%;
  width: 24px; height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--ggb-t), border-color var(--ggb-t);
  line-height: 1;
  z-index: 0;
}

div.portal-btn:hover .portal-btn-arrow { transform: translateX(3px); border-color: var(--ggb-orange); }

/* ============================================================
   PAGE COLOR SYSTEM (Colorverse {{PageColor}} template)
   ============================================================ */
body.has-page-color #content,
body.has-page-color .mw-body {
  background-color: var(--kc-page-bg) !important;
}
body.has-page-color #mw-content,
body.has-page-color #mw-content-wrapper,
body.has-page-color #mw-content-block,
body.has-page-color #mw-content-container,
body.has-page-color #mw-wrapper {
  background: var(--kc-page-bg) !important;
}
body.has-page-color #mw-content-text a       { color: var(--kc-page-links) !important; }
body.has-page-color #firstHeading,
body.has-page-color .firstHeading,
body.has-page-color .mw-first-heading        { background-color: var(--kc-page-h1) !important; color: var(--kc-page-h1text) !important; }
body.has-page-color .mw-body-content h2,
body.has-page-color .mw-heading2 > h2       { background-color: var(--kc-page-h2) !important; }
body.has-page-color .mw-body-content h3,
body.has-page-color .mw-heading3 > h3       { background-color: var(--kc-page-h3) !important; }
body.has-page-color #content,
body.has-page-color .mw-body                 { border-color: var(--kc-page-border) !important; box-shadow: 4px 4px 0 var(--kc-page-shadow) !important; }
body.has-page-color #toc,
body.has-page-color .toc                     { background-color: var(--kc-page-toc) !important; }
body.has-page-color #catlinks                { background-color: var(--kc-page-cats) !important; }
body.has-page-color #bodyContent a           { color: var(--kc-page-links, var(--ggb-water)) !important; }
body.has-page-color #bodyContent a:hover     { background: var(--kc-page-links, var(--ggb-water)) !important; color: #fff !important; }
body.has-page-color h1,
body.has-page-color .mw-first-heading,
body.has-page-color #firstHeading            { background: var(--kc-page-h1) !important; color: var(--kc-page-h1text) !important; border-color: var(--kc-page-border) !important; box-shadow: 5px 5px 0 var(--kc-page-shadow) !important; }
body.has-page-color h2                       { background: var(--kc-page-h2) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color h3                       { background: var(--kc-page-h3) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color h4                       { color: var(--kc-page-h2) !important; border-bottom-color: var(--kc-page-h2) !important; }
body.has-page-color #toc,
body.has-page-color .toc                     { background: var(--kc-page-toc) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color #catlinks,
body.has-page-color .mw-normal-catlinks      { background: var(--kc-page-cats) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color .wikitable th            { background: var(--kc-page-h2) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color .wikitable td            { border-color: var(--kc-page-border) !important; }
body.has-page-color .mw-editsection a        { background: var(--kc-page-toc) !important; border-color: var(--kc-page-border) !important; }
body.has-page-color blockquote               { border-left-color: var(--kc-page-links, var(--ggb-orange)) !important; }
body.has-page-color ::selection              { background: var(--kc-page-toc) !important; }

/* ============================================================
   BLINKIE SYSTEM — restyled for GGB palette
   ============================================================ */
.blinkie-wrap {
    display: inline-block;
    line-height: 0;
    vertical-align: middle;
    transition: transform 0.15s, filter 0.15s;
    cursor: default;
}

.blinkie-wrap:hover {
    transform: scale(1.12) rotate(-2deg);
    filter: brightness(1.15) drop-shadow(0 0 6px rgba(200,92,43,0.5));
    z-index: 2;
    position: relative;
}

.blinkie-wrap img, .blinkie-wrap a img {
    max-width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    display: block !important;
    image-rendering: pixelated;
    image-rendering: -moz-crisp-edges;
    border: none !important;
    outline: none !important;
}

.blinkie-box {
    font-family: var(--font-nav);
    background: var(--ggb-navy);
    border: 1px solid var(--ggb-navy-light);
    border-radius: 8px;
    padding: 6px 8px 8px;
    box-shadow: var(--ggb-shadow), 0 0 0 1px var(--ggb-orange);
    box-sizing: border-box;
    overflow: hidden;
}

.blinkie-box-title {
    font-family: var(--font-nav);
    font-size: 0.62rem;
    color: var(--ggb-orange);
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    padding: 0 0 5px;
    border-bottom: 1px solid rgba(200,92,43,0.35);
    margin-bottom: 6px;
    user-select: none;
}

.blinkie-box-inner { display: grid; gap: 4px; align-items: center; justify-items: center; }
.blinkie-pos-inline { display: inline-block; vertical-align: top; margin: 0.5rem 0; }

.blinkie-pos-bottom-right,
.blinkie-pos-bottom-left,
.blinkie-pos-top-right,
.blinkie-pos-top-left {
    position: fixed;
    z-index: 5000;
    max-width: 200px;
    cursor: grab;
    transition: box-shadow 0.15s;
    animation: blinkie-border-cycle 3s linear infinite;
    outline: 2px solid var(--ggb-orange);
    outline-offset: 2px;
}

.blinkie-pos-bottom-right .blinkie-box-inner,
.blinkie-pos-bottom-left .blinkie-box-inner,
.blinkie-pos-top-right .blinkie-box-inner,
.blinkie-pos-top-left .blinkie-box-inner { grid-template-columns: repeat(2, auto); }

.blinkie-pos-bottom-right:active,
.blinkie-pos-bottom-left:active,
.blinkie-pos-top-right:active,
.blinkie-pos-top-left:active { cursor: grabbing; }

.blinkie-pos-bottom-right { bottom: 14px; right: 14px; }
.blinkie-pos-bottom-left  { bottom: 14px; left:  14px; }
.blinkie-pos-top-right    { top:    14px; right: 14px; }
.blinkie-pos-top-left     { top:    14px; left:  14px; }

.blinkie-minimize-btn {
    display: block; width: 100%;
    background: none; border: none;
    border-bottom: 1px solid rgba(200,92,43,0.35);
    color: var(--ggb-orange);
    font-family: var(--font-nav);
    font-size: 0.6rem;
    text-transform: uppercase; letter-spacing: 0.1em;
    padding: 2px 0 5px; margin-bottom: 6px;
    cursor: pointer; text-align: center;
    transition: color var(--ggb-t);
}
.blinkie-minimize-btn:hover { color: var(--ggb-fog); }
.blinkie-box.blinkie-minimized .blinkie-box-inner { display: none; }
.blinkie-box.blinkie-minimized { padding-bottom: 4px; }

@media (max-width: 600px) {
    .blinkie-pos-bottom-right,
    .blinkie-pos-bottom-left,
    .blinkie-pos-top-right,
    .blinkie-pos-top-left { display: none; }
}

/* ============================================================
   CARD LAYOUT (.square / .container)
   ============================================================ */
.page-wrapper { max-width: 1200px; margin: 0 auto; }

.container {
    display: flex; flex-direction: row; flex-wrap: wrap;
    gap: 20px; padding: 20px; justify-content: center;
}

.square {
    width: 160px; height: auto; min-height: 320px;
    border: 1px solid var(--ggb-fog-dark) !important;
    border-radius: 10px !important;
    padding: 0; text-align: center;
    background: var(--ggb-navy);
    transition: transform var(--ggb-t), box-shadow var(--ggb-t);
    box-sizing: border-box;
    display: flex; flex-direction: column; overflow: hidden;
    box-shadow: var(--ggb-shadow) !important;
}

.square:hover { transform: translateY(-6px) !important; box-shadow: 0 12px 32px rgba(11,27,43,0.22) !important; }

.square .image-wrapper { width: 160px; height: auto; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.square .image-wrapper img { width: 160px !important; height: auto !important; max-width: 160px !important; object-fit: contain; display: block; }
.square hr { margin: 10px 15px; border-color: rgba(138,155,176,0.2); }
.square p { margin: 5px 15px; font-weight: 600; font-size: 14px; font-family: var(--font-display) !important; color: var(--ggb-fog); }

.square .placeholder {
    font-family: var(--font-nav) !important;
    font-weight: normal; color: var(--ggb-cable);
    font-size: 11px; margin: 5px 15px 15px 15px;
    opacity: 0; transition: opacity 0.3s ease;
    letter-spacing: 0.06em; text-transform: uppercase;
}
.square:hover .placeholder { opacity: 1; }

/* ============================================================
   UTILITY CLASSES — restyled for GGB
   ============================================================ */
.kc-tag {
    display: inline-block;
    background: var(--ggb-orange);
    color: white;
    font-family: var(--font-nav);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: 3px;
    padding: 2px 10px;
    margin: 2px;
    border: none;
    box-shadow: none;
}
.kc-tag-blue   { background: var(--ggb-water) !important; }
.kc-tag-green  { background: #2A7A3A !important; }
.kc-tag-yellow { background: var(--ggb-gold) !important; color: var(--ggb-navy) !important; }

.kc-callout {
    background: rgba(200,92,43,0.06);
    border: 1px solid var(--ggb-orange);
    border-left: 4px solid var(--ggb-orange);
    border-radius: 0 var(--ggb-radius) var(--ggb-radius) 0;
    padding: 0.8em 1.2em;
    font-family: var(--font-body);
    margin: 1rem 0;
    position: relative;
    box-shadow: none;
}
.kc-callout::before {
    content: '◆';
    position: absolute;
    top: -11px; left: 12px;
    font-size: 0.9rem;
    color: var(--ggb-orange);
    line-height: 1;
}
.kc-callout-red   { background: rgba(200,92,43,0.08) !important; border-color: var(--ggb-orange-dk) !important; }
.kc-callout-blue  { background: rgba(26,74,110,0.08) !important; border-color: var(--ggb-water) !important; }
.kc-callout-green { background: rgba(42,122,58,0.08) !important; border-color: #2A7A3A !important; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media screen and (max-width: 800px) {
  #content, .mw-body {
    border-radius: 0 !important;
    margin: 0 !important;
    padding: 20px 18px 36px !important;
  }
  #firstHeading, .mw-first-heading { font-size: 2.1em !important; }
  table.wikitable, .infobox, table.infobox { font-size: 0.85em !important; }
  #ggb-top-btn { bottom: 18px !important; right: 14px !important; }
}