Étend la DA "Polaroid Néon" aux 4 derniers écrans
Upload invité (priorité haute, full traitement : fond #12100E, CTA corail, General Sans/Inter, touche Caveat sur le message de succès), galerie admin (exception admin du skill : sobre, sombre, cartes #1E1B18, pas de rotation/confettis, corail réservé aux CTA), générateur QR (même exception admin, traitement minimal), carton imprimable (reste clair — un support papier n'a pas vocation à avoir un fond noir — mais adopte les polices et l'accent corail de la nouvelle DA, contraste recalculé pour l'impression). Double thème clair/sombre de l'ancienne DA retiré au profit d'un thème unique sombre, cohérent avec src/galerie/ (premier écran de cette DA, déjà validé). Dégradés de texte et halo de fond de l'ancienne DA retirés (skill : jamais de glow/neon artificiel). Contrastes vérifiés par calcul WCAG AA pour toutes les nouvelles combinaisons. Chemins d'assets absolus et pattern [hidden]/display vérifiés sur les 4 écrans (bugs déjà rencontrés deux fois en prod).
This commit is contained in:
+50
-60
@@ -5,57 +5,43 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Générateur de QR code — photobooth-qr (admin)</title>
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<meta name="theme-color" content="#faf6f0" media="(prefers-color-scheme: light)" />
|
||||
<meta name="theme-color" content="#1b120b" media="(prefers-color-scheme: dark)" />
|
||||
<meta name="theme-color" content="#12100E" />
|
||||
<style>
|
||||
/* Mêmes tokens que src/e/style.css et src/admin/gallery/style.css —
|
||||
cohérence visuelle même sur cet outil interne que les clients ne
|
||||
voient pas (cf. retour Kévin 2026-09-16). Palette/rayons resynchronisés
|
||||
avec la passe 2 (2026-09-16, direction "punchy/friendly") ; outil
|
||||
interne, priorité basse donc pas de police d'accent ni d'animations
|
||||
d'entrée ajoutées ici, juste la cohérence de base (couleurs, rayons).
|
||||
|
||||
Passe 3 (2026-09-16) : mode sombre ajouté (demandé explicitement pour
|
||||
ce fichier) + petites finitions hover/focus à coût nul, mais toujours
|
||||
sans Fraunces ni animation d'entrée — la priorité basse de cet outil
|
||||
reste valable, seul le mode sombre est une demande directe. */
|
||||
/* Direction artistique "Polaroid Néon" (.claude/skills/photobooth-da/SKILL.md),
|
||||
exception admin : sobre, sombre, data-first. Mêmes tokens que
|
||||
src/admin/gallery/style.css pour la cohérence visuelle entre écrans
|
||||
admin, même sur cet outil interne que les clients ne voient pas (cf.
|
||||
retour Kévin 2026-09-16, toujours valable avec la nouvelle DA). Outil
|
||||
interne à priorité basse : thème unique sombre (pas de double thème
|
||||
clair/sombre), pas d'animation d'entrée, juste la cohérence de base
|
||||
(couleurs, rayons, police). */
|
||||
:root {
|
||||
color-scheme: light dark;
|
||||
--color-bg: #fff8f0;
|
||||
--color-surface: #ffffff;
|
||||
--color-surface-muted: #fdecdd;
|
||||
--color-text: #2b2016;
|
||||
--color-muted: #8a7869;
|
||||
--color-border: #f1ddc6;
|
||||
--color-accent: #e35f2b;
|
||||
--color-accent-hover: #c74c1e;
|
||||
--color-accent-soft: #ffe3d0;
|
||||
--color-accent-contrast: #fffaf6;
|
||||
--color-error-text: #a3341c;
|
||||
--radius-sm: 12px;
|
||||
--radius: 20px;
|
||||
--shadow-sm: 0 2px 6px rgba(163, 78, 30, 0.1);
|
||||
color-scheme: dark;
|
||||
--color-bg: #12100e;
|
||||
--color-ink: #12100e;
|
||||
--color-text: #faf6f0;
|
||||
--color-muted: #e8dfd3;
|
||||
--color-muted-2: #a89e90;
|
||||
--color-coral: #ff5e5b;
|
||||
--color-card: #1e1b18;
|
||||
--color-card-muted: #262220;
|
||||
--color-border-ui: rgba(250, 246, 240, 0.16);
|
||||
--radius-sm: 10px;
|
||||
--radius: 14px;
|
||||
--shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.3);
|
||||
--ease-standard: cubic-bezier(0.22, 1, 0.36, 1);
|
||||
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--color-bg: #1b120b;
|
||||
--color-surface: #26190f;
|
||||
--color-surface-muted: #32211a;
|
||||
--color-text: #f7ead9;
|
||||
--color-muted: #b39d84;
|
||||
--color-border: #40291a;
|
||||
--color-accent: #ff7a42;
|
||||
--color-accent-hover: #ffa06e;
|
||||
--color-accent-soft: rgba(255, 122, 66, 0.18);
|
||||
--color-accent-contrast: #241206;
|
||||
--color-error-text: #ff9b86;
|
||||
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.45);
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Inter";
|
||||
src: url("/vendor/fonts/inter-latin-variable.woff2") format("woff2");
|
||||
font-weight: 400 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
@@ -79,7 +65,7 @@
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
flex-shrink: 0;
|
||||
color: var(--color-accent);
|
||||
color: var(--color-coral);
|
||||
}
|
||||
.brand span {
|
||||
font-size: 0.7rem;
|
||||
@@ -111,24 +97,24 @@
|
||||
padding: 0.7rem 0.75rem;
|
||||
font: inherit;
|
||||
font-size: 1rem;
|
||||
border: 1px solid var(--color-border);
|
||||
border: 1px solid var(--color-border-ui);
|
||||
border-radius: var(--radius-sm);
|
||||
background: var(--color-surface);
|
||||
background: var(--color-card);
|
||||
color: inherit;
|
||||
transition: border-color 0.15s var(--ease-standard), box-shadow 0.15s var(--ease-standard);
|
||||
}
|
||||
input:focus,
|
||||
select:focus {
|
||||
outline: none;
|
||||
border-color: var(--color-accent);
|
||||
box-shadow: 0 0 0 4px var(--color-accent-soft);
|
||||
border-color: var(--color-coral);
|
||||
box-shadow: 0 0 0 4px rgba(255, 94, 91, 0.22);
|
||||
}
|
||||
.preview {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1.1rem;
|
||||
border: 1px solid var(--color-border);
|
||||
border: 1px solid var(--color-border-ui);
|
||||
border-radius: var(--radius);
|
||||
background: var(--color-surface);
|
||||
background: var(--color-card);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
@@ -160,40 +146,44 @@
|
||||
button {
|
||||
flex: 1;
|
||||
font: inherit;
|
||||
font-weight: 600;
|
||||
font-weight: 700;
|
||||
padding: 0.85rem 0.7rem;
|
||||
min-height: 48px;
|
||||
font-size: 0.95rem;
|
||||
border: 1px solid var(--color-accent);
|
||||
border: 1px solid var(--color-coral);
|
||||
border-radius: var(--radius-sm);
|
||||
background: var(--color-accent);
|
||||
color: var(--color-accent-contrast);
|
||||
background: var(--color-coral);
|
||||
color: var(--color-ink);
|
||||
box-shadow: var(--shadow-sm);
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s var(--ease-standard), background 0.15s ease;
|
||||
}
|
||||
button:active:not(:disabled) {
|
||||
background: var(--color-accent-hover);
|
||||
background: #ff7673;
|
||||
}
|
||||
button.secondary {
|
||||
background: var(--color-surface);
|
||||
color: var(--color-accent);
|
||||
background: var(--color-card);
|
||||
color: var(--color-text);
|
||||
border-color: var(--color-border-ui);
|
||||
box-shadow: none;
|
||||
}
|
||||
button.secondary:active:not(:disabled) {
|
||||
background: var(--color-accent-soft);
|
||||
background: var(--color-card-muted);
|
||||
}
|
||||
@media (hover: hover) {
|
||||
button:hover:not(:disabled) {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
button.secondary:hover:not(:disabled) {
|
||||
border-color: var(--color-coral);
|
||||
}
|
||||
}
|
||||
button:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.error {
|
||||
color: var(--color-error-text);
|
||||
color: var(--color-coral);
|
||||
font-size: 0.85rem;
|
||||
margin-top: 0.5rem;
|
||||
min-height: 1.2em;
|
||||
|
||||
Reference in New Issue
Block a user