- camera.py : désactiver LiveView avant capture (viewfinder=0) → miroir abaissé → AF phase-détection Canon actif. Remplace _declencher_af_liveview (autofocusdrive=1 pouvait bloquer sur certains corps Canon). activer_viewfinder() après la prise. - main.py : fix bug global _preview_actif dans api_capturer (était variable locale, le global restait True). Timeout asyncio 20s sur run_in_executor pour éviter freeze permanent si capture bloque. Logs INFO avant/après capture. - camera.js + index.html + style.css : spinner "Capture en cours..." entre le flash et l'affichage du résultat. Cacher le spinner dans afficherErreurCapture aussi. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1858 lines
32 KiB
CSS
1858 lines
32 KiB
CSS
/* === Variables et Reset === */
|
|
:root {
|
|
--primaire: #e91e63;
|
|
--secondaire: #ffffff;
|
|
--fond: #1a1a2e;
|
|
--fond-carte: #16213e;
|
|
--texte: #ffffff;
|
|
--texte-secondaire: #a0a0b0;
|
|
--danger: #f44336;
|
|
--succes: #4caf50;
|
|
--rayon: 16px;
|
|
--ombre: 0 8px 32px rgba(0,0,0,0.3);
|
|
--transition: 0.3s ease;
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
-webkit-tap-highlight-color: transparent;
|
|
-webkit-touch-callout: none;
|
|
user-select: none;
|
|
}
|
|
|
|
html, body {
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
|
|
background: var(--fond);
|
|
color: var(--texte);
|
|
font-size: 18px;
|
|
}
|
|
|
|
/* === Ecrans === */
|
|
.ecran {
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 0.4s ease;
|
|
z-index: 1;
|
|
background: var(--fond);
|
|
}
|
|
|
|
.ecran.actif {
|
|
opacity: 1;
|
|
pointer-events: all;
|
|
z-index: 10;
|
|
}
|
|
|
|
/* === Ecran d'accueil === */
|
|
.accueil-media {
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
object-fit: cover;
|
|
z-index: 0;
|
|
}
|
|
|
|
.accueil-contenu {
|
|
text-align: center;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.accueil-logo {
|
|
width: 32vw;
|
|
height: auto;
|
|
margin-bottom: 2rem;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.accueil-contenu h1 {
|
|
font-size: 3.5rem;
|
|
font-weight: 300;
|
|
letter-spacing: 0.1em;
|
|
margin-bottom: 1rem;
|
|
color: var(--primaire);
|
|
}
|
|
|
|
.accueil-instruction {
|
|
font-size: 1.4rem;
|
|
color: var(--texte-secondaire);
|
|
animation: pulse-texte 2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes pulse-texte {
|
|
0%, 100% { opacity: 0.5; }
|
|
50% { opacity: 1; }
|
|
}
|
|
|
|
.accueil-animation {
|
|
margin-top: 3rem;
|
|
}
|
|
|
|
.cercle-pulse {
|
|
width: 80px;
|
|
height: 80px;
|
|
border-radius: 50%;
|
|
background: var(--primaire);
|
|
margin: 0 auto;
|
|
animation: pulse-cercle 2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes pulse-cercle {
|
|
0% { transform: scale(1); opacity: 0.7; }
|
|
50% { transform: scale(1.2); opacity: 1; }
|
|
100% { transform: scale(1); opacity: 0.7; }
|
|
}
|
|
|
|
/* Bouton admin discret */
|
|
.btn-admin {
|
|
position: absolute;
|
|
bottom: 12px;
|
|
right: 12px;
|
|
width: 56px;
|
|
height: 56px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 1.5rem;
|
|
color: rgba(255,255,255,0.15);
|
|
cursor: pointer;
|
|
border-radius: 50%;
|
|
transition: color 0.3s;
|
|
z-index: 50;
|
|
}
|
|
|
|
.btn-admin:hover, .btn-admin:active {
|
|
color: rgba(255,255,255,0.4);
|
|
}
|
|
|
|
.btn-photostation {
|
|
position: absolute;
|
|
bottom: 12px;
|
|
left: 12px;
|
|
width: 56px;
|
|
z-index: 50;
|
|
height: 56px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 1.5rem;
|
|
color: rgba(255,255,255,0.15);
|
|
cursor: pointer;
|
|
border-radius: 50%;
|
|
transition: color 0.3s;
|
|
}
|
|
|
|
.btn-photostation:hover, .btn-photostation:active {
|
|
color: rgba(255,255,255,0.4);
|
|
}
|
|
|
|
/* Popup mot de passe */
|
|
.popup-overlay {
|
|
position: fixed;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
background: rgba(0,0,0,0.7);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 100;
|
|
}
|
|
|
|
.popup-box {
|
|
background: var(--fond-carte);
|
|
border-radius: var(--rayon);
|
|
padding: 2rem;
|
|
min-width: 300px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
align-items: center;
|
|
box-shadow: var(--ombre);
|
|
}
|
|
|
|
.popup-box h3 {
|
|
color: var(--texte);
|
|
margin: 0;
|
|
}
|
|
|
|
.popup-box input {
|
|
background: var(--fond);
|
|
border: 2px solid #333;
|
|
border-radius: 8px;
|
|
padding: 0.8rem 1.2rem;
|
|
color: var(--texte);
|
|
font-size: 1.5rem;
|
|
text-align: center;
|
|
letter-spacing: 0.3em;
|
|
width: 200px;
|
|
outline: none;
|
|
}
|
|
|
|
.popup-box input:focus {
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.popup-actions {
|
|
display: flex;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.popup-box-pave {
|
|
max-width: 360px;
|
|
}
|
|
|
|
.pave-numerique {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 10px;
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
.pave-touche {
|
|
font-size: 2rem;
|
|
padding: 1.2rem;
|
|
border: none;
|
|
border-radius: 12px;
|
|
background: rgba(255, 255, 255, 0.15);
|
|
color: #fff;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
-webkit-tap-highlight-color: transparent;
|
|
}
|
|
|
|
.pave-touche:active {
|
|
background: rgba(255, 255, 255, 0.3);
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.pave-effacer {
|
|
background: rgba(255, 100, 100, 0.3);
|
|
}
|
|
|
|
.pave-valider {
|
|
background: rgba(100, 255, 100, 0.3);
|
|
}
|
|
|
|
.mdp-erreur {
|
|
color: var(--danger);
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
/* === Choix du mode === */
|
|
.grille-modes {
|
|
display: flex;
|
|
gap: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.btn-mode {
|
|
background: var(--fond-carte);
|
|
border: 2px solid transparent;
|
|
border-radius: var(--rayon);
|
|
padding: 3rem 5rem;
|
|
color: var(--texte);
|
|
font-size: 1.6rem;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
box-shadow: var(--ombre);
|
|
}
|
|
|
|
.btn-mode:active {
|
|
transform: scale(0.95);
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.btn-mode .mode-icone {
|
|
font-size: 3rem;
|
|
}
|
|
|
|
.btn-mode .mode-icone-large {
|
|
font-size: 8rem;
|
|
}
|
|
|
|
/* === Booth info (code + QR sur accueil) === */
|
|
.booth-info {
|
|
position: absolute;
|
|
bottom: 1rem;
|
|
left: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
background: rgba(0,0,0,0.5);
|
|
padding: 0.5rem 1rem;
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.booth-qr {
|
|
width: 270px;
|
|
height: 270px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.booth-code {
|
|
font-size: 1.4rem;
|
|
font-weight: bold;
|
|
color: rgba(255,255,255,0.7);
|
|
letter-spacing: 4px;
|
|
}
|
|
|
|
/* === Capture / Preview live === */
|
|
.preview-live {
|
|
width: 100%;
|
|
height: 100%;
|
|
position: relative;
|
|
background: #000;
|
|
}
|
|
|
|
.preview-live img {
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.preview-erreur-camera {
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0; bottom: 0;
|
|
background: rgba(0, 0, 0, 0.85);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 1rem;
|
|
color: #fff;
|
|
z-index: 10;
|
|
}
|
|
|
|
.preview-erreur-camera.cache {
|
|
display: none;
|
|
}
|
|
|
|
.preview-erreur-icon {
|
|
font-size: 5rem;
|
|
animation: pulse-texte 1.5s ease-in-out infinite;
|
|
}
|
|
|
|
.preview-erreur-camera p {
|
|
font-size: 1.8rem;
|
|
font-weight: bold;
|
|
margin: 0;
|
|
}
|
|
|
|
.preview-erreur-camera span {
|
|
font-size: 1.3rem;
|
|
opacity: 0.85;
|
|
text-align: center;
|
|
max-width: 80%;
|
|
}
|
|
|
|
.compte-a-rebours {
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: transparent;
|
|
z-index: 10;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.compte-a-rebours span {
|
|
font-size: 14rem;
|
|
font-weight: 800;
|
|
color: #ffffff;
|
|
text-shadow: 0 0 40px rgba(0,0,0,0.8), 0 0 80px var(--primaire);
|
|
animation: pop 0.5s ease;
|
|
}
|
|
|
|
@keyframes pop {
|
|
0% { transform: scale(0.3); opacity: 0; }
|
|
60% { transform: scale(1.2); }
|
|
100% { transform: scale(1); opacity: 1; }
|
|
}
|
|
|
|
.flash-blanc {
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
background: #fff;
|
|
z-index: 20;
|
|
animation: flash 0.3s ease-out forwards;
|
|
}
|
|
|
|
@keyframes flash {
|
|
0% { opacity: 1; }
|
|
100% { opacity: 0; }
|
|
}
|
|
|
|
.capture-en-cours {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 1.5rem;
|
|
background: rgba(0,0,0,0.6);
|
|
z-index: 15;
|
|
font-size: 1.4rem;
|
|
color: #fff;
|
|
}
|
|
|
|
.capture-spinner {
|
|
width: 60px;
|
|
height: 60px;
|
|
border: 6px solid rgba(255,255,255,0.3);
|
|
border-top-color: #fff;
|
|
border-radius: 50%;
|
|
animation: spin 0.8s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
|
|
.capture-info {
|
|
position: absolute;
|
|
bottom: 2rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: rgba(0,0,0,0.5);
|
|
padding: 0.5rem 1.5rem;
|
|
border-radius: 2rem;
|
|
font-size: 1rem;
|
|
z-index: 5;
|
|
}
|
|
|
|
/* === Preview photo + Filtres === */
|
|
.preview-photo-container {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 1rem;
|
|
max-height: 65vh;
|
|
position: relative;
|
|
}
|
|
|
|
.preview-photo-container img {
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
border-radius: var(--rayon);
|
|
box-shadow: var(--ombre);
|
|
}
|
|
|
|
.cadre-overlay {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
pointer-events: none;
|
|
border-radius: var(--rayon);
|
|
}
|
|
|
|
.barre-fonds {
|
|
display: flex;
|
|
gap: 0.8rem;
|
|
padding: 0.8rem;
|
|
overflow-x: auto;
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
|
|
.btn-fond {
|
|
width: 80px;
|
|
height: 60px;
|
|
border-radius: 8px;
|
|
border: 3px solid transparent;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
overflow: hidden;
|
|
flex-shrink: 0;
|
|
padding: 0;
|
|
background: var(--fond-carte);
|
|
}
|
|
|
|
.btn-fond img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.btn-fond.actif {
|
|
border-color: var(--primaire);
|
|
box-shadow: 0 0 12px rgba(233, 30, 99, 0.5);
|
|
}
|
|
|
|
.btn-fond:active {
|
|
transform: scale(0.93);
|
|
}
|
|
|
|
.barre-filtres, .barre-overlays {
|
|
display: flex;
|
|
gap: 0.8rem;
|
|
padding: 1rem;
|
|
overflow-x: auto;
|
|
width: 100%;
|
|
justify-content: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.btn-filtre, .btn-overlay {
|
|
background: var(--fond-carte);
|
|
border: 2px solid transparent;
|
|
border-radius: 12px;
|
|
padding: 1rem 1.5rem;
|
|
color: var(--texte);
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
white-space: nowrap;
|
|
min-height: 48px;
|
|
}
|
|
|
|
.btn-filtre.actif, .btn-overlay.actif {
|
|
border-color: var(--primaire);
|
|
background: rgba(233, 30, 99, 0.2);
|
|
}
|
|
|
|
.btn-filtre:active, .btn-overlay:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.preview-actions {
|
|
display: flex;
|
|
gap: 1rem;
|
|
padding: 1rem;
|
|
}
|
|
|
|
/* === Partage === */
|
|
#ecran-partage h2 {
|
|
margin-top: 2rem;
|
|
font-weight: 300;
|
|
}
|
|
|
|
.photo-miniature {
|
|
margin: 1rem 0;
|
|
max-height: 30vh;
|
|
}
|
|
|
|
.photo-miniature img {
|
|
max-height: 30vh;
|
|
border-radius: var(--rayon);
|
|
box-shadow: var(--ombre);
|
|
}
|
|
|
|
.grille-partage {
|
|
display: flex;
|
|
gap: 1.5rem;
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
.btn-partage {
|
|
background: var(--fond-carte);
|
|
border: 2px solid transparent;
|
|
border-radius: var(--rayon);
|
|
padding: 1.5rem 2rem;
|
|
color: var(--texte);
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
box-shadow: var(--ombre);
|
|
}
|
|
|
|
.btn-partage:active {
|
|
transform: scale(0.95);
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.partage-icone {
|
|
font-size: 2.5rem;
|
|
}
|
|
|
|
/* Choix exemplaires impression */
|
|
.form-impression {
|
|
display: flex;
|
|
gap: 1rem;
|
|
align-items: center;
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.exemplaires-choix {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.btn-exemplaire {
|
|
width: 56px;
|
|
height: 56px;
|
|
border-radius: 50%;
|
|
border: 2px solid var(--primaire);
|
|
background: transparent;
|
|
color: var(--primaire);
|
|
font-size: 1.5rem;
|
|
font-weight: 700;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.btn-exemplaire:active {
|
|
background: var(--primaire);
|
|
color: #fff;
|
|
transform: scale(0.9);
|
|
}
|
|
|
|
#nb-exemplaires {
|
|
font-size: 2.5rem;
|
|
font-weight: 700;
|
|
color: var(--texte);
|
|
min-width: 50px;
|
|
text-align: center;
|
|
}
|
|
|
|
.exemplaires-label {
|
|
color: var(--texte-secondaire);
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.form-email {
|
|
display: flex;
|
|
gap: 0.8rem;
|
|
align-items: center;
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.form-email input {
|
|
background: var(--fond-carte);
|
|
border: 2px solid var(--texte-secondaire);
|
|
border-radius: 12px;
|
|
padding: 0.8rem 1.2rem;
|
|
color: var(--texte);
|
|
font-size: 1.1rem;
|
|
width: 300px;
|
|
outline: none;
|
|
}
|
|
|
|
.form-email input:focus {
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.zone-qr {
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.zone-qr img {
|
|
width: 200px;
|
|
height: 200px;
|
|
border-radius: 12px;
|
|
background: #fff;
|
|
padding: 8px;
|
|
}
|
|
|
|
.statut-partage {
|
|
padding: 0.8rem 1.5rem;
|
|
border-radius: 12px;
|
|
font-size: 1rem;
|
|
margin: 0.5rem 0;
|
|
}
|
|
|
|
.statut-partage.succes { background: rgba(76, 175, 80, 0.2); color: var(--succes); }
|
|
.statut-partage.erreur { background: rgba(244, 67, 54, 0.2); color: var(--danger); }
|
|
|
|
.partage-bas {
|
|
display: flex;
|
|
gap: 1rem;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
/* === Galerie === */
|
|
.grille-galerie {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
gap: 1rem;
|
|
padding: 1rem;
|
|
width: 100%;
|
|
max-height: 80vh;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.grille-galerie img {
|
|
width: 100%;
|
|
aspect-ratio: 4/3;
|
|
object-fit: cover;
|
|
border-radius: 12px;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.grille-galerie img:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
/* === Boutons communs === */
|
|
.btn-action {
|
|
background: var(--primaire);
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: 12px;
|
|
padding: 0.8rem 2rem;
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
box-shadow: 0 4px 16px rgba(233, 30, 99, 0.3);
|
|
}
|
|
|
|
.btn-action:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.btn-secondaire {
|
|
background: transparent;
|
|
color: var(--texte-secondaire);
|
|
border: 2px solid var(--texte-secondaire);
|
|
border-radius: 12px;
|
|
padding: 0.8rem 2rem;
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.btn-secondaire:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.btn-retour {
|
|
position: absolute;
|
|
bottom: 2rem;
|
|
background: transparent;
|
|
color: var(--texte-secondaire);
|
|
border: 2px solid var(--texte-secondaire);
|
|
border-radius: 12px;
|
|
padding: 1rem 2rem;
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
min-height: 48px;
|
|
}
|
|
|
|
.btn-fermer {
|
|
background: none;
|
|
border: none;
|
|
color: var(--texte);
|
|
font-size: 2rem;
|
|
cursor: pointer;
|
|
padding: 1rem;
|
|
min-width: 48px;
|
|
min-height: 48px;
|
|
}
|
|
|
|
.btn-danger {
|
|
background: var(--danger);
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: 12px;
|
|
padding: 0.8rem 2rem;
|
|
font-size: 1rem;
|
|
cursor: pointer;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.btn-danger:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
/* === Admin === */
|
|
.admin-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding: 1rem 2rem;
|
|
}
|
|
|
|
.admin-contenu {
|
|
width: 100%;
|
|
height: calc(100% - 60px);
|
|
display: flex;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.admin-onglets {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.3rem;
|
|
padding: 1rem;
|
|
min-width: 160px;
|
|
background: var(--fond-carte);
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.onglet {
|
|
background: transparent;
|
|
border: none;
|
|
color: var(--texte-secondaire);
|
|
padding: 0.8rem 1rem;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
border-radius: 8px;
|
|
font-size: 0.95rem;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.onglet.actif {
|
|
background: var(--primaire);
|
|
color: #fff;
|
|
}
|
|
|
|
.admin-panneau {
|
|
display: none;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
padding: 2rem;
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.admin-panneau.actif {
|
|
display: flex;
|
|
}
|
|
|
|
/* Infos systeme */
|
|
.infos-systeme-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.infos-systeme-contenu {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.2rem;
|
|
}
|
|
|
|
.infos-section {
|
|
background: rgba(255,255,255,0.05);
|
|
border-radius: 0.8rem;
|
|
padding: 1rem 1.2rem;
|
|
}
|
|
|
|
.infos-section h4 {
|
|
margin: 0 0 0.8rem 0;
|
|
font-size: 1rem;
|
|
opacity: 0.7;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.infos-ligne {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 0.35rem 0;
|
|
border-bottom: 1px solid rgba(255,255,255,0.07);
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.infos-ligne:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.infos-ligne span {
|
|
opacity: 0.65;
|
|
}
|
|
|
|
.infos-ip {
|
|
font-family: monospace;
|
|
font-size: 1.1rem;
|
|
letter-spacing: 0.03em;
|
|
}
|
|
|
|
.infos-barre-fond {
|
|
margin-top: 0.6rem;
|
|
background: rgba(255,255,255,0.1);
|
|
border-radius: 4px;
|
|
height: 6px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.infos-barre {
|
|
height: 100%;
|
|
border-radius: 4px;
|
|
transition: width 0.4s ease;
|
|
}
|
|
|
|
.infos-chargement, .infos-erreur {
|
|
opacity: 0.5;
|
|
text-align: center;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.btn-petit {
|
|
font-size: 0.9rem;
|
|
padding: 0.4rem 1rem;
|
|
}
|
|
|
|
/* Toggles */
|
|
.toggle-groupe {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
cursor: pointer;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.toggle input {
|
|
display: none;
|
|
}
|
|
|
|
.toggle-slider {
|
|
width: 50px;
|
|
height: 28px;
|
|
background: #555;
|
|
border-radius: 14px;
|
|
position: relative;
|
|
transition: var(--transition);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.toggle-slider::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 3px; left: 3px;
|
|
width: 22px; height: 22px;
|
|
background: #fff;
|
|
border-radius: 50%;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.toggle input:checked + .toggle-slider {
|
|
background: var(--primaire);
|
|
}
|
|
|
|
.toggle input:checked + .toggle-slider::after {
|
|
left: 25px;
|
|
}
|
|
|
|
/* Champs admin */
|
|
.champ {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.4rem;
|
|
}
|
|
|
|
.champ label {
|
|
color: var(--texte-secondaire);
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.champ input, .champ select {
|
|
background: var(--fond);
|
|
border: 2px solid #333;
|
|
border-radius: 8px;
|
|
padding: 0.6rem 1rem;
|
|
color: var(--texte);
|
|
font-size: 1rem;
|
|
outline: none;
|
|
}
|
|
|
|
.champ input:focus, .champ select:focus {
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
/* === Compteur accueil === */
|
|
.compteur-accueil {
|
|
position: absolute;
|
|
bottom: 2rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: rgba(0,0,0,0.4);
|
|
padding: 0.5rem 1.5rem;
|
|
border-radius: 2rem;
|
|
font-size: 1.1rem;
|
|
color: var(--texte-secondaire);
|
|
}
|
|
|
|
/* === Admin extras === */
|
|
.btn-petit {
|
|
padding: 0.4rem 1rem !important;
|
|
font-size: 0.85rem !important;
|
|
}
|
|
|
|
.champ-row {
|
|
display: flex;
|
|
gap: 1rem;
|
|
align-items: center;
|
|
}
|
|
|
|
.sous-config {
|
|
padding-left: 1.5rem;
|
|
border-left: 3px solid var(--primaire);
|
|
margin: 0.5rem 0;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 1.1rem;
|
|
font-weight: 600;
|
|
color: var(--primaire);
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.aide {
|
|
color: var(--texte-secondaire);
|
|
font-size: 0.85rem;
|
|
font-style: italic;
|
|
}
|
|
|
|
.statut-badge {
|
|
display: inline-block;
|
|
padding: 0.2rem 0.8rem;
|
|
border-radius: 1rem;
|
|
font-size: 0.85rem;
|
|
background: rgba(76, 175, 80, 0.2);
|
|
color: var(--succes);
|
|
}
|
|
|
|
/* Compteur display */
|
|
.compteur-display {
|
|
text-align: center;
|
|
padding: 1.5rem;
|
|
background: var(--fond);
|
|
border-radius: var(--rayon);
|
|
}
|
|
|
|
.compteur-gros {
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: center;
|
|
gap: 0.3rem;
|
|
}
|
|
|
|
.compteur-nombre {
|
|
font-size: 4rem;
|
|
font-weight: 700;
|
|
color: var(--primaire);
|
|
}
|
|
|
|
.compteur-nombre.petit {
|
|
font-size: 2rem;
|
|
color: var(--texte-secondaire);
|
|
}
|
|
|
|
.compteur-sep {
|
|
font-size: 2rem;
|
|
color: var(--texte-secondaire);
|
|
}
|
|
|
|
.compteur-label {
|
|
color: var(--texte-secondaire);
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
/* Radio buttons */
|
|
.radio-groupe {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.radio {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
cursor: pointer;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.radio input { display: none; }
|
|
|
|
.radio-mark {
|
|
width: 22px;
|
|
height: 22px;
|
|
border: 2px solid #555;
|
|
border-radius: 50%;
|
|
position: relative;
|
|
flex-shrink: 0;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.radio input:checked + .radio-mark {
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.radio input:checked + .radio-mark::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 4px; left: 4px;
|
|
width: 10px; height: 10px;
|
|
background: var(--primaire);
|
|
border-radius: 50%;
|
|
}
|
|
|
|
/* Liste fonds admin */
|
|
.liste-fonds {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.fond-item {
|
|
position: relative;
|
|
width: 120px;
|
|
height: 80px;
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
border: 2px solid #333;
|
|
}
|
|
|
|
.fond-item img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.fond-item .btn-supprimer {
|
|
position: absolute;
|
|
top: 2px; right: 2px;
|
|
background: rgba(0,0,0,0.6);
|
|
border: none;
|
|
color: var(--danger);
|
|
font-size: 1rem;
|
|
cursor: pointer;
|
|
border-radius: 50%;
|
|
width: 24px;
|
|
height: 24px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Liste cadres */
|
|
.liste-cadres {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.cadre-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
padding: 0.6rem 1rem;
|
|
background: var(--fond);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.cadre-item img {
|
|
width: 60px;
|
|
height: 40px;
|
|
object-fit: contain;
|
|
border-radius: 4px;
|
|
background: #fff;
|
|
}
|
|
|
|
/* --- Cadres impression --- */
|
|
.cadres-formats {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
gap: 1.2rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.cadres-format-bloc {
|
|
background: var(--fond);
|
|
border-radius: 10px;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.cadres-format-bloc h4 {
|
|
margin: 0 0 0.8rem;
|
|
font-size: 0.9rem;
|
|
color: var(--texte-secondaire);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.cadres-liste {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.4rem;
|
|
margin-bottom: 0.8rem;
|
|
}
|
|
|
|
.cadre-imp-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
padding: 0.5rem 0.7rem;
|
|
background: var(--fond-secondaire, #1a1a2e);
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.cadre-imp-item input[type="radio"] {
|
|
accent-color: var(--primaire);
|
|
width: 16px;
|
|
height: 16px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.cadre-imp-item .cadre-preview {
|
|
width: 48px;
|
|
height: 48px;
|
|
object-fit: contain;
|
|
border-radius: 4px;
|
|
background: #fff;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.cadre-imp-item span {
|
|
flex: 1;
|
|
font-size: 0.85rem;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.cadre-imp-item .btn-icone {
|
|
background: none;
|
|
border: none;
|
|
color: var(--danger);
|
|
cursor: pointer;
|
|
padding: 0.2rem 0.4rem;
|
|
border-radius: 4px;
|
|
font-size: 0.8rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.cadre-imp-item .btn-icone:hover {
|
|
background: rgba(244, 67, 54, 0.15);
|
|
}
|
|
|
|
.cadres-upload {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.cadres-upload .input-fichier {
|
|
flex: 1;
|
|
min-width: 0;
|
|
padding: 0.4rem;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
/* --- Fin cadres impression --- */
|
|
|
|
/* --- Choix cadre avant capture --- */
|
|
#ecran-cadre-choix {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 1.5rem;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.grille-cadres-choix {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 1.5rem;
|
|
justify-content: center;
|
|
overflow-y: auto;
|
|
max-height: 70vh;
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
.cadre-choix-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
border-radius: 14px;
|
|
border: 4px solid transparent;
|
|
background: transparent;
|
|
transition: border-color 0.15s, transform 0.15s;
|
|
width: 140px;
|
|
}
|
|
|
|
.cadre-choix-item:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.cadre-choix-item .cadre-thumb-wrap {
|
|
width: 140px;
|
|
height: 210px;
|
|
border-radius: 10px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
/* Fond neutre qui simule une photo derrière le cadre transparent */
|
|
background: linear-gradient(135deg, #5a5a6a 0%, #3a3a4a 100%);
|
|
}
|
|
|
|
.cadre-choix-item .cadre-thumb-wrap img {
|
|
/* Image agrandie 2.5x et centrée — les bordures deviennent bien visibles */
|
|
position: absolute;
|
|
width: 350px;
|
|
height: 525px;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
border-radius: 0;
|
|
display: block;
|
|
}
|
|
|
|
.cadre-choix-item span {
|
|
font-size: 0.85rem;
|
|
text-align: center;
|
|
color: var(--texte-secondaire);
|
|
}
|
|
|
|
.cadre-choix-aucun .cadre-choix-vide {
|
|
width: 140px;
|
|
height: 210px;
|
|
border-radius: 10px;
|
|
border: 3px dashed rgba(255,255,255,0.2);
|
|
background: rgba(255,255,255,0.04);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 2.5rem;
|
|
color: rgba(255,255,255,0.2);
|
|
}
|
|
|
|
.input-fichier {
|
|
background: var(--fond);
|
|
border: 2px dashed #444;
|
|
border-radius: 8px;
|
|
padding: 0.8rem;
|
|
color: var(--texte);
|
|
width: 100%;
|
|
}
|
|
|
|
/* Liste animations */
|
|
.liste-animations {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.anim-option {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
padding: 0.8rem 1rem;
|
|
background: var(--fond);
|
|
border: 2px solid transparent;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
transition: var(--transition);
|
|
}
|
|
|
|
.anim-option.actif {
|
|
border-color: var(--primaire);
|
|
background: rgba(233, 30, 99, 0.1);
|
|
}
|
|
|
|
.anim-option:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
.preview-animation-box {
|
|
width: 200px;
|
|
height: 200px;
|
|
background: rgba(0,0,0,0.6);
|
|
border-radius: var(--rayon);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 1rem 0;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.preview-anim-video {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
|
|
/* Overlay video plein ecran pendant capture */
|
|
.video-countdown-overlay {
|
|
position: fixed;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
background: #000;
|
|
z-index: 50;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.video-countdown-overlay video,
|
|
.video-countdown-overlay img {
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
|
|
/* Animation item avec checkbox */
|
|
.anim-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
padding: 0.6rem 1rem;
|
|
background: var(--fond);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.anim-item input[type="checkbox"] {
|
|
width: 20px;
|
|
height: 20px;
|
|
accent-color: var(--primaire);
|
|
}
|
|
|
|
.anim-item-preview {
|
|
width: 50px;
|
|
height: 50px;
|
|
border-radius: 6px;
|
|
object-fit: cover;
|
|
background: #000;
|
|
}
|
|
|
|
.anim-item .btn-supprimer {
|
|
margin-left: auto;
|
|
background: none;
|
|
border: none;
|
|
color: var(--danger);
|
|
font-size: 1.2rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.anim-chiffre {
|
|
font-size: 8rem;
|
|
font-weight: 700;
|
|
color: var(--primaire);
|
|
}
|
|
|
|
/* === Animations compte a rebours === */
|
|
/* Classique */
|
|
.anim-classique { animation: anim-pop 0.5s ease; }
|
|
|
|
/* Explosion */
|
|
.anim-explosion { animation: anim-explosion 0.6s ease; }
|
|
@keyframes anim-explosion {
|
|
0% { transform: scale(0); opacity: 0; }
|
|
50% { transform: scale(1.8); opacity: 1; }
|
|
70% { transform: scale(0.9); }
|
|
100% { transform: scale(1); opacity: 1; }
|
|
}
|
|
|
|
/* Rebond */
|
|
.anim-rebond { animation: anim-rebond 0.7s ease; }
|
|
@keyframes anim-rebond {
|
|
0% { transform: translateY(-200px) scale(0.5); opacity: 0; }
|
|
40% { transform: translateY(20px) scale(1.1); opacity: 1; }
|
|
60% { transform: translateY(-10px) scale(0.95); }
|
|
80% { transform: translateY(5px) scale(1.02); }
|
|
100% { transform: translateY(0) scale(1); }
|
|
}
|
|
|
|
/* Rotation 3D */
|
|
.anim-rotation { animation: anim-rotation 0.6s ease; perspective: 500px; }
|
|
@keyframes anim-rotation {
|
|
0% { transform: rotateY(90deg) scale(0.5); opacity: 0; }
|
|
60% { transform: rotateY(-10deg) scale(1.1); opacity: 1; }
|
|
100% { transform: rotateY(0deg) scale(1); }
|
|
}
|
|
|
|
/* Fondu */
|
|
.anim-fondu { animation: anim-fondu 0.8s ease; }
|
|
@keyframes anim-fondu {
|
|
0% { opacity: 0; transform: scale(2); filter: blur(20px); }
|
|
100% { opacity: 1; transform: scale(1); filter: blur(0); }
|
|
}
|
|
|
|
/* Emoji fun */
|
|
.anim-emoji { animation: anim-emoji 0.6s ease; }
|
|
@keyframes anim-emoji {
|
|
0% { transform: scale(0) rotate(-180deg); }
|
|
60% { transform: scale(1.3) rotate(10deg); }
|
|
100% { transform: scale(1) rotate(0); }
|
|
}
|
|
|
|
/* Shake */
|
|
.anim-shake { animation: anim-shake 0.6s ease; }
|
|
@keyframes anim-shake {
|
|
0% { transform: scale(0.3); opacity: 0; }
|
|
20% { transform: scale(1.1) rotate(-5deg); opacity: 1; }
|
|
40% { transform: scale(1) rotate(5deg); }
|
|
60% { transform: scale(1.05) rotate(-3deg); }
|
|
80% { transform: scale(1) rotate(2deg); }
|
|
100% { transform: scale(1) rotate(0); }
|
|
}
|
|
|
|
/* Pop (classique redefini) */
|
|
@keyframes anim-pop {
|
|
0% { transform: scale(0.3); opacity: 0; }
|
|
60% { transform: scale(1.2); }
|
|
100% { transform: scale(1); opacity: 1; }
|
|
}
|
|
|
|
/* Textes emoji pour le mode emoji */
|
|
.emoji-3::before { content: ""; }
|
|
.emoji-2::before { content: ""; }
|
|
.emoji-1::before { content: ""; }
|
|
|
|
/* === Utilitaires === */
|
|
.cache {
|
|
display: none !important;
|
|
}
|
|
|
|
.texte-secondaire {
|
|
color: var(--texte-secondaire);
|
|
}
|
|
|
|
/* Scrollbar tactile */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #444;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
/* === Erreur camera === */
|
|
.printer-erreur {
|
|
position: fixed;
|
|
bottom: 0; left: 0; right: 0;
|
|
background: #b71c1c;
|
|
color: #fff;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
padding: 0.8rem 1.5rem;
|
|
z-index: 9999;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.printer-erreur-icon { font-size: 1.4rem; flex-shrink: 0; }
|
|
|
|
.printer-erreur span:nth-child(2) { flex: 1; }
|
|
|
|
.printer-erreur button {
|
|
background: none; border: 2px solid rgba(255,255,255,0.5);
|
|
color: #fff; border-radius: 50%; width: 32px; height: 32px;
|
|
cursor: pointer; font-size: 1rem; flex-shrink: 0;
|
|
}
|
|
|
|
.camera-erreur {
|
|
position: fixed;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 100%;
|
|
background: rgba(0, 0, 0, 0.9);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 999;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.camera-erreur-icon {
|
|
font-size: 6rem;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.camera-erreur p {
|
|
font-size: 1.8rem;
|
|
font-weight: 600;
|
|
color: #fff;
|
|
text-align: center;
|
|
padding: 0 2rem;
|
|
}
|
|
|
|
.camera-erreur-sub {
|
|
font-size: 1.1rem;
|
|
color: #888;
|
|
animation: pulse 1.5s infinite;
|
|
}
|
|
|
|
/* === Clavier virtuel email === */
|
|
.clavier-virtuel {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
margin-top: 0.5rem;
|
|
max-width: 600px;
|
|
}
|
|
|
|
.clavier-ligne {
|
|
display: flex;
|
|
gap: 5px;
|
|
justify-content: center;
|
|
}
|
|
|
|
.clavier-ligne button {
|
|
min-width: 40px;
|
|
height: 44px;
|
|
border: none;
|
|
border-radius: 8px;
|
|
background: rgba(255,255,255,0.12);
|
|
color: var(--texte);
|
|
font-size: 1.1rem;
|
|
cursor: pointer;
|
|
flex: 1;
|
|
max-width: 52px;
|
|
}
|
|
|
|
.clavier-ligne button:active {
|
|
background: var(--primaire);
|
|
}
|
|
|
|
.clavier-wide {
|
|
min-width: 70px !important;
|
|
max-width: 120px !important;
|
|
font-size: 0.9rem !important;
|
|
}
|
|
|
|
.clavier-speciales {
|
|
gap: 8px;
|
|
}
|
|
|
|
/* === Wizard === */
|
|
.wizard-header {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 1rem 1.5rem;
|
|
z-index: 10;
|
|
}
|
|
|
|
.wizard-progress {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.wizard-dot {
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
background: rgba(255,255,255,0.2);
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.wizard-dot.actif {
|
|
background: var(--primaire);
|
|
transform: scale(1.3);
|
|
}
|
|
|
|
.wizard-dot.fait {
|
|
background: var(--succes);
|
|
}
|
|
|
|
.wizard-step {
|
|
display: none;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 2rem;
|
|
padding: 2rem;
|
|
width: 100%;
|
|
height: 100%;
|
|
animation: fadeIn 0.3s ease;
|
|
}
|
|
|
|
.wizard-step.actif {
|
|
display: flex;
|
|
}
|
|
|
|
.wizard-step h2 {
|
|
font-size: 2rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.wizard-input {
|
|
width: 80%;
|
|
max-width: 500px;
|
|
padding: 1.2rem 1.5rem;
|
|
font-size: 1.5rem;
|
|
border: 2px solid rgba(255,255,255,0.2);
|
|
border-radius: var(--rayon);
|
|
background: var(--fond-carte);
|
|
color: var(--texte);
|
|
text-align: center;
|
|
outline: none;
|
|
}
|
|
|
|
.wizard-input:focus {
|
|
border-color: var(--primaire);
|
|
}
|
|
|
|
.wizard-choix {
|
|
display: flex;
|
|
gap: 1.5rem;
|
|
flex-wrap: wrap;
|
|
justify-content: center;
|
|
}
|
|
|
|
.wizard-choix-wrap {
|
|
max-width: 600px;
|
|
}
|
|
|
|
.wizard-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
padding: 1.5rem 2rem;
|
|
border: 3px solid rgba(255,255,255,0.1);
|
|
border-radius: var(--rayon);
|
|
background: var(--fond-carte);
|
|
color: var(--texte);
|
|
cursor: pointer;
|
|
transition: 0.2s;
|
|
min-width: 140px;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.wizard-card:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.wizard-card.actif {
|
|
border-color: var(--primaire);
|
|
background: rgba(233, 30, 99, 0.15);
|
|
}
|
|
|
|
.wizard-card-icon {
|
|
font-size: 3rem;
|
|
width: 80px;
|
|
height: 80px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.wizard-nombre {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 2rem;
|
|
}
|
|
|
|
.wizard-nb-btn {
|
|
width: 80px;
|
|
height: 80px;
|
|
border-radius: 50%;
|
|
border: 3px solid var(--primaire);
|
|
background: transparent;
|
|
color: var(--primaire);
|
|
font-size: 2.5rem;
|
|
font-weight: bold;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.wizard-nb-btn:active {
|
|
background: var(--primaire);
|
|
color: #fff;
|
|
}
|
|
|
|
.wizard-nb-val {
|
|
font-size: 5rem;
|
|
font-weight: bold;
|
|
min-width: 80px;
|
|
text-align: center;
|
|
}
|
|
|
|
.wizard-btn-next {
|
|
padding: 1.2rem 3rem;
|
|
font-size: 1.3rem;
|
|
font-weight: 600;
|
|
border: none;
|
|
border-radius: var(--rayon);
|
|
background: var(--primaire);
|
|
color: #fff;
|
|
cursor: pointer;
|
|
min-width: 200px;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.wizard-btn-next:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.wizard-btn-go {
|
|
font-size: 1.5rem;
|
|
padding: 1.5rem 4rem;
|
|
background: var(--succes);
|
|
}
|
|
|
|
.wizard-resume {
|
|
background: var(--fond-carte);
|
|
border-radius: var(--rayon);
|
|
padding: 1.5rem 2rem;
|
|
font-size: 1.1rem;
|
|
line-height: 2;
|
|
text-align: left;
|
|
min-width: 300px;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; transform: translateY(20px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* Responsive tactile */
|
|
@media (max-width: 800px) {
|
|
.accueil-contenu h1 { font-size: 2.5rem; }
|
|
.grille-modes { flex-direction: column; gap: 1rem; }
|
|
.btn-mode { padding: 1.5rem 2rem; }
|
|
.grille-partage { flex-direction: column; gap: 1rem; }
|
|
.admin-contenu { flex-direction: column; }
|
|
.admin-onglets { flex-direction: row; min-width: unset; overflow-x: auto; }
|
|
}
|