MediaWiki:Common.css: Difference between revisions
From Nasqueron Agora
No edit summary |
More complex alert solution |
||
| (One intermediate revision by the same user not shown) | |||
| Line 33: | Line 33: | ||
} | } | ||
/* | /* ============================================================ | ||
Technical Wiki Alert | |||
Aesthetic: industrial / editorial | |||
Typography: IBM Plex Sans + IBM Plex Mono | |||
============================================================ */ | |||
:root { | |||
/* Light mode */ | |||
--alert-danger: #b42318; | |||
--alert-danger-dark: #7a1710; | |||
--alert-danger-bg: #fff4f1; | |||
--alert-danger-ink: #32110d; | |||
--alert-danger-line: #d8aaa3; | |||
--alert-accent: #f04438; | |||
} | |||
/* ============================================================ | |||
Base component | |||
============================================================ */ | |||
.alert { | .alert { | ||
--alert-border: var(--alert-danger); | |||
--alert-bg: var(--alert-danger-bg); | |||
--alert-ink: var(--alert-danger-ink); | |||
position: relative; | |||
box-sizing: border-box; | |||
margin: 1.5rem 0; | |||
padding: 1rem 1.25rem 1rem 1.5rem; | |||
background: | |||
linear-gradient( | |||
90deg, | |||
color-mix(in srgb, var(--alert-border) 8%, transparent) 0, | |||
color-mix(in srgb, var(--alert-border) 8%, transparent) 4px, | |||
transparent 4px | |||
), | |||
var(--alert-bg); | |||
color: var(--alert-ink); | |||
border: 1px solid var(--alert-danger-line); | |||
border-left: 5px solid var(--alert-border); | |||
border-radius: 0; | |||
font-family: "IBM Plex Sans", sans-serif; | |||
font-size: 0.95rem; | |||
font-weight: 400; | |||
line-height: 1.6; | |||
box-shadow: | |||
4px 4px 0 rgba(50, 17, 13, 0.08); | |||
} | |||
/* Classification label */ | |||
.alert::before { | |||
content: "ALERT"; | |||
display: block; | |||
margin-bottom: 0.35rem; | |||
color: var(--alert-danger); | |||
font-family: "IBM Plex Mono", monospace; | |||
font-size: 0.68rem; | |||
font-weight: 700; | |||
letter-spacing: 0.14em; | |||
line-height: 1; | |||
text-transform: uppercase; | |||
} | |||
/* Content */ | |||
.alert strong:first-child { | |||
font-weight: 700; | |||
} | |||
/* Links */ | |||
.alert a { | |||
color: var(--alert-danger-dark); | |||
font-weight: 700; | |||
text-decoration-thickness: 2px; | |||
text-underline-offset: 3px; | |||
} | |||
.alert a:hover { | |||
color: var(--alert-danger); | |||
} | |||
.alert a:focus-visible { | |||
outline: 2px solid var(--alert-accent); | |||
outline-offset: 3px; | |||
} | |||
/* ============================================================ | |||
Dark mode — explicitly configured | |||
============================================================ */ | |||
html.skin-theme-clientpref-night { | |||
--alert-danger: #e5483e; | |||
--alert-danger-dark: #ff6b61; | |||
--alert-danger-bg: #211513; | |||
--alert-danger-ink: #f6e7e4; | |||
--alert-danger-line: #5c2b27; | |||
--alert-accent: #ff5a52; | |||
} | |||
html.skin-theme-clientpref-night .alert { | |||
box-shadow: | |||
4px 4px 0 rgba(0, 0, 0, 0.25); | |||
} | |||
/* ============================================================ | |||
Dark mode — follows system preference | |||
============================================================ */ | |||
@media (prefers-color-scheme: dark) { | |||
html.skin-theme-clientpref-os { | |||
--alert-danger: #e5483e; | |||
--alert-danger-dark: #ff6b61; | |||
--alert-danger-bg: #211513; | |||
--alert-danger-ink: #f6e7e4; | |||
--alert-danger-line: #5c2b27; | |||
--alert-accent: #ff5a52; | |||
} | |||
html.skin-theme-clientpref-os .alert { | |||
box-shadow: | |||
4px 4px 0 rgba(0, 0, 0, 0.25); | |||
} | |||
} | |||
/* ============================================================ | |||
Reduced motion | |||
============================================================ */ | |||
@media (prefers-reduced-motion: no-preference) { | |||
.alert { | |||
animation: alert-in 220ms ease-out both; | |||
} | |||
} | |||
@keyframes alert-in { | |||
from { | |||
opacity: 0; | |||
transform: translateX(-8px); | |||
} | |||
to { | |||
opacity: 1; | |||
transform: translateX(0); | |||
} | |||
} | |||
/* ============================================================ | |||
Alert variants | |||
============================================================ */ | |||
.alert--warning { | |||
--alert-danger: #9a6700; | |||
--alert-danger-dark: #704800; | |||
--alert-bg: #fff9eb; | |||
--alert-ink: #3d2a0a; | |||
--alert-danger-line: #dec58e; | |||
--alert-accent: #d69e2e; | |||
} | |||
.alert--info { | |||
--alert-danger: #1769aa; | |||
--alert-danger-dark: #0f4f82; | |||
--alert-bg: #eef7ff; | |||
--alert-ink: #102a43; | |||
--alert-danger-line: #a9cce8; | |||
--alert-accent: #2b8ed6; | |||
} | |||
.alert--success { | |||
--alert-danger: #287a4b; | |||
--alert-danger-dark: #1b6038; | |||
--alert-bg: #eefbf3; | |||
--alert-ink: #102a1b; | |||
--alert-danger-line: #a8d4b8; | |||
--alert-accent: #38a169; | |||
} | |||
/* Dark variants */ | |||
html.skin-theme-clientpref-night .alert--warning, | |||
html.skin-theme-clientpref-os .alert--warning { | |||
--alert-danger: #d9a441; | |||
--alert-danger-dark: #f0c66b; | |||
--alert-bg: #211c11; | |||
--alert-ink: #f4ead5; | |||
--alert-danger-line: #5b4928; | |||
--alert-accent: #e5b14d; | |||
} | |||
html.skin-theme-clientpref-night .alert--info, | |||
html.skin-theme-clientpref-os .alert--info { | |||
--alert-danger: #4da3df; | |||
--alert-danger-dark: #79c4f2; | |||
--alert-bg: #111d27; | |||
--alert-ink: #e1edf5; | |||
--alert-danger-line: #294b61; | |||
--alert-accent: #5db5ed; | |||
} | |||
html.skin-theme-clientpref-night .alert--success, | |||
html.skin-theme-clientpref-os .alert--success { | |||
--alert-danger: #55b87a; | |||
--alert-danger-dark: #7bd39a; | |||
--alert-bg: #112019; | |||
--alert-ink: #e1f0e6; | |||
--alert-danger-line: #28523a; | |||
--alert-accent: #62c889; | |||
} | |||
/* ============================================================ | |||
Variant labels | |||
============================================================ */ | |||
.alert--warning::before { | |||
content: "WARNING"; | |||
} | |||
.alert--info::before { | |||
content: "INFO"; | |||
} | |||
.alert--success::before { | |||
content: "OK"; | |||
} | } | ||
Latest revision as of 18:31, 5 September 2026
/* Source code */
code, tt, kbd, pre, samp {
font-size: 0.9em !important;
}
/* Call for actions button */
.btn {
-webkit-border-radius: 6;
-moz-border-radius: 6;
border-radius: 6px;
color: #ffffff;
font-size: 1.4em;
background: #4d7b94;
padding: 10px 20px 10px 20px;
text-decoration: none;
}
.btn a, .btn a:hover, .btn a:visited {
color: white !important;
}
.btn:hover {
background: #6caacc;
text-decoration: none;
}
/* Inline code */
.inline-code, .inline-code div, .inline-code pre {
display: inline-table;
}
/* ============================================================
Technical Wiki Alert
Aesthetic: industrial / editorial
Typography: IBM Plex Sans + IBM Plex Mono
============================================================ */
:root {
/* Light mode */
--alert-danger: #b42318;
--alert-danger-dark: #7a1710;
--alert-danger-bg: #fff4f1;
--alert-danger-ink: #32110d;
--alert-danger-line: #d8aaa3;
--alert-accent: #f04438;
}
/* ============================================================
Base component
============================================================ */
.alert {
--alert-border: var(--alert-danger);
--alert-bg: var(--alert-danger-bg);
--alert-ink: var(--alert-danger-ink);
position: relative;
box-sizing: border-box;
margin: 1.5rem 0;
padding: 1rem 1.25rem 1rem 1.5rem;
background:
linear-gradient(
90deg,
color-mix(in srgb, var(--alert-border) 8%, transparent) 0,
color-mix(in srgb, var(--alert-border) 8%, transparent) 4px,
transparent 4px
),
var(--alert-bg);
color: var(--alert-ink);
border: 1px solid var(--alert-danger-line);
border-left: 5px solid var(--alert-border);
border-radius: 0;
font-family: "IBM Plex Sans", sans-serif;
font-size: 0.95rem;
font-weight: 400;
line-height: 1.6;
box-shadow:
4px 4px 0 rgba(50, 17, 13, 0.08);
}
/* Classification label */
.alert::before {
content: "ALERT";
display: block;
margin-bottom: 0.35rem;
color: var(--alert-danger);
font-family: "IBM Plex Mono", monospace;
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.14em;
line-height: 1;
text-transform: uppercase;
}
/* Content */
.alert strong:first-child {
font-weight: 700;
}
/* Links */
.alert a {
color: var(--alert-danger-dark);
font-weight: 700;
text-decoration-thickness: 2px;
text-underline-offset: 3px;
}
.alert a:hover {
color: var(--alert-danger);
}
.alert a:focus-visible {
outline: 2px solid var(--alert-accent);
outline-offset: 3px;
}
/* ============================================================
Dark mode — explicitly configured
============================================================ */
html.skin-theme-clientpref-night {
--alert-danger: #e5483e;
--alert-danger-dark: #ff6b61;
--alert-danger-bg: #211513;
--alert-danger-ink: #f6e7e4;
--alert-danger-line: #5c2b27;
--alert-accent: #ff5a52;
}
html.skin-theme-clientpref-night .alert {
box-shadow:
4px 4px 0 rgba(0, 0, 0, 0.25);
}
/* ============================================================
Dark mode — follows system preference
============================================================ */
@media (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os {
--alert-danger: #e5483e;
--alert-danger-dark: #ff6b61;
--alert-danger-bg: #211513;
--alert-danger-ink: #f6e7e4;
--alert-danger-line: #5c2b27;
--alert-accent: #ff5a52;
}
html.skin-theme-clientpref-os .alert {
box-shadow:
4px 4px 0 rgba(0, 0, 0, 0.25);
}
}
/* ============================================================
Reduced motion
============================================================ */
@media (prefers-reduced-motion: no-preference) {
.alert {
animation: alert-in 220ms ease-out both;
}
}
@keyframes alert-in {
from {
opacity: 0;
transform: translateX(-8px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* ============================================================
Alert variants
============================================================ */
.alert--warning {
--alert-danger: #9a6700;
--alert-danger-dark: #704800;
--alert-bg: #fff9eb;
--alert-ink: #3d2a0a;
--alert-danger-line: #dec58e;
--alert-accent: #d69e2e;
}
.alert--info {
--alert-danger: #1769aa;
--alert-danger-dark: #0f4f82;
--alert-bg: #eef7ff;
--alert-ink: #102a43;
--alert-danger-line: #a9cce8;
--alert-accent: #2b8ed6;
}
.alert--success {
--alert-danger: #287a4b;
--alert-danger-dark: #1b6038;
--alert-bg: #eefbf3;
--alert-ink: #102a1b;
--alert-danger-line: #a8d4b8;
--alert-accent: #38a169;
}
/* Dark variants */
html.skin-theme-clientpref-night .alert--warning,
html.skin-theme-clientpref-os .alert--warning {
--alert-danger: #d9a441;
--alert-danger-dark: #f0c66b;
--alert-bg: #211c11;
--alert-ink: #f4ead5;
--alert-danger-line: #5b4928;
--alert-accent: #e5b14d;
}
html.skin-theme-clientpref-night .alert--info,
html.skin-theme-clientpref-os .alert--info {
--alert-danger: #4da3df;
--alert-danger-dark: #79c4f2;
--alert-bg: #111d27;
--alert-ink: #e1edf5;
--alert-danger-line: #294b61;
--alert-accent: #5db5ed;
}
html.skin-theme-clientpref-night .alert--success,
html.skin-theme-clientpref-os .alert--success {
--alert-danger: #55b87a;
--alert-danger-dark: #7bd39a;
--alert-bg: #112019;
--alert-ink: #e1f0e6;
--alert-danger-line: #28523a;
--alert-accent: #62c889;
}
/* ============================================================
Variant labels
============================================================ */
.alert--warning::before {
content: "WARNING";
}
.alert--info::before {
content: "INFO";
}
.alert--success::before {
content: "OK";
}
/*
Colors from 2017 palette
See https://devcentral.nasqueron.org/M11 or [[Design/2017 colors]]
*/
.color-magnetic-one {
/* Cyberspace gray */
color: #44484D;
}
.color-magnetic-two {
/* Anchors Aweigh blue */
color: #2B3441;
}
.color-magnetic-three {
/* Niagara blue — Pantone 17-4123 */
color: #5587A2;
}
.color-magnetic-four {
/* Primrose yellow — Pantone 13-0755 */
color: #F6D258;
}
.color-magnetic-five {
/* Green from http://www.elledecor.com/design-decorate/color/g3175/color-trends/ */
color: #67947D;
}
/*
Responsive blocks.
*/
.block {
margin: 0 0;
padding: 5vh 5vw;
border: #808080 solid 5px;
}
.block-col {
position: relative;
display:inline;
float: left;
margin-right: 1em;
padding: 1vw;
}
.block-col-quarter {
width: 20%;
}
.block-col-half {
width: 40%;
}
.user-block {
min-height: 50vh;
background-color: #44484D;
color: white;
}
.user-block dt {
color: #67947D;
font-family: 'Segoe UI', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lato', 'Liberation Sans', 'Noto Sans', 'Helvetica Neue', 'Helvetica', sans-serif;
font-size: 1.375em;
margin-bottom: 1em;
}
.user-block a {
color: #F6D258 !important;
}
/*
Variable Grid System.
Learn more ~ http://www.spry-soft.com/grids/
Based on 960 Grid System - http://960.gs/
Licensed under GPL and MIT.
*/
/* Containers
----------------------------------------------------------------------------------------------------*/
.container_12 {
margin-left: auto;
margin-right: auto;
width: 960px;
}
/* Grid >> Global
----------------------------------------------------------------------------------------------------*/
.grid_1,
.grid_2,
.grid_3,
.grid_4,
.grid_5,
.grid_6,
.grid_7,
.grid_8,
.grid_9,
.grid_10,
.grid_11,
.grid_12 {
display:inline;
float: left;
position: relative;
margin-left: 10px;
margin-right: 10px;
}
/* Grid >> Children (Alpha ~ First, Omega ~ Last)
----------------------------------------------------------------------------------------------------*/
.alpha {
margin-left: 0;
}
.omega {
margin-right: 0;
}
/* Grid >> 12 Columns
----------------------------------------------------------------------------------------------------*/
.container_12 .grid_1 {
width:60px;
}
.container_12 .grid_2 {
width:140px;
}
.container_12 .grid_3 {
width:220px;
}
.container_12 .grid_4 {
width:300px;
}
.container_12 .grid_5 {
width:380px;
}
.container_12 .grid_6 {
width:460px;
}
.container_12 .grid_7 {
width:540px;
}
.container_12 .grid_8 {
width:620px;
}
.container_12 .grid_9 {
width:700px;
}
.container_12 .grid_10 {
width:780px;
}
.container_12 .grid_11 {
width:860px;
}
.container_12 .grid_12 {
width:940px;
}
/* Prefix Extra Space >> 12 Columns
----------------------------------------------------------------------------------------------------*/
.container_12 .prefix_1 {
padding-left:80px;
}
.container_12 .prefix_2 {
padding-left:160px;
}
.container_12 .prefix_3 {
padding-left:240px;
}
.container_12 .prefix_4 {
padding-left:320px;
}
.container_12 .prefix_5 {
padding-left:400px;
}
.container_12 .prefix_6 {
padding-left:480px;
}
.container_12 .prefix_7 {
padding-left:560px;
}
.container_12 .prefix_8 {
padding-left:640px;
}
.container_12 .prefix_9 {
padding-left:720px;
}
.container_12 .prefix_10 {
padding-left:800px;
}
.container_12 .prefix_11 {
padding-left:880px;
}
/* Suffix Extra Space >> 12 Columns
----------------------------------------------------------------------------------------------------*/
.container_12 .suffix_1 {
padding-right:80px;
}
.container_12 .suffix_2 {
padding-right:160px;
}
.container_12 .suffix_3 {
padding-right:240px;
}
.container_12 .suffix_4 {
padding-right:320px;
}
.container_12 .suffix_5 {
padding-right:400px;
}
.container_12 .suffix_6 {
padding-right:480px;
}
.container_12 .suffix_7 {
padding-right:560px;
}
.container_12 .suffix_8 {
padding-right:640px;
}
.container_12 .suffix_9 {
padding-right:720px;
}
.container_12 .suffix_10 {
padding-right:800px;
}
.container_12 .suffix_11 {
padding-right:880px;
}
/* Push Space >> 12 Columns
----------------------------------------------------------------------------------------------------*/
.container_12 .push_1 {
left:80px;
}
.container_12 .push_2 {
left:160px;
}
.container_12 .push_3 {
left:240px;
}
.container_12 .push_4 {
left:320px;
}
.container_12 .push_5 {
left:400px;
}
.container_12 .push_6 {
left:480px;
}
.container_12 .push_7 {
left:560px;
}
.container_12 .push_8 {
left:640px;
}
.container_12 .push_9 {
left:720px;
}
.container_12 .push_10 {
left:800px;
}
.container_12 .push_11 {
left:880px;
}
/* Pull Space >> 12 Columns
----------------------------------------------------------------------------------------------------*/
.container_12 .pull_1 {
left:-80px;
}
.container_12 .pull_2 {
left:-160px;
}
.container_12 .pull_3 {
left:-240px;
}
.container_12 .pull_4 {
left:-320px;
}
.container_12 .pull_5 {
left:-400px;
}
.container_12 .pull_6 {
left:-480px;
}
.container_12 .pull_7 {
left:-560px;
}
.container_12 .pull_8 {
left:-640px;
}
.container_12 .pull_9 {
left:-720px;
}
.container_12 .pull_10 {
left:-800px;
}
.container_12 .pull_11 {
left:-880px;
}
/* Clear Floated Elements
----------------------------------------------------------------------------------------------------*/
/* http://sonspring.com/journal/clearing-floats */
.clear {
clear: both;
display: block;
overflow: hidden;
visibility: hidden;
width: 0;
height: 0;
}
/* http://perishablepress.com/press/2008/02/05/lessons-learned-concerning-the-clearfix-css-hack */
.clearfix:after {
clear: both;
content: ' ';
display: block;
font-size: 0;
line-height: 0;
visibility: hidden;
width: 0;
height: 0;
}
.clearfix {
display: inline-block;
}
* html .clearfix {
height: 1%;
}
.clearfix {
display: block;
}
