/*
Utility.css contains CSS classes which are not design relevant for the specific wiki
Rather there are functional and best practice CSS constructs which without modification
can be helpful on other wikis too (see especially Categoy:MultiWiki)
See detailed documentation in Dev/mediawiki
*/

/* ---------------------------- */
/* 1. General purpose Utilities */

.width-100 { width: 100%; }

.justify-left { justify-content: left !important; }
.justify-center { justify-content: center !important; }
.justify-right { justify-content: right !important; }

.margin-left-0 { margin-left: 0 !important; }
.margin-left-5 { margin-left: 5px !important; }
.margin-left-10 { margin-left: 10px !important; }
.margin-left-20 { margin-left: 20px !important; }
.margin-left-30 { margin-left: 30px !important; }
.margin-right-0 { margin-right: 0 !important; }
.margin-right-5 { margin-right: 5px !important; }
.margin-right-10 { margin-right: 10px !important; }
.margin-right-20 { margin-right: 20px !important; }
.margin-right-30 { margin-right: 30px !important; }
.margin-top-0 { margin-top: 0 !important; }
.margin-top-5 { margin-top: 5px !important; }
.margin-top-10 { margin-top: 10px !important; }
.margin-top-20 { margin-top: 20px !important; }
.margin-top-30 { margin-top: 30px !important; }
.margin-bottom-0 { margin-bottom: 0 !important; }
.margin-bottom-5 { margin-bottom: 5px !important; }
.margin-bottom-10 { margin-bottom: 10px !important; }
.margin-bottom-20 { margin-bottom: 20px !important; }
.margin-bottom-30 { margin-bottom: 30px !important; }
.margin-v-25 { margin-top: 25px !important; margin-bottom: 25px !important }

.padding-left-0 { padding-left: 0 !important; }
.padding-left-5 { padding-left: 5px !important; }
.padding-left-10 { padding-left: 10px !important; }
.padding-left-20 { padding-left: 20px !important; }
.padding-left-30 { padding-left: 30px !important; }
.padding-right-0 { padding-right: 0 !important; }
.padding-right-5 { padding-right: 5px !important; }
.padding-right-10 { padding-right: 10px !important; }
.padding-right-20 { padding-right: 20px !important; }
.padding-right-30 { padding-right: 30px !important; }
.padding-top-0 { padding-top: 0 !important; }
.padding-top-5 { padding-top: 5px !important; }
.padding-top-10 { padding-top: 10px !important; }
.padding-top-20 { padding-top: 20px !important; }
.padding-top-30 { padding-top: 30px !important; }
.padding-bottom-0 { padding-bottom: 0 !important; }
.padding-bottom-5 { padding-bottom: 5px !important; }
.padding-bottom-10 { padding-bottom: 10px !important; }
.padding-bottom-20 { padding-bottom: 20px !important; }
.padding-bottom-30 { padding-bottom: 30px !important; }

.vspacer { display: block; width: 100%; overflow: auto; float: none; clear: both; }
.vspacer-0 { display: block; width: 100%; overflow: auto; float: none; height: 0; }
.vspacer-1 { display: block; width: 100%; overflow: auto; float: none; height: 1px; }
.vspacer-2 { display: block; width: 100%; overflow: auto; float: none; height: 2px; }
.vspacer-3 { display: block; width: 100%; overflow: auto; float: none; height: 3px; }
.vspacer-4 { display: block; width: 100%; overflow: auto; float: none; height: 4px; }
.vspacer-5 { display: block; width: 100%; overflow: auto; float: none; height: 5px; }
.vspacer-10 { display: block; width: 100%; overflow: auto; float: none; height: 10px; }
.vspacer-20 { display: block; width: 100%; overflow: auto; float: none; height: 20px; }
.vspacer-30 { display: block; width: 100%; overflow: auto; float: none; height: 30px; }
.vspacer-50 { display: block; width: 100%; overflow: auto; float: none; height: 50px; }

.pos-1px-up { position: relative; top: -1px; }
.pos-1px-down { position: relative; top: 1px; }
.pos-2px-up { position: relative; top: -2px; }
.pos-2px-down { position: relative; top: 2px; }
.pos-3px-up { position: relative; top: -3px; }
.pos-3px-down { position: relative; top: 3px; }

.text-align-center {
  text-align: center;
}

.vertical-align-middle {
  vertical-align: middle;
}

.display-inline-block { display: inline-block !important; }

.nowrap {
  white-space: nowrap;
}

.float-left { float: left; }
.float-right { float: right; }

.clear-float {
  clear: both;
  float: none;
  overflow: auto;
}

.position-relative {
  position: relative;
}

/* 1.1. General image classes [[File...|class=...]] */

.img-height-20 img {
  height: 20px !important;
  width: auto;
}

.img-height-50 img {
  height: 50px !important;
  width: auto;
}

/* ------------------------------- */
/* 2. Manually place anchor Utiliy */

.manually-placed-anchor {
  position: relative;
}

.manually-placed-anchor.mpa-visible {
  display: block;
  margin: 15px 0;
  font-size: 18px;
  letter-spacing: 1px;
}

.manually-placed-anchor.mpa-visible:before {
  content: "\0023";
  font-weight: bold;
  margin-right: 7px;
}

.manually-placed-anchor.mpa-visible > .share-tooltip .button {
  top: -8px;
}

/* ------------------ */
/* 3. Icon (Template) */

.padded-content-icon {
  min-width: 1.6em;
  min-height: 1.6em;
  line-height: 1.6em;
  position: relative;
  vertical-align: -.4em;
  margin: 0 .2em;
}

.padded-content-icon:first-child {
  margin-left: 0;
}

.padded-content-icon.pci-style-circle {
  border-radius: 100em;
}

.padded-content-icon.pci-style-rounded {
  border-radius: .3em;
}

.padded-content-icon.pci-border {
  border: max( .08em, 1px ) solid currentColor;
}

.padded-content-icon.pci-border-thick {
  border: max( .16em, 3px ) solid currentColor;
}

.padded-content-icon.pci-shadow {
  box-shadow: .1em .04em .15em rgba(0,0,0,12%);
}

.padded-content-icon.pci-text {
  display: inline-block;
  font-style: unset;
  vertical-align: 3%;
  text-align: center;
  padding: 0 .3em 0 .4em;
}

.padded-content-icon.pci-text.pci-style-circle {
  min-width: 1.9em;
}

.padded-content-icon.pci-text.fa-solid,
.padded-content-icon.pci-text.fa-regular {
  letter-spacing: .1em;
}

.padded-content-icon:before {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

/* ---------------- */
/* 4. No-JS classes */

html.client-js .show-for-nojs-only,
html.client-js .hide-for-js-only,
html.client-nojs .show-for-js-only,
html.client-nojs .hide-for-nojs-only {
  display: none !important;
}

/* ------------------ */
/* 5. Columns Utility */

.use-2-columns, .use-3-columns {
  column-gap: 20px;
  column-rule: 1px solid #ddd;
  width: 100%;
  margin: 15px 0;
}

.use-2-columns {
  column-count: 2;
}

.use-3-columns {
  column-count: 3;
}

.use-2-columns .keep-together,
.use-3-columns .keep-together {
  display: inline-block;
  vertical-align: top;
}

.use-2-columns .force-column-break,
.use-3-columns .force-column-break {
  break-before: column;
}

.use-2-columns.strict-list-columns > ul,
.use-3-columns.strict-list-columns > ul,
.use-2-columns.strict-list-columns > ol,
.use-3-columns.strict-list-columns > ol {
  display: inline-block;
  width: 100%;
}

/* Responsive */
@media (max-width: 590px) {
  .use-3-columns {
    column-count: 2;
  }
}

@media (max-width: 450px) {
  .use-2-columns, .use-3-columns {
    column-count: 1;
  }
}

/* -------------------------------- */
/* 6. Edit Preview improve editform */

body.action-submit #editform {
  position: relative;
  z-index: 1000;
  background: #f6f3f4;
  padding: 10px;
  border: 1px solid #ccc;
}

/* -------------------- */
/* 7. Mbox Box info-box */

#mw-content-text .info-box {
  padding: 5px 21px 15px;
  margin: 13px 0;
  border: 1px solid #e0e0e0;
  background: white;
  border-radius: 8px;
  box-shadow: 2px 2px 5px rgba(0, 0, 0, .09);
  display: flow-root;
  max-width: 100%;
}

@media (max-width: 650px) {
  #mw-content-text .info-box.ib-for-thumb {
    clear: both;
  }
}

#mw-content-text .info-box.ib-dark {
  background: #f5f5f5;
}

#mw-content-text .info-box.has-icon {
  padding-left: 55px;
  position: relative;
}

#mw-content-text .info-box.has-icon .info-box-icon {
  position: absolute;
  left: 15px;
  top: min( calc( 50% - 20px ), 17px );
  width: 30px;
  height: 40px;
}

#mw-content-text .info-box.has-icon .info-box-icon i {
  font-size: 18px;
  text-align: center;
  padding: 10px 0;
  width: 100%;
}

#mw-content-text .info-box.has-icon .info-box-icon > span,
#mw-content-text .info-box.has-icon .info-box-icon > span > :is(a,span),
#mw-content-text .info-box.has-icon .info-box-icon > span > :is(a,span) > img
{
  display: inline-block;
  height: inherit;
  width: inherit;
  object-fit: contain;
  border-radius: 5px;
}

.info-box a {
  color: #0663F9;
}

/* -------------------------------- */
/* 8. Intro paragraph and IntroLike */

.intro-like, .post-intro-p { margin-bottom: 1.5em; }

.intro-like > :first-child,
.pre-intro-p + *,
.pre-intro-p + .hidden-thumbnail + * {
  padding-top: 1em !important;
  border-top-left-radius: 9px;
  border-top-right-radius: 9px;
  box-shadow: inset 5px 5px 8px -2px rgb(0 0 0 / 9%) !important;
}

.pre-intro-p + .hidden-thumbnail {
  display: none !important;
}

.intro-like > *,
.pre-intro-p ~ :not(.post-intro-p):not(.post-intro-p ~ *) {
  font-size: 17px !important;
  color: #656565 !important;
  font-style: italic;
  display: flow-root;
  margin: 30px 0;
  padding: 6px 20px 7px 26px;
  background: #eee;
  margin: 0 !important;
  box-shadow: inset 11px 0 8px -8px rgb(0 0 0 / 9%);
}

.pre-intro-p.hidden ~ *:not(.post-intro-p ~ *) {
  display: none !important;
}

.intro-like > :last-child,
.pre-intro-p ~ :has(+ .post-intro-p) {
  padding-bottom: 1.1em !important;
  border-bottom-left-radius: 9px;
  border-bottom-right-radius: 9px;
}

.intro-like { margin-top: 1.5em; }

/* --------------- */
/* 9. Info Tooltip */

.info-tooltip {
  display: inline-block;
  position: relative;
  background-image: url('/w/images/thumb/c/c8/Ambox_notice.png/40px-Ambox_notice.png');
  background-size: contain;
  background-repeat: no-repeat;
  width: 20px;
  height: 20px;
}

.info-tooltip > * {
  display: none;
  position: absolute;
  max-width: 200px;
  width: max-content;
  background: white;
  border: 1px solid #ccc;
  box-shadow: 2px 2px 4px rgba( 0,0,0, .07);
  padding: 5px 10px;
  border-radius: 5px;
  top: -10px;
  left: -10px;
  z-index: 10;
}
.info-tooltip > *:before {
  content: " ";
  background-image: url('/w/images/thumb/c/c8/Ambox_notice.png/40px-Ambox_notice.png');
  width: 22px;
  height: 20px;
  display: inline-block;
  background-size: contain;
  background-repeat: no-repeat;
  position: relative;
  top: 4px;
  left: -1px;
}

.info-tooltip:hover > *, .info-tooltip > *:hover {
  display: block;
}

/* ----------------- */
/* 10. Col Container */

.col-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.col-container.cc-3 > * {
  flex: 0 0 31%;
  margin: 2% 1%;
}

@media (max-width: 730px) {
  .col-container.cc-3 > * {
    flex: 0 0 48%;
  }
}

@media (max-width: 460px) {
  .col-container.cc-3 > * {
    flex: 0 0 88%;
    margin: 2% 6% 5%;
  }
}

.col-container.cc-4 > * {
  flex: 0 0 23%;
  margin: 2% 1%;
}

@media (max-width: 800px) {
  .col-container.cc-4 > * {
    flex: 0 0 31%;
  }
}

@media (max-width: 600px) {
  .col-container.cc-4 > * {
    flex: 0 0 48%;
  }
}

@media (max-width: 430px) {
  .col-container.cc-4 > * {
      flex: 0 0 88%;
      margin: 2% 6% 5%;
  }
}

.col-container.cc-5 > * {
  flex: 0 0 18%;
  margin: 1.5% 1%;
}

.col-container i.image
{
  padding-top: 70%;
  width: 100%;
  display: block;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
}
.col-container i.image.image-cover {
  background-size: cover !important;
}
.col-container i.image.image-left {
  background-position: left;
}

.col-container img.image {
  width: 100%;
  display: block;
  object-fit: contain;
}

.col-container img.image.image-cover {
  object-fit: cover;
}

.col-container img.image.image-left {
  object-position: left;
}

/* ------------------ */
/* 11. Colors Schemes */

.cs-red {
  background-color: #ff6e6e !important;
  color: white !important;
}
.cs-red-light {
  background-color: #ffe5e5 !important;
  color: #666 !important;
}
.cs-red-font {
  color: #ff0606 !important;
}

.cs-green {
  background-color: #00d931 !important;
  color: white !important;
}
.cs-green-light {
  background-color: #d4ffd9 !important;
  color: #666 !important;
}
.cs-green-dark {
  background-color: #006100 !important;
  color: white !important;
}
.cs-green-font {
  color: #00c92d !important;
}

.cs-blue {
  background-color: #37c6ff !important;
  color: white !important;
}
.cs-blue-light {
  background-color: #d9f6ff !important;
  color: #666 !important;
}
.cs-blue-dark {
  background-color: #0228ff !important;
  color: white !important;
}
.cs-blue-font {
  color: #00b6ff !important;
}

.cs-yellow {
  background-color: #fff23e !important;
  color: #444 !important;
}
.cs-yellow-light {
  background-color: #fff9a5 !important;
  color: #666 !important;
}
.cs-yellow-font {
  color: #ffd600 !important;
}

.cs-gray {
  background-color: #d4d4d4 !important;
  color: #444 !important;
}
.cs-gray-light {
  background-color: #f5f5f5 !important;
  color: #666 !important;
}
.cs-gray-dark {
  background-color: #a0a0a0 !important;
  color: white !important;
}
.cs-gray-font {
  color: #c1c1c1 !important;
}

.cs-white {
  background-color: white !important;
  color: #444 !important;
}

/* ------------------- */
/* 12. Dark Mode Fixes */

/* for https://www.mediawiki.org/wiki/Extension:DarkMode */

.client-darkmode {
    background: unset;
}

/* -------------- */
/* 13. Font Sizes */

.fontsize19 { font-size: 19px; }
.fontsize21 { font-size: 21px; }

/* ----------------------------------------------- */
/* 14. Design fixes for Extension:MultimediaViewer */

.mw-mmv-main .mw-mmv-post-image:not(.mw-mmv-untruncated) .mw-mmv-image-metadata {
  opacity: 0;
  margin-top: 0;
}

/* --------------------------------- */
/* 15. Expand or collapse all button */

html.client-nojs .expand-or-collapse-all-button {
  display: none;
}

/* ------------------------------- */
/* 16. Extension Flagged Revisions */

#mw-fr-revisiondetails {
  z-index: 100;
}

/* ----------------- */
/* 17. Thumb Gallery */

.thumb-gallery.mode-gallery {
  display: flex;
  flex-wrap: wrap;
  float: none !important;
  clear: both !important;
  margin: 0 !important;
  justify-content: center;
  gap: 10px;
}

@media (max-width: 540px) {
  .thumb-gallery {
    display: flex;
    flex-wrap: wrap;
    float: none !important;
    clear: both !important;
    margin: 0 !important;
    justify-content: center;
    gap: 10px;
    padding-bottom: 25px;
  }
}

.thumb-gallery.mode-gallery figure {
  display: flex !important;
  flex-direction: column;
  justify-content: space-between;
  margin: 0 !important;
  padding: 10px !important;
}

.thumb-gallery.mode-gallery figcaption {
  text-align: center !important;
  margin-top: 10px;
  padding-bottom: 0 !important;
}

/* ----------------------------------- */
/* 17.1. Gallery (Thumb Gallery Style) */

.gallery.thumb-gallery-style {
  display: flex !important;
  flex-wrap: wrap;
  float: none !important;
  clear: both !important;
  margin: 20px 0 !important;
  justify-content: center;
  gap: 10px;
}

.gallery.thumb-gallery-style .gallerybox {
  display: flex !important;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid #c8ccd1;
  background-color: #f8f9fa;
  border-radius: 8px;
  box-shadow: 3px 3px 5px rgb(0 0 0 / .1);
}

.gallery.thumb-gallery-style.gallery-white .gallerybox {
  background-color: white;
}

@media (max-width: 500px) {
  .gallery.thumb-gallery-style .gallerybox {
    display: block;
    width: 100% !important;
  }
}

.gallery.thumb-gallery-style .gallerybox > .thumb {
  border: none !important;
  margin-left: -2px;
}

.gallery:not(.thumb-gallery-style).gallery-white .gallerybox > .thumb {
  background-color: white;
}

.gallery.thumb-gallery-style.gallery-white .gallerybox > .thumb {
  background: none;
}

@media (max-width: 500px) {
  .gallery.thumb-gallery-style .gallerybox > .thumb {
    height: auto !important;
    margin: 15px auto 10px;
  }
}


.gallery.thumb-gallery-style .gallerytext {
  padding: 0 0 5px !important;
  text-align: center;
}

/* ------------------------ */
/* 17.2. Gallery (Standard) */

.gallery .gallerybox,
.gallery .gallerybox > .thumb {
  max-width: 100%;
}

.gallery.gallery-items-position-relative li.gallerybox {
  position: relative;
}


/* --------------------------- */
/* 18. ContentImage (Template) */

.content-image-wrapper {
  display: inline-block;
}

.content-image-wrapper img {
  max-width: 100%;
  height: auto;
}

.content-image-wrapper.ciw-w100,
.content-image-wrapper.ciw-w100 * {
  width: 100%;
  display: inline-block;
}

/* ------------------------------ */
/* 19. Community Support Template */

#mw-content-text .info-box.community-support-info.csi-page {
  border: 2px solid #ff9101;
  background: #fff7ef;
}

#mw-content-text .info-box.community-support-info.csi-chapter {
  border-color: #ff9101;
}

/* --------------------------- */
/* 20. Anti-Spam Email tooltip */

.antispam-email-tooltip {
  position: relative;
}

.antispam-email-tooltip .tooltip {
  display: none;
  position: absolute;
  left: -1px;
  background: white;
  z-index: 10;
  padding: 10px 20px;
  top: 2.2em;
  border-radius: 6px;
  box-shadow: 2px 2px 3px rgba( 0 0 0 / 10% );
}

.antispam-email-tooltip:hover:before {
  content: " ";
  display: inline-block;
  width: 100%;
  height: 3em;
  position: absolute;
}

.antispam-email-tooltip:hover .tooltip {
  width: 300px;
  display: block;
}

.antispam-email-tooltip .tooltip:before {
  content: " ";
  position: absolute;
  top: -14px;
  left: 11px;
  border-width: 7px;
  border-style: solid;
  border-color: transparent transparent white transparent;
}

.antispam-email-tooltip .ul {
  color: red;
  padding: .6em 0 0 1.5em;
  display: inline-block;
}

.antispam-email-tooltip .ul > span {
  display: list-item;
  list-style: none;
  position: relative;
}

.antispam-email-tooltip .ul > span > i {
  position: absolute;
  top: 0;
  left: -1.3em;
}

.antispam-email-tooltip .ul > span > i:not([class^="fa-"]):before {
  content: "\2022"; /* BULLET SIGN */
  width: 1em;
  display: inline-block;
  height: 1em;
}

.antispam-email-tooltip .ul > span > i[class^="fa-"] {
  top: 0.4em;
  left: -1.6em;
}

/* ------------------------------------------------------- */
/* 21. Admin server indicator and PayPal sandbox indicator */

#stage-server-indicator,
#pvpm-sandbox-indicator {
  background: #fff23e;
  color: #444;
  padding: 10px 15px;
  position: fixed;
  top: 51px;
  left: 10px;
  z-index: 1000;
  width: 50px;
  height: 40px;
  overflow: hidden;
  transition: width .3s, height .3s;
  cursor: pointer;
}

#pvpm-sandbox-indicator {
  background: #6ebdfd;
  left: 65px;
}

#stage-server-indicator:hover {
  width: 170px;
  height: 102px;
}

#pvpm-sandbox-indicator:hover {
  width: 170px;
  height: 130px;
}

#stage-server-indicator p,
#pvpm-sandbox-indicator p {
  margin-top: 15px;
  width: 142px;
}

/* ---------------------- */
/* 22. Clearfix separator */

span.clearline-separator {
  display: block;
  width: 100%;
  clear: both;
  overflow: auto;
}

/* -------------------- */
/* 23. ComingSoon badge */

.coming-soon-badge {
  position: relative;
}

.coming-soon-badge::before {
  content: 'COMING SOON!';
  background-color: #fff9a5;
}

.coming-soon-badge::before,
div.coming-soon-indicator {
  position: absolute;
  top: 15px;
  left: -6px;
  display: inline-block;
  transform: rotate(-22deg);
  padding: 0 8px;
  border-radius: 100px;
  border: 1px solid currentColor;
  box-shadow: 1px 1px 5px #0005;
  font-size: inherit;
}


/* 24. IconSet template */

.iconset-keyboard {
  box-shadow: 1px 1px 3px #0005;
}

/* 25. keypress template */

.template-keypress > i {
  font-size: .8em;
}

.template-keypress {
  font-weight: bold;
  white-space: nowrap;
  margin: 0 .1em 0 .3em;
}

/*
[[Category:MultiWiki]]
*/
