MediaWiki:Mobile.css: Difference between revisions

From New wiki
Jump to navigation Jump to search
Content deleted Content added
No edit summary
No edit summary
Line 148: Line 148:


/* ======================================================= */
/* ======================================================= */
/* FLOATING (STICKY) HEADER */
/* FLOATING (STICKY) HEADER (Minerva Skin - Mobile & Desktop) */
/* ======================================================= */
/* ======================================================= */


/* 1. Apply Sticky Positioning */
/* Target the specific header container found in your HTML */
.header-container.header-chrome {
.header-container.header-chrome {
position: -webkit-sticky; /* Safari */
/* Make it stick to the top */
position: -webkit-sticky; /* For Safari/iOS */
position: sticky;
position: sticky;
top: 0;
top: 0;
/* Layering:
/* Z-Index:
999 is high enough to sit above article text/images,
999 is high enough to float over articles,
but lower than your custom TOC overlay (which is 1001) */
but lower than your TOC (1001) and the native Search Overlay */
z-index: 999;
z-index: 999;


/* Visuals:
/* Visuals:
White background is required so text doesn't scroll "behind" it visibly.
White background prevents text from showing through when scrolling.
Box-shadow adds a subtle line to separate it from the content */
Border provides a clean separation from the content. */
background-color: #ffffff;
background-color: #fff;
box-shadow: 0 1px 2px rgba(0,0,0,0.05);
border-bottom: 1px solid #eaecf0;
width: 100%;
width: 100%;
}
}


/* 2. Fix Search Overlay Compatibility */
/* ======================================================= */
/* When you click search, Minerva adds 'mw-mf-search-mode' to the body.
/* FIX SEARCH BEHAVIOR (Disable Full-Screen Overlay) */
We must ensure the header behaves correctly during this native animation. */
/* ======================================================= */


/* 1. Fix Invisible Text
Force the input text to be black and the background white
so you can actually see what you are typing. */
.minerva-header .search-box .search {
color: #000 !important;
background-color: #fff !important;
opacity: 1 !important;
}

/* 2. Kill the "White Overlay" Animation
Minerva tries to expand the header to 100% height when searching.
We force it to stay small and sticky. */
html.mw-mf-search-mode .header-container.header-chrome,
body.mw-mf-search-mode .header-container.header-chrome {
body.mw-mf-search-mode .header-container.header-chrome {
/* When search is active, we let Minerva take control of the border
height: auto !important; /* Prevent full screen height */
and positioning to prevent visual glitches */
bottom: auto !important; /* Release bottom anchor */
border-bottom: none;
position: sticky !important; /* Keep it sticky at top */
top: 0 !important;
overflow: visible !important; /* Allow dropdowns if needed */
}

/* 3. Un-hide the Page Content
Minerva hides the article content (main) when search is active.
We force it to remain visible. */
html.mw-mf-search-mode #content,
body.mw-mf-search-mode #content,
html.mw-mf-search-mode #bodyContent,
body.mw-mf-search-mode #bodyContent {
display: block !important;
visibility: visible !important;
opacity: 1 !important;
}

/* 4. Allow Scrolling
Minerva locks the scrollbar when search is open.
We explicitly re-enable scrolling. */
html.mw-mf-search-mode,
body.mw-mf-search-mode {
overflow: auto !important;
position: relative !important;
}

/* 5. Hide the specific masking overlay if present */
.mw-mf-search-mode .main-menu-mask,
.mw-mf-search-mode .overlay {
display: none !important;
}
}

Revision as of 05:37, 6 December 2025

/* All CSS here will be loaded for users of the mobile site */

/* Standard <youtube> (no lazy-load) */
.mw-parser-output iframe[data-extension="youtube"] {
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 16 / 9;
  display: block;
}

/* Lazy-load wrapper + its thumbnail image */
.mw-parser-output .ext-YouTube-video {
  width: 100% !important;   /* override inline width="560px" etc. */
  height: auto !important;  /* override inline height */
}
.mw-parser-output .ext-YouTube-video img {
  width: 100% !important;   /* scale preview to screen */
  height: auto !important;
  aspect-ratio: 16 / 9;
  display: block;
}

/* Optional: cap on very large screens (adjust 720px to taste) */
@media (min-width: 992px) {
  .mw-parser-output iframe[data-extension="youtube"],
  .mw-parser-output .ext-YouTube-video {
    max-width: 720px;
    margin: 0 auto;
  }
}

/* CapSach — Mobile TOC overlay (all skins) */
#cps-open-toc {
  position: fixed;
  
  /* POSITION: Right side */
  right: 16px;             /* Changed from left: 16px */
  left: auto;              /* Safety: ensures left is unset */
  
  /* POSITION: Lifted (to clear Google Anchor Ads) */
  bottom: calc(120px + env(safe-area-inset-bottom, 0px));
  
  /* SHAPE: Smaller Size (40px) */
  width: 44px;             /* Changed from 48px */
  height: 44px;            /* Changed from 48px */
  
  border: 0; border-radius: 999px;
  display: none; 
  align-items: center; justify-content: center;
  font-size: 14px; font-weight: 600;
  color: #fff; background: rgba(0,0,0,.1);
  /* box-shadow: 0 2px 8px rgba(0,0,0,.0);*/
  z-index: 1000; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

#cps-open-toc:focus { outline: 2px solid #36c; outline-offset: 2px; }
#cps-open-toc .label { display: none; } /* icon-only by default */
#cps-open-toc .icon { font-size: 20px; line-height: 1; }

/* Full-screen scrim */
#cps-toc-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.1);
  display: none; z-index: 1001;
}
#cps-toc-overlay.is-open { display: block; }

/* Bottom sheet panel */
#cps-toc-panel {
  position: fixed; left: 0; right: 0; bottom: 0;
  max-height: 85vh;
  border-radius: 12px 12px 0 0;
  background: #fff; color: #202122;
  /* box-shadow: 0 -8px 20px rgba(0,0,0,.0);*/
  padding: 12px 12px calc(12px + env(safe-area-inset-bottom, 0px)) 12px;
}

/* Header row */
#cps-toc-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 6px;
}
#cps-toc-title { font-size: 16px; font-weight: 600; margin: 0; }
#cps-toc-close {
  background: transparent; border: 0; font-size: 22px; line-height: 1;
}

/* List */
#cps-toc-list {
  list-style: none; margin: 0; padding: 4px 2px 6px;
  max-height: 70vh; overflow-y: auto; -webkit-overflow-scrolling: touch;
}
#cps-toc-list li { margin: 2px 0; }
#cps-toc-list a {
  display: block; padding: 8px 10px; border-radius: 8px;
  text-decoration: none; color: inherit;
}
#cps-toc-list a:focus, #cps-toc-list a:active {
  outline: 2px solid #36c; background: #f5f6f7;
}

/* Indentation by heading level */
#cps-toc-list li[data-level="3"] { padding-left: 12px; }
#cps-toc-list li[data-level="4"] { padding-left: 24px; }
#cps-toc-list li[data-level="5"] { padding-left: 36px; }
#cps-toc-list li[data-level="6"] { padding-left: 48px; }

/* Only show on phone-ish widths; tablet/desktop keep native TOC */
@media (min-width: 768px) {
  #cps-open-toc, #cps-toc-overlay { display: none !important; }
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* ======================================================= */
/* FIX: HIDE DUPLICATE "CONTENTS" TITLE IN MOBILE TOC      */
/* ======================================================= */

/* This hides the original MediaWiki header inside your custom panel */
#cps-toc-panel .toctitle,
#cps-toc-panel #mw-toc-heading,
#cps-toc-panel h2 {
    display: none !important;
}

/* ======================================================= */
/* HIDE "VIEW EDIT HISTORY" (Strict Mode)                  */
/* ======================================================= */

/* Target the wrapper link */
body a.last-modified-bar {
    display: none !important;
}

/* Target the content inside it */
body .last-modified-bar__content {
    display: none !important;
}

/* Target the text specifically */
body .last-modified-bar__text {
    display: none !important;
}

/* ======================================================= */
/* FLOATING (STICKY) HEADER (Minerva Skin - Mobile & Desktop) */
/* ======================================================= */

/* 1. Apply Sticky Positioning */
.header-container.header-chrome {
    position: -webkit-sticky; /* Safari */
    position: sticky;
    top: 0;
    
    /* Z-Index: 
       999 is high enough to float over articles, 
       but lower than your TOC (1001) and the native Search Overlay */
    z-index: 999;

    /* Visuals: 
       White background prevents text from showing through when scrolling.
       Border provides a clean separation from the content. */
    background-color: #fff;
    border-bottom: 1px solid #eaecf0;
    width: 100%;
}

/* 2. Fix Search Overlay Compatibility */
/* When you click search, Minerva adds 'mw-mf-search-mode' to the body.
   We must ensure the header behaves correctly during this native animation. */

body.mw-mf-search-mode .header-container.header-chrome {
    /* When search is active, we let Minerva take control of the border 
       and positioning to prevent visual glitches */
    border-bottom: none;
}