MediaWiki

Difference between revisions of "Common.css"

 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* CSS placed here will be applied to all skins */
/* =====================================================================
/* ---- Feed block ---- */
  FEED SYSTEM - COMPLETE STYLESHEET
.feed-block {
  Replaces BOTH earlier feed blocks in this file ("Feed block" and
    margin: 2em 0;
  "FEED SYSTEM - LAYOUT ADDITIONS").
}
  ===================================================================== */
.feed-title, .feed-title a {
 
    font-size: 1.4em;
/* ---------- Frame, header, title ---------- */
    margin-bottom: 0.5em;
.feed-block { margin: 2em 0; container-type: inline-size; container-name: feed; }
    color: inherit;
.feed-block .feed-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5em 1em; margin-bottom: 0.7em; }
    text-decoration: none;
.feed-block .feed-title { margin: 0; padding: 0; border: 0; font-size: 1.4em; font-weight: bold; }
}
.feed-block .feed-title a, .feed-block .feed-title a:visited { color: inherit; text-decoration: none; }
.feed-title a:hover {
.feed-block .feed-title a:hover { text-decoration: underline; }
    text-decoration: underline;
.feed-block .feed-footer { margin-top: 0.9em; text-align: right; }
}
 
/* ---------- Row of cards: 3 per row by default ---------- */
.feed-block .feed-items { display: flex; flex-wrap: wrap; gap: 1em; }
.feed-block .feed-items .feed-item { position: relative; box-sizing: border-box; flex: 1 1 calc((100% - 2em) / 3); min-width: 0; max-width: calc((100% - 2em) / 3); }
.feed-block.feed-cols-1 .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
.feed-block.feed-cols-2 .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
.feed-block.feed-cols-4 .feed-items .feed-item { max-width: calc((100% - 3em) / 4); flex-basis: calc((100% - 3em) / 4); }
.feed-block.feed-cols-5 .feed-items .feed-item { max-width: calc((100% - 4em) / 5); flex-basis: calc((100% - 4em) / 5); }
 
/* ---------- Picture area ---------- */
.feed-block .feed-item-media { position: relative; height: 180px; overflow: hidden; border-radius: 6px; background: #c8ccd1; }
.feed-block .feed-item-media > a, .feed-block .feed-item-media > span:not(.feed-item-noimg) { display: block; position: relative; height: 100%; padding: 0 !important; }
/* The picture is ONE image that fills the box and is cropped to fit (never tiled, never repeated). */
.feed-block .feed-item-media img { display: block; position: absolute; top: 0; left: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; object-position: center; }
.feed-block .feed-item-media > a, .feed-block .feed-item-media > a *, .feed-block .feed-item-media > img { background-image: none !important; background-repeat: no-repeat !important; }
.feed-block .feed-item-media a.external { padding-right: 0 !important; }
.feed-block .feed-item-noimg { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, #a2a9b1, #72777d); }


.feed-items {
/* ---------- Titles (two copies; each style shows one) ---------- */
    display: flex;
.feed-block .feed-item-title { font-weight: bold; line-height: 1.25; }
    flex-wrap: wrap;
.feed-block .feed-item-title a, .feed-block .feed-item-title a:visited { text-decoration: none; }
    gap: 1em;
.feed-block .feed-item-title-side { display: none; }
}
.feed-block .feed-item-title-over { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.3em 0.75em 0.55em; font-size: 1.05em; z-index: 2; background: linear-gradient(transparent, rgba(0, 0, 0, 0.78)); }
.feed-block .feed-item-title-over a, .feed-block .feed-item-title-over a:visited { display: block; color: #fff !important; }


/* Individual card */
/* ---------- Text under the picture ---------- */
.feed-item {
.feed-block .feed-item-body { padding-top: 0.5em; }
    flex: 1 1 300px;
.feed-block .feed-item-desc { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; font-size: 0.9em; line-height: 1.4; }
    max-width: 32%;
.feed-block .feed-item-more { margin-top: 0.2em; font-size: 0.85em; }
    box-sizing: border-box;
.feed-block .feed-item-more a { position: relative; z-index: 3; font-weight: bold; }
}
.feed-item-link {
    display: block;
    text-decoration: none;
    color: inherit;
}
.feed-item-thumb {
    height: 180px;
    background-size: cover;
    background-position: center;
    position: relative;
    border-radius: 6px;
    overflow: hidden;
}
.feed-item-title {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: linear-gradient(transparent, rgba(0,0,0,0.75));
    padding: 0.5em 0.75em;
}
.feed-item-title h3 {
    color: #fff;
    margin: 0;
    font-size: 1.1em;
}
.feed-item-desc {
    margin-top: 0.5em;
    font-size: 0.9em;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.feed-item-more {
    color: #0645ad;
    font-weight: bold;
    margin-left: 0.3em;
}


/* Preview mode (homepage): force max 3 per row on wide screens */
/* ---------- Buttons ---------- */
.feed-mode-preview .feed-item {
.feed-block .feed-feedbtn a,
    max-width: 32%;
.feed-block .feed-item-postbtn a,
}
.feed-block .feed-item-feedcard-btn a { position: relative; z-index: 3; display: inline-block; padding: 0.45em 1em !important; border-radius: 4px; font-size: 0.85em; font-weight: bold; line-height: 1.2; text-decoration: none !important; background-image: none !important; }
.feed-block .feed-feedbtn a, .feed-block .feed-feedbtn a:visited { background-color: #202122; color: #fff !important; }
.feed-block .feed-item-postbtn a, .feed-block .feed-item-postbtn a:visited { background-color: #36c; color: #fff !important; }
.feed-block .feed-item-feedcard-btn a, .feed-block .feed-item-feedcard-btn a:visited { background-color: #fff; color: #36c !important; border: 1px solid #36c; }
.feed-block .feed-feedbtn a:hover, .feed-block .feed-item-postbtn a:hover { opacity: 0.85; }
/* A post's own button only shows in feeds that have postbuttons=1 */
.feed-block .feed-item-postbtn { display: none; margin-top: 0.5em; }
.feed-block.feed-postbuttons .feed-item-postbtn { display: block; }
.feed-block .feed-item-feedcard-btn { display: block; margin-top: 0.5em; }


/* Full mode (dedicated "view all" page) */
/* ---------- Like / share icons (actions=1) - look only, no click behavior yet ---------- */
.feed-mode-full .feed-item {
.feed-block .feed-item-actionsbar { display: none; position: absolute; top: 0.5em; right: 0.5em; z-index: 3; gap: 0.4em; }
    max-width: 32%;
.feed-block.feed-actions .feed-item-actionsbar { display: flex; }
}
.feed-block .feed-action { display: inline-flex; align-items: center; justify-content: center; width: 2em; height: 2em; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.15); background: rgba(255, 255, 255, 0.92); color: #202122; font-size: 0.9em; line-height: 1; cursor: pointer; }
/* Optional single-column layout: wrap a feed in <div class="feed-single"> */
.feed-single .feed-item {
    max-width: 100%;
    flex: 1 1 100%;
}


/* ---- Responsive breakpoints ---- */
/* =====================================================================
@media (max-width: 900px) {
  STYLE: overlaytop  - title across the TOP of the picture, text across
    .feed-item { max-width: 48%; }
  the BOTTOM of the picture, buttons at the bottom. Whole card clickable.
}
  ===================================================================== */
@media (max-width: 600px) {
.feed-block.feed-style-overlaytop .feed-items .feed-item { height: 240px; overflow: hidden; border-radius: 6px; background: #c8ccd1; }
    .feed-items { flex-direction: column; }
.feed-block.feed-style-overlaytop .feed-item-media { position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: auto; border-radius: 0; display: flex; flex-direction: column; }
    .feed-item { max-width: 100%; }
.feed-block.feed-style-overlaytop .feed-item-media > a,
}
.feed-block.feed-style-overlaytop .feed-item-media > span { position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: auto; }
.feed-block.feed-style-overlaytop .feed-item-title-over { position: static; z-index: 1; padding: 0.6em 0.75em 1.4em; background: linear-gradient(rgba(0, 0, 0, 0.72), transparent); }
.feed-block.feed-style-overlaytop .feed-item-title-over a::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; }
.feed-block.feed-style-overlaytop.feed-actions .feed-item-title-over { padding-right: 5.5em; }
.feed-block.feed-style-overlaytop .feed-item-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 1.8em 0.75em 0.6em; color: #fff; background: linear-gradient(transparent, rgba(0, 0, 0, 0.85)); }
.feed-block.feed-style-overlaytop .feed-item-more a, .feed-block.feed-style-overlaytop .feed-item-more a:visited { color: #fff !important; }
.feed-block.feed-style-overlaytop .feed-item-feedcard-btn { position: absolute; right: 0.6em; bottom: 0.6em; z-index: 3; margin-top: 0; }


/* =====================================================================
/* =====================================================================
   FEED SYSTEM — LAYOUT ADDITIONS (columns control + new card styles)
   STYLE: side  - picture alone on the LEFT; title, text and buttons on
   Everything below is additive; it does not alter the original
   the RIGHT, nothing written over the picture. One card per row.
  .feed-item / .feed-block / .feed-title rules added previously.
   ===================================================================== */
   ===================================================================== */
.feed-block.feed-style-side .feed-items { flex-direction: column; flex-wrap: nowrap; }
.feed-block.feed-style-side .feed-items .feed-item { max-width: 100%; flex: 1 1 auto; display: grid; grid-template-columns: 240px minmax(0, 1fr); grid-template-rows: auto 1fr; column-gap: 1em; align-items: start; }
.feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: 1 / span 2; height: 160px; }
.feed-block.feed-style-side .feed-item-body { grid-column: 2; grid-row: 1; padding-top: 0; }
.feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 2; grid-row: 2; margin-top: 0.5em; }
.feed-block.feed-style-side .feed-item-title-over { display: none; }
.feed-block.feed-style-side .feed-item-title-side { display: block; margin-bottom: 0.3em; font-size: 1.25em; }
.feed-block.feed-style-side .feed-item-title-side a::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; }


/* ---- Optional column-count override (cols= parameter on {{Feed}}) ----
/* =====================================================================
  Only takes effect on a feed where cols= was actually set; otherwise
   RESPONSIVE - the cards react to the width of the box the feed is in
   feeds keep using the original flexible 3-per-row layout untouched. */
  (so a feed in a narrow sidebar behaves like a phone), with a fallback
.feed-items.feed-grid {
  to the screen width for very old browsers.
    display: grid;
  ===================================================================== */
    grid-template-columns: repeat(var(--feed-cols, 3), 1fr);
    gap: 1em;
}
.feed-items.feed-grid .feed-item,
.feed-items.feed-grid .feed-item-side,
.feed-items.feed-grid .feed-item-overlaytop {
    max-width: 100%;
}
@media (max-width: 900px) {
@media (max-width: 900px) {
    .feed-items.feed-grid { grid-template-columns: repeat(2, 1fr); }
  .feed-block.feed-block .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
}
}
@media (max-width: 600px) {
@media (max-width: 600px) {
    .feed-items.feed-grid { grid-template-columns: 1fr; }
  .feed-block.feed-block .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
}
}
 
@container feed (max-width: 720px) {
/* ---- style=overlaytop: title on TOP of the photo, description on the
  .feed-block.feed-block .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
  BOTTOM of the photo, both layered over the image ---- */
.feed-item-overlaytop .feed-item-thumb {
    height: 220px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    position: relative;
    border-radius: 6px;
    overflow: hidden;
    background-size: cover;
    background-position: center;
}
}
.feed-item-overlaytop .feed-item-title-top {
@container feed (max-width: 480px) {
    background: linear-gradient(rgba(0,0,0,0.65), transparent);
  .feed-block.feed-block .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
    padding: 0.5em 0.75em;
  .feed-block.feed-style-side .feed-items .feed-item { grid-template-columns: minmax(0, 1fr); }
  .feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: auto; height: 200px; margin-bottom: 0.5em; }
  .feed-block.feed-style-side .feed-item-body { grid-column: 1; grid-row: auto; }
  .feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 1; grid-row: auto; margin-top: 0.5em; }
}
}
.feed-item-overlaytop .feed-item-title-top h3 {
@media (max-width: 600px) {
    color: #fff;
  .feed-block.feed-style-side .feed-items .feed-item { grid-template-columns: minmax(0, 1fr); }
    margin: 0;
  .feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: auto; height: 200px; margin-bottom: 0.5em; }
    font-size: 1.1em;
  .feed-block.feed-style-side .feed-item-body { grid-column: 1; grid-row: auto; }
}
  .feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 1; grid-row: auto; margin-top: 0.5em; }
.feed-item-overlaytop .feed-item-desc-overlay {
    background: linear-gradient(transparent, rgba(0,0,0,0.8));
    color: #fff;
    padding: 0.5em 0.75em;
    font-size: 0.85em;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
}
/* cols=1 always means one per row */
.feed-block.feed-cols-1 .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }


/* ---- style=side: photo alone on the left, title + description stacked
/* ---------- box=1 : grey rounded box (also used by the sidebar feed) ---------- */
  on the right, nothing written over the image ---- */
.feed-block.feed-boxed { padding: 1em; border: 1px solid #c8ccd1; border-radius: 8px; background: #f8f9fa; }
.feed-item-side {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 1em;
    max-width: 100%;
    flex: 1 1 100%;
}
.feed-item-side .feed-item-link {
    display: flex;
    flex-direction: row;
    gap: 1em;
    width: 100%;
    text-decoration: none;
    color: inherit;
}
.feed-item-side .feed-item-thumb {
    flex: 0 0 240px;
    height: 160px;
    border-radius: 6px;
    background-size: cover;
    background-position: center;
}
.feed-item-side .feed-item-body {
    flex: 1 1 auto;
}
.feed-item-side .feed-item-body h3 {
    margin: 0 0 0.3em;
    font-size: 1.2em;
}
.feed-item-side .feed-item-desc {
    margin-top: 0;
    font-size: 0.9em;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
@media (max-width: 600px) {
    .feed-item-side .feed-item-link { flex-direction: column; }
    .feed-item-side .feed-item-thumb { flex: none; width: 100%; }
}


/* ---- Optional call-to-action button (cta= / ctalabel=) ----
/* ---------- Keywords (#hashtags) under a page, and the keyword list ---------- */
  Appears inline below the description in "side" style, or pinned to
.feed-tags { margin: 1em 0; padding: 0.45em 0.8em; border: 1px solid #a2a9b1; background: #f8f9fa; font-size: 0.9em; }
  the bottom-right corner of the photo in "overlaytop" style. */
.feed-tags .feed-tags-label { font-weight: bold; margin-right: 0.4em; }
.feed-item-cta {
.feed-tags a.feed-tag, .feed-taglist a.feed-tag { margin-right: 0.6em; white-space: nowrap; }
    display: inline-block;
.feed-taglist { list-style: none; margin: 1em 0; padding: 0; }
    margin-top: 0.6em;
.feed-taglist li { display: inline-block; margin: 0 1.2em 0.5em 0; }
    padding: 0.4em 0.9em;
    background: #0645ad;
    color: #fff !important;
    border-radius: 4px;
    font-size: 0.85em;
    text-decoration: none;
}
.feed-item-cta:hover {
    background: #03318c;
}
.feed-item-overlaytop .feed-item-thumb .feed-item-cta {
    position: absolute;
    bottom: 0.5em;
    right: 0.5em;
    margin-top: 0;
}


/* ---- Optional like/share icon row (actions=1) ----
/* ---------- Pop-up windows (insert picture / upload) that are too big for the screen ---------- */
  Visual placeholders only — wire up real click behavior later once
.ui-dialog { max-height: 92vh !important; max-width: 96vw !important; display: flex !important; flex-direction: column; }
  the action (favoriting, sharing, etc.) is decided. */
.ui-dialog .ui-dialog-content { overflow: auto !important; flex: 1 1 auto; max-height: calc(92vh - 9em) !important; }
.feed-item-actions {
.ui-dialog .ui-dialog-buttonpane { flex: 0 0 auto; }
    display: flex;
.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { max-height: 94vh !important; }
    gap: 0.5em;
    margin-top: 0.5em;
}
.feed-item-actions button {
    background: rgba(255,255,255,0.9);
    border: 1px solid rgba(0,0,0,0.15);
    border-radius: 50%;
    width: 2em;
    height: 2em;
    cursor: pointer;
    font-size: 0.9em;
    line-height: 1;
}
.feed-item-overlaytop .feed-item-thumb .feed-item-actions {
    position: absolute;
    top: 0.5em;
    right: 0.5em;
    margin-top: 0;
}

Latest revision as of 02:20, 21 October 2026

/* =====================================================================
   FEED SYSTEM - COMPLETE STYLESHEET
   Replaces BOTH earlier feed blocks in this file ("Feed block" and
   "FEED SYSTEM - LAYOUT ADDITIONS").
   ===================================================================== */

/* ---------- Frame, header, title ---------- */
.feed-block { margin: 2em 0; container-type: inline-size; container-name: feed; }
.feed-block .feed-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5em 1em; margin-bottom: 0.7em; }
.feed-block .feed-title { margin: 0; padding: 0; border: 0; font-size: 1.4em; font-weight: bold; }
.feed-block .feed-title a, .feed-block .feed-title a:visited { color: inherit; text-decoration: none; }
.feed-block .feed-title a:hover { text-decoration: underline; }
.feed-block .feed-footer { margin-top: 0.9em; text-align: right; }

/* ---------- Row of cards: 3 per row by default ---------- */
.feed-block .feed-items { display: flex; flex-wrap: wrap; gap: 1em; }
.feed-block .feed-items .feed-item { position: relative; box-sizing: border-box; flex: 1 1 calc((100% - 2em) / 3); min-width: 0; max-width: calc((100% - 2em) / 3); }
.feed-block.feed-cols-1 .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
.feed-block.feed-cols-2 .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
.feed-block.feed-cols-4 .feed-items .feed-item { max-width: calc((100% - 3em) / 4); flex-basis: calc((100% - 3em) / 4); }
.feed-block.feed-cols-5 .feed-items .feed-item { max-width: calc((100% - 4em) / 5); flex-basis: calc((100% - 4em) / 5); }

/* ---------- Picture area ---------- */
.feed-block .feed-item-media { position: relative; height: 180px; overflow: hidden; border-radius: 6px; background: #c8ccd1; }
.feed-block .feed-item-media > a, .feed-block .feed-item-media > span:not(.feed-item-noimg) { display: block; position: relative; height: 100%; padding: 0 !important; }
/* The picture is ONE image that fills the box and is cropped to fit (never tiled, never repeated). */
.feed-block .feed-item-media img { display: block; position: absolute; top: 0; left: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; object-position: center; }
.feed-block .feed-item-media > a, .feed-block .feed-item-media > a *, .feed-block .feed-item-media > img { background-image: none !important; background-repeat: no-repeat !important; }
.feed-block .feed-item-media a.external { padding-right: 0 !important; }
.feed-block .feed-item-noimg { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, #a2a9b1, #72777d); }

/* ---------- Titles (two copies; each style shows one) ---------- */
.feed-block .feed-item-title { font-weight: bold; line-height: 1.25; }
.feed-block .feed-item-title a, .feed-block .feed-item-title a:visited { text-decoration: none; }
.feed-block .feed-item-title-side { display: none; }
.feed-block .feed-item-title-over { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.3em 0.75em 0.55em; font-size: 1.05em; z-index: 2; background: linear-gradient(transparent, rgba(0, 0, 0, 0.78)); }
.feed-block .feed-item-title-over a, .feed-block .feed-item-title-over a:visited { display: block; color: #fff !important; }

/* ---------- Text under the picture ---------- */
.feed-block .feed-item-body { padding-top: 0.5em; }
.feed-block .feed-item-desc { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; font-size: 0.9em; line-height: 1.4; }
.feed-block .feed-item-more { margin-top: 0.2em; font-size: 0.85em; }
.feed-block .feed-item-more a { position: relative; z-index: 3; font-weight: bold; }

/* ---------- Buttons ---------- */
.feed-block .feed-feedbtn a,
.feed-block .feed-item-postbtn a,
.feed-block .feed-item-feedcard-btn a { position: relative; z-index: 3; display: inline-block; padding: 0.45em 1em !important; border-radius: 4px; font-size: 0.85em; font-weight: bold; line-height: 1.2; text-decoration: none !important; background-image: none !important; }
.feed-block .feed-feedbtn a, .feed-block .feed-feedbtn a:visited { background-color: #202122; color: #fff !important; }
.feed-block .feed-item-postbtn a, .feed-block .feed-item-postbtn a:visited { background-color: #36c; color: #fff !important; }
.feed-block .feed-item-feedcard-btn a, .feed-block .feed-item-feedcard-btn a:visited { background-color: #fff; color: #36c !important; border: 1px solid #36c; }
.feed-block .feed-feedbtn a:hover, .feed-block .feed-item-postbtn a:hover { opacity: 0.85; }
/* A post's own button only shows in feeds that have postbuttons=1 */
.feed-block .feed-item-postbtn { display: none; margin-top: 0.5em; }
.feed-block.feed-postbuttons .feed-item-postbtn { display: block; }
.feed-block .feed-item-feedcard-btn { display: block; margin-top: 0.5em; }

/* ---------- Like / share icons (actions=1) - look only, no click behavior yet ---------- */
.feed-block .feed-item-actionsbar { display: none; position: absolute; top: 0.5em; right: 0.5em; z-index: 3; gap: 0.4em; }
.feed-block.feed-actions .feed-item-actionsbar { display: flex; }
.feed-block .feed-action { display: inline-flex; align-items: center; justify-content: center; width: 2em; height: 2em; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.15); background: rgba(255, 255, 255, 0.92); color: #202122; font-size: 0.9em; line-height: 1; cursor: pointer; }

/* =====================================================================
   STYLE: overlaytop  - title across the TOP of the picture, text across
   the BOTTOM of the picture, buttons at the bottom. Whole card clickable.
   ===================================================================== */
.feed-block.feed-style-overlaytop .feed-items .feed-item { height: 240px; overflow: hidden; border-radius: 6px; background: #c8ccd1; }
.feed-block.feed-style-overlaytop .feed-item-media { position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: auto; border-radius: 0; display: flex; flex-direction: column; }
.feed-block.feed-style-overlaytop .feed-item-media > a,
.feed-block.feed-style-overlaytop .feed-item-media > span { position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: auto; }
.feed-block.feed-style-overlaytop .feed-item-title-over { position: static; z-index: 1; padding: 0.6em 0.75em 1.4em; background: linear-gradient(rgba(0, 0, 0, 0.72), transparent); }
.feed-block.feed-style-overlaytop .feed-item-title-over a::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; }
.feed-block.feed-style-overlaytop.feed-actions .feed-item-title-over { padding-right: 5.5em; }
.feed-block.feed-style-overlaytop .feed-item-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 1.8em 0.75em 0.6em; color: #fff; background: linear-gradient(transparent, rgba(0, 0, 0, 0.85)); }
.feed-block.feed-style-overlaytop .feed-item-more a, .feed-block.feed-style-overlaytop .feed-item-more a:visited { color: #fff !important; }
.feed-block.feed-style-overlaytop .feed-item-feedcard-btn { position: absolute; right: 0.6em; bottom: 0.6em; z-index: 3; margin-top: 0; }

/* =====================================================================
   STYLE: side  - picture alone on the LEFT; title, text and buttons on
   the RIGHT, nothing written over the picture. One card per row.
   ===================================================================== */
.feed-block.feed-style-side .feed-items { flex-direction: column; flex-wrap: nowrap; }
.feed-block.feed-style-side .feed-items .feed-item { max-width: 100%; flex: 1 1 auto; display: grid; grid-template-columns: 240px minmax(0, 1fr); grid-template-rows: auto 1fr; column-gap: 1em; align-items: start; }
.feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: 1 / span 2; height: 160px; }
.feed-block.feed-style-side .feed-item-body { grid-column: 2; grid-row: 1; padding-top: 0; }
.feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 2; grid-row: 2; margin-top: 0.5em; }
.feed-block.feed-style-side .feed-item-title-over { display: none; }
.feed-block.feed-style-side .feed-item-title-side { display: block; margin-bottom: 0.3em; font-size: 1.25em; }
.feed-block.feed-style-side .feed-item-title-side a::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; }

/* =====================================================================
   RESPONSIVE - the cards react to the width of the box the feed is in
   (so a feed in a narrow sidebar behaves like a phone), with a fallback
   to the screen width for very old browsers.
   ===================================================================== */
@media (max-width: 900px) {
  .feed-block.feed-block .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
}
@media (max-width: 600px) {
  .feed-block.feed-block .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
}
@container feed (max-width: 720px) {
  .feed-block.feed-block .feed-items .feed-item { max-width: calc((100% - 1em) / 2); flex-basis: calc((100% - 1em) / 2); }
}
@container feed (max-width: 480px) {
  .feed-block.feed-block .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }
  .feed-block.feed-style-side .feed-items .feed-item { grid-template-columns: minmax(0, 1fr); }
  .feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: auto; height: 200px; margin-bottom: 0.5em; }
  .feed-block.feed-style-side .feed-item-body { grid-column: 1; grid-row: auto; }
  .feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 1; grid-row: auto; margin-top: 0.5em; }
}
@media (max-width: 600px) {
  .feed-block.feed-style-side .feed-items .feed-item { grid-template-columns: minmax(0, 1fr); }
  .feed-block.feed-style-side .feed-item-media { grid-column: 1; grid-row: auto; height: 200px; margin-bottom: 0.5em; }
  .feed-block.feed-style-side .feed-item-body { grid-column: 1; grid-row: auto; }
  .feed-block.feed-style-side .feed-item-feedcard-btn { grid-column: 1; grid-row: auto; margin-top: 0.5em; }
}
/* cols=1 always means one per row */
.feed-block.feed-cols-1 .feed-items .feed-item { max-width: 100%; flex-basis: 100%; }

/* ---------- box=1 : grey rounded box (also used by the sidebar feed) ---------- */
.feed-block.feed-boxed { padding: 1em; border: 1px solid #c8ccd1; border-radius: 8px; background: #f8f9fa; }

/* ---------- Keywords (#hashtags) under a page, and the keyword list ---------- */
.feed-tags { margin: 1em 0; padding: 0.45em 0.8em; border: 1px solid #a2a9b1; background: #f8f9fa; font-size: 0.9em; }
.feed-tags .feed-tags-label { font-weight: bold; margin-right: 0.4em; }
.feed-tags a.feed-tag, .feed-taglist a.feed-tag { margin-right: 0.6em; white-space: nowrap; }
.feed-taglist { list-style: none; margin: 1em 0; padding: 0; }
.feed-taglist li { display: inline-block; margin: 0 1.2em 0.5em 0; }

/* ---------- Pop-up windows (insert picture / upload) that are too big for the screen ---------- */
.ui-dialog { max-height: 92vh !important; max-width: 96vw !important; display: flex !important; flex-direction: column; }
.ui-dialog .ui-dialog-content { overflow: auto !important; flex: 1 1 auto; max-height: calc(92vh - 9em) !important; }
.ui-dialog .ui-dialog-buttonpane { flex: 0 0 auto; }
.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { max-height: 94vh !important; }