Modèle:Infobox/styles.css
De Nefald
Autres actions
/* =================================================================
PortableInfobox Styles - Adapted from TG Design System
=================================================================
Modern infobox styling using CSS custom properties for theming
and consistent design across all infobox templates.
Based on TG-style infobox design with PortableInfobox structure.
================================================================= */
/* CSS Custom Properties (Variables) */
:root {
--tg-border-base: 1px solid #e0e6ed;
--tg-border-radius-large: 8px;
--tg-border-radius-sharp: 0px;
--tg-color-base: #222;
--tg-color-emphasized: #000;
--tg-color-subtle: #666;
--tg-color-surface-2: #f8f9fa;
--tg-border-color-base: #e0e6ed;
--tg-line-height-xx-small: 1.25;
--tg-line-height-xxx-small: 1.2;
--tg-font-size-small: 14px;
--tg-font-size-x-small: 12px;
--tg-font-size-x-large: 18px;
--tg-font-weight-regular: 400;
}
/* Dark mode variables */
@media (prefers-color-scheme: dark) {
:root {
--tg-border-base: 1px solid #404040;
--tg-color-base: #e0e0e0;
--tg-color-emphasized: #fff;
--tg-color-subtle: #a0a0a0;
--tg-color-surface-2: #1a1a1a;
--tg-border-color-base: #404040;
}
}
/* Base PortableInfobox Container */
.portable-infobox {
position: relative;
width: 320px;
padding: 16px 0;
border: var(--tg-border-base);
border-radius: var(--tg-border-radius-large);
border-spacing: 0;
color: var(--tg-color-base);
background-color: var(--tg-color-surface-2);
line-height: var(--tg-line-height-xx-small);
font-size: var(--tg-font-size-small);
float: right;
clear: right;
margin: 0 0 1em 1em;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* Reset default padding for all infobox elements */
.portable-infobox .pi-item {
padding: 0;
vertical-align: top;
}
/* Add consistent horizontal padding */
.portable-infobox .pi-title,
.portable-infobox .pi-header,
.portable-infobox .pi-data-label,
.portable-infobox .pi-data-value {
padding-left: 16px;
padding-right: 16px;
}
/* Title Styling */
.portable-infobox .pi-title {
font-size: var(--tg-font-size-x-large);
line-height: var(--tg-line-height-xxx-small);
color: var(--tg-color-emphasized);
text-align: center;
padding-top: 0;
padding-bottom: 4px;
font-weight: bold;
background: transparent;
border: none;
}
/* Image Container */
.portable-infobox .pi-image {
border-top-left-radius: var(--tg-border-radius-large);
border-top-right-radius: var(--tg-border-radius-large);
padding: 0 !important;
transform: translateY(-16px);
overflow: hidden;
text-align: center;
}
/* Reset figure styles */
.portable-infobox .pi-image figure,
.portable-infobox .pi-image figcaption {
border: 0;
padding: 0;
background: transparent;
box-shadow: none;
margin: 0;
}
.portable-infobox .pi-image figure {
overflow: hidden;
}
/* Image thumbnail */
.portable-infobox .pi-image-thumbnail {
margin: 0;
border: 0;
width: 100%;
height: auto;
display: block;
border-radius: var(--tg-border-radius-sharp);
}
/* Image caption */
.portable-infobox .pi-image-caption {
padding: 4px 16px;
text-align: center;
color: var(--tg-color-subtle);
font-size: var(--tg-font-size-x-small);
background: transparent;
border: none;
font-style: normal;
}
/* Group Headers */
.portable-infobox .pi-header {
padding-top: 12px;
padding-bottom: 8px;
color: var(--tg-color-emphasized);
background: transparent !important;
border: none;
text-align: center;
font-weight: bold;
position: relative;
}
/* Header separator lines */
.portable-infobox .pi-header:not(.pi-title) {
display: flex;
align-items: center;
gap: 1rem;
white-space: nowrap;
color: var(--tg-color-subtle);
font-size: var(--tg-font-size-x-small);
font-weight: var(--tg-font-weight-regular);
}
.portable-infobox .pi-header:not(.pi-title):before,
.portable-infobox .pi-header:not(.pi-title):after {
content: "";
height: 1px;
width: 100%;
background-color: var(--tg-border-color-base);
}
/* Data Rows */
.portable-infobox .pi-data {
border: none;
background: transparent;
}
/* Data Labels */
.portable-infobox .pi-data-label {
padding: 8px 16px;
text-align: start;
vertical-align: top;
color: var(--tg-color-base);
background: transparent;
border: none;
font-weight: normal;
width: auto;
}
/* Data Values */
.portable-infobox .pi-data-value {
padding: 8px 16px;
background: transparent;
border: none;
color: var(--tg-color-base);
word-wrap: break-word;
vertical-align: top;
width: auto;
}
/* Special styling for subtitle-like data */
.portable-infobox .pi-data[data-source="subtitle"] .pi-data-value,
.portable-infobox .pi-data[data-source="caption"] .pi-data-value {
text-align: center;
color: var(--tg-color-subtle);
font-size: var(--tg-font-size-x-small);
line-height: var(--tg-line-height-xxx-small);
}
/* Links */
.portable-infobox a {
color: var(--tg-color-base);
text-decoration: none;
}
.portable-infobox a:hover {
text-decoration: underline;
}
/* Groups */
.portable-infobox .pi-group {
border: none;
margin: 0;
padding: 0;
background: transparent;
}
/* =================================================================
THEME SYSTEM - Color Schemes with CSS Variables
================================================================= */
/* Monde Theme - Green */
.portable-infobox.pi-theme-monde {
--theme-primary: #86C705;
--theme-accent: #099DFF;
}
.portable-infobox.pi-theme-monde .pi-title {
background-color: var(--theme-primary) !important;
color: #fff !important;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: var(--tg-border-radius-large) var(--tg-border-radius-large) 0 0;
}
.portable-infobox.pi-theme-monde .pi-header:not(.pi-title) {
color: var(--theme-accent) !important;
}
.portable-infobox.pi-theme-monde .pi-data[data-source="seed"] .pi-data-value,
.portable-infobox.pi-theme-monde .pi-data[data-source="spawn"] .pi-data-value a {
color: var(--theme-accent);
font-style: italic;
}
/* Joueur Theme - Blue */
.portable-infobox.pi-theme-joueur {
--theme-primary: #0066CC;
--theme-accent: #4A90E2;
}
.portable-infobox.pi-theme-joueur .pi-title {
background-color: var(--theme-primary) !important;
color: #fff !important;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: var(--tg-border-radius-large) var(--tg-border-radius-large) 0 0;
}
.portable-infobox.pi-theme-joueur .pi-header:not(.pi-title) {
color: var(--theme-primary) !important;
}
.portable-infobox.pi-theme-joueur .pi-data[data-source="username"] .pi-data-value {
color: var(--theme-primary);
font-weight: bold;
}
/* Serveur Theme - Red */
.portable-infobox.pi-theme-serveur {
--theme-primary: #CC0000;
--theme-accent: #FF4444;
}
.portable-infobox.pi-theme-serveur .pi-title {
background-color: var(--theme-primary) !important;
color: #fff !important;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: var(--tg-border-radius-large) var(--tg-border-radius-large) 0 0;
}
.portable-infobox.pi-theme-serveur .pi-header:not(.pi-title) {
color: var(--theme-primary) !important;
}
.portable-infobox.pi-theme-serveur .pi-data[data-source="ip"] .pi-data-value {
font-family: "Courier New", monospace;
background-color: rgba(0, 0, 0, 0.05);
padding: 4px 8px;
border-radius: 4px;
margin: 4px 0;
}
/* Événement Theme - Purple */
.portable-infobox.pi-theme-evenement {
--theme-primary: #8A2BE2;
--theme-accent: #B347D9;
}
.portable-infobox.pi-theme-evenement .pi-title {
background-color: var(--theme-primary) !important;
color: #fff !important;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: var(--tg-border-radius-large) var(--tg-border-radius-large) 0 0;
}
.portable-infobox.pi-theme-evenement .pi-header:not(.pi-title) {
color: var(--theme-primary) !important;
}
.portable-infobox.pi-theme-evenement .pi-data[data-source="date"] .pi-data-value {
color: var(--theme-primary);
font-weight: bold;
}
/* Construction Theme - Orange */
.portable-infobox.pi-theme-construction {
--theme-primary: #FF8C00;
--theme-accent: #FFA500;
}
.portable-infobox.pi-theme-construction .pi-title {
background-color: var(--theme-primary) !important;
color: #fff !important;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: var(--tg-border-radius-large) var(--tg-border-radius-large) 0 0;
}
.portable-infobox.pi-theme-construction .pi-header:not(.pi-title) {
color: var(--theme-primary) !important;
}
.portable-infobox.pi-theme-construction .pi-data[data-source="architecte"] .pi-data-value {
color: var(--theme-primary);
font-weight: bold;
}
/* =================================================================
RESPONSIVE DESIGN
================================================================= */
@media (max-width: 640px) {
.portable-infobox {
width: 100%;
float: none;
margin: 1em 0;
border-radius: var(--tg-border-radius-large);
}
.portable-infobox .pi-image {
transform: none;
border-radius: 0;
margin-top: 0;
}
.portable-infobox .pi-image figure {
margin-top: 16px;
}
/* Stack data labels and values on mobile */
.portable-infobox .pi-data {
display: block;
}
.portable-infobox .pi-data-label,
.portable-infobox .pi-data-value {
display: block;
width: 100%;
padding: 6px 16px;
}
.portable-infobox .pi-data-label {
font-weight: bold;
padding-bottom: 2px;
}
.portable-infobox .pi-data-value {
padding-top: 2px;
padding-bottom: 12px;
}
}
/* Tablet adjustments */
@media (max-width: 1024px) and (min-width: 641px) {
.portable-infobox {
width: 300px;
}
}
/* =================================================================
ACCESSIBILITY & SPECIAL FEATURES
================================================================= */
/* High contrast mode support */
@media (prefers-contrast: high) {
.portable-infobox {
border: 2px solid var(--tg-color-base);
background-color: var(--tg-color-surface-2);
}
.portable-infobox .pi-title {
border: 2px solid currentColor;
}
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
.portable-infobox,
.portable-infobox * {
transition: none !important;
animation: none !important;
}
}
/* Focus indicators for accessibility */
.portable-infobox a:focus {
outline: 2px solid var(--theme-primary, #0066CC);
outline-offset: 2px;
border-radius: 2px;
}
/* Print styles */
@media print {
.portable-infobox {
width: 100%;
float: none;
margin: 1em 0;
border: 1px solid #000;
box-shadow: none;
background-color: #fff !important;
color: #000 !important;
font-size: 12px;
page-break-inside: avoid;
}
.portable-infobox .pi-title {
background-color: #f0f0f0 !important;
color: #000 !important;
border: 1px solid #000;
}
.portable-infobox .pi-header {
color: #000 !important;
}
.portable-infobox a {
color: #000 !important;
text-decoration: underline;
}
}
/* EmbedVideo compatibility (if used) */
.portable-infobox .embedvideo {
position: relative;
width: 100% !important;
margin: 8px 0;
}
/* Spotify embed hack adaptation */
.portable-infobox .embedvideo[data-service="spotifytrack"]::after {
content: "";
position: absolute;
inset: -4px;
border: 6px solid var(--tg-color-surface-2);
border-radius: 12px;
pointer-events: none;
}