MediaWiki:Common.css: Difference between revisions

From Nasqueron Agora
Improve alert CSS code
More complex alert solution
 
Line 33: Line 33:
}
}


/*
/* ============================================================
    Banners
  Technical Wiki Alert
*/
  Aesthetic: industrial / editorial
  Typography: IBM Plex Sans + IBM Plex Mono
  ============================================================ */


:root {
:root {
    /* Light mode */
     --alert-danger: #b42318;
     --alert-danger: #b42318;
     --alert-danger-dark: #7a1710;
     --alert-danger-dark: #7a1710;
Line 46: Line 49:
}
}


/*
 
* Technical wiki alert
/* ============================================================
* Direction: industrial / editorial
  Base component
*/
  ============================================================ */
 
.alert {
.alert {
     --alert-border: var(--alert-danger);
     --alert-border: var(--alert-danger);
Line 64: Line 68:
         linear-gradient(
         linear-gradient(
             90deg,
             90deg,
             rgba(180, 35, 24, 0.055) 0,
             color-mix(in srgb, var(--alert-border) 8%, transparent) 0,
             rgba(180, 35, 24, 0.055) 4px,
             color-mix(in srgb, var(--alert-border) 8%, transparent) 4px,
             transparent 4px
             transparent 4px
         ),
         ),
Line 71: Line 75:


     color: var(--alert-ink);
     color: var(--alert-ink);
     border: 1px solid var(--alert-danger-line);
     border: 1px solid var(--alert-danger-line);
     border-left: 5px solid var(--alert-border);
     border-left: 5px solid var(--alert-border);
Line 78: Line 83:
     font-family: "IBM Plex Sans", sans-serif;
     font-family: "IBM Plex Sans", sans-serif;
     font-size: 0.95rem;
     font-size: 0.95rem;
    font-weight: 400;
     line-height: 1.6;
     line-height: 1.6;


Line 84: Line 90:
}
}


/* Classification stamp */
 
/* Classification label */
 
.alert::before {
.alert::before {
     content: "ALERT";
     content: "ALERT";
     display: block;
     display: block;
     margin-bottom: 0.35rem;
     margin-bottom: 0.35rem;


     color: var(--alert-danger);
     color: var(--alert-danger);
     font-family: "IBM Plex Mono", monospace;
     font-family: "IBM Plex Mono", monospace;
     font-size: 0.68rem;
     font-size: 0.68rem;
Line 101: Line 110:
}
}


/* Optional heading */
 
/* Content */
 
.alert strong:first-child {
.alert strong:first-child {
    font-family: "IBM Plex Sans", sans-serif;
     font-weight: 700;
     font-weight: 700;
}
}


/* Links should look intentional, not like default wiki links */
 
/* Links */
 
.alert a {
.alert a {
     color: var(--alert-danger-dark);
     color: var(--alert-danger-dark);
Line 116: Line 128:


.alert a:hover {
.alert a:hover {
     color: #4f0d08;
     color: var(--alert-danger);
}
}


/* Keyboard accessibility */
.alert a:focus-visible {
.alert a:focus-visible {
     outline: 2px solid var(--alert-accent);
     outline: 2px solid var(--alert-accent);
Line 125: Line 136:
}
}


/* Respect reduced-motion preferences if you add the reveal below */
 
/* ============================================================
  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) {
@media (prefers-reduced-motion: no-preference) {
     .alert {
     .alert {
Line 142: Line 197:
         transform: translateX(0);
         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;
}