MediaWiki:Common.css: Difference between revisions

From UO Renaissance Wiki
Jump to navigation Jump to search
Add floating scroll to top button across all wiki pages
Reposition scroll to top button outside main box and above navbar
Line 364: Line 364:
.uor-scroll-top-btn {
.uor-scroll-top-btn {
   position: fixed;
   position: fixed;
   bottom: 28px;
   bottom: 54px;
   right: 28px;
   right: 28px;
   width: 46px;
   width: 44px;
   height: 46px;
   height: 44px;
   background: linear-gradient(135deg, rgba(32, 24, 15, 0.92), rgba(16, 12, 7, 0.96));
   background: linear-gradient(135deg, rgba(32, 24, 15, 0.94), rgba(16, 12, 7, 0.98));
   border: 1.5px solid #d4af37;
   border: 1.5px solid #d4af37;
   border-radius: 50%;
   border-radius: 50%;
Line 377: Line 377:
   cursor: pointer;
   cursor: pointer;
   z-index: 9999;
   z-index: 9999;
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.75), 0 0 10px rgba(212, 175, 55, 0.35);
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.8), 0 0 10px rgba(212, 175, 55, 0.35);
   opacity: 0;
   opacity: 0;
   visibility: hidden;
   visibility: hidden;
   transform: translateY(16px) scale(0.9);
   transform: translateY(14px) scale(0.9);
   transition: opacity 0.28s ease, transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.28s, background 0.2s, box-shadow 0.2s, border-color 0.2s;
   transition: opacity 0.28s ease, transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.28s, background 0.2s, box-shadow 0.2s, border-color 0.2s, left 0.15s ease;
   user-select: none;
   user-select: none;
   text-decoration: none !important;
   text-decoration: none !important;
Line 420: Line 420:
@media (max-width: 768px) {
@media (max-width: 768px) {
   .uor-scroll-top-btn {
   .uor-scroll-top-btn {
     bottom: 20px;
     bottom: 50px !important;
     right: 20px;
     right: 16px !important;
     width: 42px;
    left: auto !important;
     height: 42px;
     width: 40px;
     height: 40px;
   }
   }
   .uor-scroll-top-btn svg {
   .uor-scroll-top-btn svg {
     width: 19px;
     width: 18px;
     height: 19px;
     height: 18px;
   }
   }
}
}

Revision as of 18:15, 9 September 2026

/* UO:Renaissance Wiki - Global Theme Enhancements */

/* Spell Card Image Sizing & High-Resolution Pixel Art */
.uor-spell-card td.uor-spell-art {
  width: 120px !important;
  max-width: 120px !important;
  text-align: center !important;
  vertical-align: middle !important;
  padding: 12px !important;
}

.uor-spell-card td.uor-spell-art img {
  width: 88px !important;
  max-width: 88px !important;
  height: 88px !important;
  border-radius: 4px;
  border: 1px solid #1a150e;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.7);
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
  display: inline-block;
  margin: 0 auto;
}

/* Fallback for table image sizing across wiki content */
.mw-body-content table td img {
  max-height: 180px;
}
/* Responsive container and horizontal scrolling for data tables */
.table-responsive {
  width: 100% !important;
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch !important;
  margin: 16px 0 24px 0 !important;
  display: block !important;
}

/* Bulk Order Matrix Table Enhancements */
.bod-matrix-table {
  width: 100% !important;
  border-collapse: collapse !important;
  font-size: 0.88rem !important;
}

.bod-matrix-table th {
  white-space: nowrap !important;
  padding: 8px 10px !important;
  font-size: 0.84rem !important;
  letter-spacing: 0.03em !important;
}

.bod-matrix-table td {
  padding: 6px 10px !important;
  white-space: nowrap !important;
  vertical-align: middle !important;
}

.bod-matrix-table td.num {
  font-family: 'Consolas', 'Courier New', monospace !important;
  font-size: 0.88rem !important;
  text-align: right !important;
}

.bod-matrix-table tr.tier-divider td {
  border-bottom: 2px solid rgba(212, 175, 55, 0.45) !important;
}

.bod-matrix-table tr:hover td {
  background: rgba(212, 175, 55, 0.1) !important;
}

/* Sidebar Hover Flyout Submenus */
#mw-panel {
  z-index: 100 !important;
}
#mw-panel,
#mw-panel .portal,
#mw-panel .vector-menu-portal,
#mw-panel .vector-menu-content,
#mw-panel .vector-menu-content-list {
  overflow: visible !important;
}

#mw-panel .portal ul li.uor-sidebar-has-submenu {
  position: relative !important;
}

#mw-panel .portal ul li.uor-sidebar-has-submenu > a {
  display: flex !important;
  align-items: center !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

#mw-panel .portal ul li.uor-sidebar-has-submenu > a .uor-submenu-arrow {
  margin-left: auto !important;
  font-size: 0.78rem !important;
  color: var(--gold-dark, #a38237) !important;
  transition: transform 0.2s ease, color 0.2s ease !important;
  padding-left: 6px !important;
  display: inline-block !important;
  cursor: pointer !important;
}

#mw-panel .portal ul li.uor-sidebar-has-submenu:hover > a .uor-submenu-arrow,
#mw-panel .portal ul li.uor-sidebar-has-submenu.is-open > a .uor-submenu-arrow {
  color: var(--gold-bright, #ffd700) !important;
  transform: translateX(2px) !important;
}

.uor-sidebar-submenu {
  display: none !important;
  position: absolute !important;
  left: calc(100% + 8px) !important;
  top: -6px !important;
  min-width: 185px !important;
  background: rgba(14, 10, 6, 0.98) !important;
  border: 1px solid rgba(212, 175, 55, 0.55) !important;
  border-radius: 6px !important;
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.9), 0 0 12px rgba(212, 175, 55, 0.25) !important;
  padding: 6px 0 !important;
  list-style: none !important;
  margin: 0 !important;
  z-index: 1050 !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
}

/* Hover bridge buffer so cursor doesn't lose hover across gap */
.uor-sidebar-submenu::before {
  content: '' !important;
  position: absolute !important;
  left: -14px !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 16px !important;
  background: transparent !important;
}

#mw-panel .portal ul li.uor-sidebar-has-submenu:hover > .uor-sidebar-submenu,
#mw-panel .portal ul li.uor-sidebar-has-submenu:focus-within > .uor-sidebar-submenu,
#mw-panel .portal ul li.uor-sidebar-has-submenu.is-open > .uor-sidebar-submenu {
  display: block !important;
  animation: uorSubmenuFade 0.16s cubic-bezier(0.16, 1, 0.3, 1) forwards !important;
}

@keyframes uorSubmenuFade {
  from {
    opacity: 0;
    transform: translateX(-4px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.uor-sidebar-submenu li {
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
  line-height: 1.25 !important;
}

.uor-sidebar-submenu li a {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 7px 14px !important;
  color: var(--text-parchment, #e0d5ba) !important;
  font-family: 'Cardo', Georgia, serif !important;
  font-size: 0.90rem !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease !important;
}

.uor-sidebar-submenu li a::before {
  content: '▪';
  color: var(--gold-dark, #a38237);
  font-size: 0.68rem;
  line-height: 1;
  transition: color 0.15s ease;
}

.uor-sidebar-submenu li a:hover,
.uor-sidebar-submenu li a:focus {
  background: rgba(212, 175, 55, 0.20) !important;
  color: var(--gold-bright, #ffd700) !important;
  transform: translateX(3px) !important;
  text-decoration: none !important;
}

.uor-sidebar-submenu li a:hover::before {
  color: var(--gold-bright, #ffd700);
}

/* Factions 2x2 Strongholds Grid */
.factions-strongholds-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 22px !important;
  width: 100% !important;
  box-sizing: border-box !important;
  margin: 25px 0 !important;
}

@media (max-width: 768px) {
  .factions-strongholds-grid {
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
}


/* Hide page title heading on Main Page */
body.page-Main_Page #firstHeading,
body.rootpage-Main_Page #firstHeading,
body.page-Main_Page #siteSub,
body.rootpage-Main_Page #siteSub,
body.page-Main_Page #contentSub,
body.rootpage-Main_Page #contentSub,
body.page-Main_Page #jump-to-nav,
body.rootpage-Main_Page #jump-to-nav {
  display: none !important;
}


/* UO:Renaissance Carousel Styles */
.uor-carousel { position: relative; max-width: 680px; margin: 0 auto; aspect-ratio: 935 / 619; }
.uor-frame { position: relative; width: 100%; height: 100%; }
.uor-back {
  position: absolute !important;
  top: 22.5% !important;
  right: 15.5% !important;
  bottom: 10.5% !important;
  left: 15.5% !important;
  background: #000000 !important;
  overflow: hidden !important;
  border-radius: 0 !important;
  z-index: 1 !important;
}
.uor-layer {
  position: absolute !important;
  inset: 0 !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block;
  opacity: 0;
  pointer-events: none;
  background: transparent;
  transform: translateY(6px) scale(.985);
  transition: opacity .6s ease, transform .6s cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
  z-index: 1;
}
.uor-layer.is-active { opacity: 1; pointer-events: auto; transform: translateY(0) scale(1); }
.uor-layer img.uor-photo { width: 100%; height: 100%; object-fit: cover; object-position: center; border: none !important; }
.uor-frameimg {
  display: block; width: 100%; height: 100%; position: relative; z-index: 2; pointer-events: none;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,.5));
}
.uor-captions { max-width: 680px; margin: 14px auto 0; padding: 0 8px; text-align: center; }
.uor-cap {
  display: none; text-decoration: none; color: #f5e6c8 !important; font-weight: bold; line-height: 1.3;
  text-shadow: 0 1px 2px rgba(0,0,0,.85); opacity: 0; transform: translateY(4px);
  transition: opacity .5s ease, transform .5s ease; font-size: 1.3rem; font-family: 'Cinzel Decorative', serif;
}
.uor-cap.is-active { display: inline-block; opacity: 1; transform: translateY(0); }
.uor-dots { display: flex; gap: 6px; justify-content: center; margin: 12px 0 0; }
.uor-dot {
  width: 8px; height: 8px; border-radius: 999px; background: #2b5f2b; border: 1px solid #d4af37;
  cursor: pointer; transition: width .25s ease, background .25s ease;
}
.uor-dot.active { background: #d4af37; width: 18px; }


/* Move content up to top of container on Main Page and remove padding */
body.page-Main_Page .mw-body,
body.rootpage-Main_Page .mw-body {
  padding-top: 18px !important;
}
body.page-Main_Page #bodyContent,
body.rootpage-Main_Page #bodyContent,
body.page-Main_Page #mw-content-text,
body.rootpage-Main_Page #mw-content-text {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
body.page-Main_Page .uor-main-hero {
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 auto 16px auto !important;
}


/* ============================================================
   MAIN PAGE TOP FIT - REMOVE ALL EXCESS TOP PADDING & MARGINS
   ============================================================ */
body.page-Main_Page .mw-body,
body.rootpage-Main_Page .mw-body {
  padding-top: 2px !important;
}

body.page-Main_Page #siteNotice,
body.page-Main_Page #localNotice,
body.page-Main_Page .mw-indicators,
body.page-Main_Page #firstHeading,
body.page-Main_Page #siteSub,
body.page-Main_Page #contentSub,
body.page-Main_Page #contentSub2,
body.page-Main_Page #jump-to-nav,
body.page-Main_Page .mw-jump-link {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  line-height: 0 !important;
  border: none !important;
}

body.page-Main_Page #bodyContent,
body.page-Main_Page #mw-content-text,
body.page-Main_Page .mw-parser-output {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body.page-Main_Page .mw-parser-output > p:empty,
body.page-Main_Page .mw-parser-output > p.mw-empty-elt {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
}

body.page-Main_Page .uor-main-hero {
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 auto 4px auto !important;
}

body.page-Main_Page .uor-main-hero > div:first-child {
  margin: 0 0 2px 0 !important;
  padding: 0 !important;
  line-height: 1.05 !important;
}

body.page-Main_Page .uor-carousel-block {
  margin-top: 0 !important;
}
#left-navigation, #p-namespaces, #p-associated-pages { display: none !important; }

/* Floating Scroll to Top Arrow Button */
.uor-scroll-top-btn {
  position: fixed;
  bottom: 54px;
  right: 28px;
  width: 44px;
  height: 44px;
  background: linear-gradient(135deg, rgba(32, 24, 15, 0.94), rgba(16, 12, 7, 0.98));
  border: 1.5px solid #d4af37;
  border-radius: 50%;
  color: #ffd700;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 9999;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.8), 0 0 10px rgba(212, 175, 55, 0.35);
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px) scale(0.9);
  transition: opacity 0.28s ease, transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.28s, background 0.2s, box-shadow 0.2s, border-color 0.2s, left 0.15s ease;
  user-select: none;
  text-decoration: none !important;
  outline: none;
}

.uor-scroll-top-btn.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

.uor-scroll-top-btn:hover {
  background: linear-gradient(135deg, rgba(48, 36, 20, 0.98), rgba(24, 18, 10, 0.99));
  border-color: #ffdf6a;
  color: #ffffff;
  transform: translateY(-3px) scale(1.08);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.85), 0 0 18px rgba(255, 215, 0, 0.65);
}

.uor-scroll-top-btn:active {
  transform: translateY(0) scale(0.95);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.6);
}

.uor-scroll-top-btn svg {
  width: 22px;
  height: 22px;
  fill: currentColor;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.8));
  transition: transform 0.2s ease;
}

.uor-scroll-top-btn:hover svg {
  transform: translateY(-2px);
}

@media (max-width: 768px) {
  .uor-scroll-top-btn {
    bottom: 50px !important;
    right: 16px !important;
    left: auto !important;
    width: 40px;
    height: 40px;
  }
  .uor-scroll-top-btn svg {
    width: 18px;
    height: 18px;
  }
}