153 lines
3.1 KiB
CSS
153 lines
3.1 KiB
CSS
/* Reset léger et bases */
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html, body {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
background: var(--color-bg, #ffffff);
|
|
color: var(--color-text, #1f2937);
|
|
min-height: 100svh;
|
|
padding-top: var(--header-height, 80px); /* espace pour le header fixe */
|
|
transition: background-color 0.25s ease, color 0.25s ease;
|
|
transition: background-color 0.25s ease, color 0.25s ease;
|
|
}
|
|
|
|
/* Images fluides */
|
|
img, svg, video {
|
|
max-width: 100%;
|
|
height: auto;
|
|
display: block;
|
|
}
|
|
|
|
/* Mise en page commune */
|
|
main {
|
|
display: block;
|
|
}
|
|
|
|
.container {
|
|
max-width: var(--container-max, 1100px);
|
|
margin-inline: auto;
|
|
padding-inline: min(5vw, var(--space-6, 1.5rem));
|
|
}
|
|
|
|
.section {
|
|
padding-block: var(--space-16, 4rem) var(--space-12, 3rem);
|
|
}
|
|
|
|
.hero {
|
|
background: var(--color-surface, #ffffff);
|
|
border-bottom: 1px solid var(--color-border, #efefef);
|
|
box-shadow: inset 0 -6px 0 var(--color-accent-50, #fff4ec);
|
|
padding-block: var(--space-16, 4rem);
|
|
}
|
|
|
|
.hero h2 {
|
|
margin: 0 0 var(--space-2, 0.5rem);
|
|
}
|
|
|
|
.hero p {
|
|
margin: 0;
|
|
max-width: 60ch;
|
|
color: var(--color-muted, #6b7280);
|
|
}
|
|
|
|
/* Footer minimal */
|
|
footer {
|
|
background: var(--color-bg, #ffffff);
|
|
border-top: 1px solid var(--color-border, #efefef);
|
|
margin-top: var(--space-16, 4rem);
|
|
padding: var(--space-6, 1.5rem) min(5vw, var(--space-6, 1.5rem));
|
|
color: var(--color-muted, #6b7280);
|
|
text-align: center;
|
|
}
|
|
|
|
/* Accessibilité et confort */
|
|
:focus-visible {
|
|
outline: 2px solid var(--color-accent, #ff6b35);
|
|
outline-offset: 2px;
|
|
border-radius: var(--radius-sm, 6px);
|
|
}
|
|
|
|
/* Sélection de texte en orange doux */
|
|
::selection {
|
|
background: var(--color-accent-100, #ffe4d6);
|
|
color: var(--color-text, #1f2937);
|
|
}
|
|
|
|
/* Scroll fluide + offset pour header fixe */
|
|
html {
|
|
scroll-behavior: smooth;
|
|
color-scheme: light;
|
|
}
|
|
|
|
html[data-theme="dark"] {
|
|
color-scheme: dark;
|
|
color-scheme: light;
|
|
}
|
|
|
|
html[data-theme="dark"] {
|
|
color-scheme: dark;
|
|
}
|
|
|
|
/* Tout élément ciblé par un id laissera la place au header */
|
|
[id] {
|
|
scroll-margin-top: calc(var(--header-height, 80px) + 12px);
|
|
}
|
|
|
|
/* Séparateur horizontal discret */
|
|
hr {
|
|
border: 0;
|
|
height: 1px;
|
|
background: var(--color-border, #efefef);
|
|
margin: var(--space-8, 2rem) 0;
|
|
}
|
|
|
|
/* Variantes de section */
|
|
.section--alt {
|
|
background: var(--color-accent-50, #fff4ec);
|
|
border-top: 1px solid var(--color-border, #efefef);
|
|
border-bottom: 1px solid var(--color-border, #efefef);
|
|
}
|
|
|
|
.lead {
|
|
font-size: 1.125rem;
|
|
color: var(--color-muted, #6b7280);
|
|
}
|
|
|
|
footer {
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
/* Fin: préférences de mouvement */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
* {
|
|
animation: none !important;
|
|
transition: none !important;
|
|
scroll-behavior: auto !important;
|
|
}
|
|
}
|
|
|
|
/* Sticky footer (hidden at top, visible on scroll) */
|
|
.sticky-footer {
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
transform: translateY(100%);
|
|
transition: transform 0.3s ease;
|
|
z-index: 40;
|
|
pointer-events: none; /* prevent blocking clicks when hidden */
|
|
}
|
|
|
|
.sticky-footer.is-visible {
|
|
transform: translateY(0);
|
|
box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.08);
|
|
pointer-events: auto;
|
|
}
|