Files
Talks/portal/.vitepress/theme/custom.css
T
Le Prévost-Corvellec Arnault 354c8cd9ef Add Makefile, package.json, and initial configuration for VitePress and Slidev integration
- Introduced a Makefile for streamlined commands related to building, running, and managing presentations.
- Created package.json to define project metadata, dependencies, and scripts for development and testing.
- Added .gitignore entries to exclude build artifacts and temporary files from version control.
- Included playwright.config.mjs for end-to-end testing setup with Playwright.
- Added README.md for project documentation, outlining setup instructions and development guidelines.
2026-04-11 15:59:20 +02:00

402 lines
8.0 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Look & feel aligné sur talk.specificat.io (palette sombre + accent cyan).
* Variables VitePress ajustées pour cohérence avec la nav et le contenu.
*/
:root {
--talk-bg-dark: #050709;
--talk-bg-medium: #0d1115;
--talk-bg-light: #1b1f22;
--talk-bg-gradient-start: #10151a;
--talk-text-primary: #f5f5f5;
--talk-text-muted: rgba(245, 245, 245, 0.9);
--talk-text-subtle: rgba(245, 245, 245, 0.75);
--talk-accent-cyan: #2bc9c6;
--talk-accent-cyan-bg: rgba(43, 201, 198, 0.08);
--talk-accent-cyan-border: rgba(43, 201, 198, 0.55);
--talk-border-subtle: rgba(255, 255, 255, 0.12);
--talk-border-very-subtle: rgba(255, 255, 255, 0.07);
--talk-panel-glow: 0 0 0 1px rgba(43, 201, 198, 0.12);
--vp-c-bg: var(--talk-bg-dark);
--vp-c-bg-alt: var(--talk-bg-medium);
--vp-c-bg-elv: var(--talk-bg-light);
--vp-c-text-1: var(--talk-text-primary);
--vp-c-text-2: var(--talk-text-muted);
--vp-c-text-3: var(--talk-text-subtle);
--vp-c-divider: var(--talk-border-subtle);
--vp-c-brand-1: var(--talk-accent-cyan);
--vp-c-brand-2: var(--talk-accent-cyan);
--vp-c-brand-3: var(--talk-accent-cyan);
--vp-c-brand-soft: var(--talk-accent-cyan-bg);
--vp-button-brand-bg: transparent;
--vp-button-brand-border: var(--talk-accent-cyan);
--vp-button-brand-text: var(--talk-accent-cyan);
--vp-nav-bg-color: rgba(5, 7, 9, 0.85);
--vp-sidebar-bg-color: var(--talk-bg-medium);
--vp-code-bg: var(--talk-accent-cyan-bg);
}
.dark {
--vp-c-bg: var(--talk-bg-dark);
--vp-c-bg-alt: var(--talk-bg-medium);
}
html {
height: 100%;
}
body {
min-height: 100%;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', sans-serif;
color: var(--talk-text-primary);
background-color: var(--talk-bg-dark);
background-image:
radial-gradient(circle at 10% 0%, var(--talk-bg-gradient-start) 0%, var(--talk-bg-dark) 52%, var(--talk-bg-light) 100%),
radial-gradient(ellipse 100% 80% at 50% -20%, rgba(43, 201, 198, 0.12), transparent 55%);
}
body::after {
content: '';
position: fixed;
inset: 0;
pointer-events: none;
background: radial-gradient(ellipse 95% 75% at 50% 50%, transparent 35%, rgba(5, 7, 9, 0.35) 100%);
z-index: 0;
}
#app,
.VPContent,
.VPDoc,
.VPDoc .content-container {
position: relative;
z-index: 1;
}
.VPNav {
border-bottom: 1px solid var(--talk-border-very-subtle);
backdrop-filter: blur(10px);
}
/* --- Page d’accueil (structure legacy) --- */
.talk-page {
max-width: 960px;
margin: 0 auto;
padding-bottom: 2rem;
}
.masthead {
margin-bottom: 2rem;
}
.masthead h1 {
margin: 0 0 0.35rem;
font-size: clamp(1.75rem, 4vw, 2.25rem);
font-weight: 700;
letter-spacing: -0.02em;
}
.masthead-lead {
margin: 0;
font-size: 1.05rem;
color: var(--talk-text-subtle);
max-width: 42em;
line-height: 1.55;
}
.masthead-lead strong {
color: var(--talk-accent-cyan);
font-weight: 600;
}
.masthead a {
color: var(--talk-accent-cyan);
text-decoration: none;
font-weight: 500;
}
.masthead a:hover {
text-decoration: underline;
text-underline-offset: 3px;
}
.section-title {
margin: 0 0 1rem;
font-size: 1.15rem;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--talk-text-primary);
}
.intro {
margin-bottom: 2.25rem;
}
.intro p {
margin: 0 0 1rem;
font-size: 0.98rem;
line-height: 1.6;
color: var(--talk-text-muted);
max-width: 52em;
}
.intro p:last-child {
margin-bottom: 0;
}
.intro code {
font-size: 0.9em;
padding: 0.12em 0.35em;
border-radius: 6px;
background: var(--talk-accent-cyan-bg);
border: 1px solid var(--talk-border-very-subtle);
}
/* --- QR (accueil) --- */
.qr-section {
margin-bottom: 2.5rem;
}
.qr-grid {
display: grid;
gap: 1rem;
grid-template-columns: 1fr;
}
@media (min-width: 640px) {
.qr-grid {
grid-template-columns: repeat(2, 1fr);
}
}
.qr-card {
display: flex;
flex-direction: column;
align-items: flex-start;
padding: 1.25rem 1.35rem;
border-radius: 12px;
border: 1px solid var(--talk-border-subtle);
background: rgba(13, 17, 21, 0.55);
box-shadow: var(--talk-panel-glow), inset 0 1px 0 0 rgba(255, 255, 255, 0.03);
}
.qr-card h3 {
margin: 0 0 0.35rem;
font-size: 1rem;
font-weight: 600;
color: var(--talk-accent-cyan);
}
.qr-card-desc {
margin: 0 0 0.75rem;
font-size: 0.9rem;
line-height: 1.45;
color: var(--talk-text-subtle);
}
.qr-link {
display: inline-block;
margin-bottom: 1rem;
font-size: 0.92rem;
font-weight: 500;
color: var(--talk-accent-cyan);
text-decoration: none;
word-break: break-all;
}
.qr-link:hover,
.qr-link:focus-visible {
text-decoration: underline;
text-underline-offset: 3px;
outline: none;
}
.qr-link:focus-visible {
outline: 2px solid var(--talk-accent-cyan);
outline-offset: 2px;
border-radius: 4px;
}
.qrcode-wrap {
padding: 0.5rem;
background: #fff;
border-radius: 8px;
line-height: 0;
}
/* Cartes accueil : .qr-card est en align-items: flex-start */
.qr-card .qrcode-wrap {
align-self: center;
}
.qrcode-wrap canvas,
.qrcode-wrap img {
display: block;
max-width: 100%;
height: auto;
}
.qr-deck {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
margin: 1rem 0 1.5rem;
text-align: center;
}
.qr-deck .qr-link {
max-width: 100%;
}
.home-more {
margin-top: 1.5rem;
}
/* --- Grille présentations (cartes type legacy) --- */
.talks-section {
margin-bottom: 2rem;
}
.talks-grid {
display: grid;
gap: 1rem;
grid-template-columns: 1fr;
}
@media (min-width: 560px) {
.talks-grid {
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
}
.talk-card {
display: flex;
flex-direction: column;
padding: 1.15rem 1.25rem;
border-radius: 12px;
border: 1px solid var(--talk-border-subtle);
background: rgba(13, 17, 21, 0.55);
box-shadow: var(--talk-panel-glow), inset 0 1px 0 0 rgba(255, 255, 255, 0.03);
text-decoration: none;
color: inherit;
transition:
border-color 0.15s ease,
box-shadow 0.15s ease,
transform 0.12s ease;
}
a.talk-card:hover,
a.talk-card:focus-visible {
border-color: var(--talk-accent-cyan-border);
box-shadow:
var(--talk-panel-glow),
0 0 0 1px rgba(43, 201, 198, 0.18),
inset 0 1px 0 0 rgba(255, 255, 255, 0.05);
transform: translateY(-1px);
outline: none;
}
a.talk-card:focus-visible {
outline: 2px solid var(--talk-accent-cyan);
outline-offset: 2px;
}
.talk-card h2 {
margin: 0 0 0.4rem;
font-size: 1.1rem;
font-weight: 600;
color: var(--talk-accent-cyan);
}
.talk-card p {
margin: 0;
font-size: 0.95rem;
line-height: 1.45;
color: var(--talk-text-muted);
}
.talk-card .meta {
margin-top: 0.75rem;
font-size: 0.8rem;
color: var(--talk-text-subtle);
}
/* Liste présentations : carte avec actions */
.talk-card--list h2 a {
color: var(--talk-accent-cyan);
text-decoration: none;
}
.talk-card--list h2 a:hover {
text-decoration: underline;
}
article.talk-card--list {
transition:
border-color 0.15s ease,
box-shadow 0.15s ease;
}
article.talk-card--list:hover {
border-color: var(--talk-accent-cyan-border);
box-shadow:
var(--talk-panel-glow),
0 0 0 1px rgba(43, 201, 198, 0.12);
}
.talk-card__actions {
margin-top: 1rem;
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
/* Boutons (fiches + détail) */
.vp-button {
display: inline-block;
padding: 0.4rem 0.85rem;
border-radius: 8px;
font-size: 0.88rem;
font-weight: 500;
text-decoration: none;
border: 1px solid var(--talk-accent-cyan);
color: var(--talk-accent-cyan);
background: transparent;
transition: background 0.15s ease;
}
.vp-button:hover {
background: var(--talk-accent-cyan-bg);
}
.vp-button--alt {
border-color: var(--talk-border-subtle);
color: var(--talk-text-muted);
}
.pres-actions {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
margin: 1rem 0 0;
}
/* Titres pages intérieures */
.vp-doc h1 {
font-weight: 700;
letter-spacing: -0.02em;
}
/* Footer VitePress */
.VPFooter {
border-top: 1px solid var(--talk-border-very-subtle);
color: var(--talk-text-subtle);
font-size: 0.85rem;
}
/* Local search / algolia si activé */
.VPLocalSearchBackdrop {
z-index: 100;
}