Initial commit

Created from https://vercel.com/new
This commit is contained in:
MrPatator230 committed 2026-03-19 15:46:03 +00:00
commit 3fcdf7e5ef
172 files changed
+52525

No files matched your search

@@ -0,0 +1,398 @@
/* Copié depuis ClassiquesDeparts.css — styles identiques pour les arrivées */
:where(.classiques-arrivees-container, .aff-quais__container--arrivees) {
/* variables locales aux composants Arrivées (ne pas définir sur :root) */
--green-dark: #2d522c; /* bande foncée */
--green: #38723c; /* bande claire */
--accent-yellow: #e1c14c; /* heure */
--white: #f3f3f3;
--rows: 9; /* 9 horaires visibles + 1 footer */
--footer-height: 100px; /* hauteur de la dernière 'ligne' servant de footer */
--watermark-green: rgb(75, 154, 84);
}
/* Déclaration des fontes Achemine (dans public/fonts/) */
@font-face {
font-family: 'Achemine';
src: url('/public/fonts/achemine_regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Achemine';
src: url('/public/fonts/achemine_bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Achemine';
src: url('/public/fonts/achemine_italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
font-display: swap;
}
.classiques-arrivees-container{
position: relative;
width: 100%;
height: 100vh;
/* autoriser l'affichage des boîtes agrandies qui débordent des lignes */
overflow: visible;
font-family: "Achemine", "Helvetica Neue", Arial, sans-serif;
background: var(--green-dark);
/* plus de padding-bottom : le footer sera superposé en position absolute */
}
.station-box-arrivees{
position: absolute;
left: 18px;
top: 12px;
color: #ffffff;
background: rgba(0,0,0,0.08);
padding: 6px 10px;
border-radius: 6px;
font-weight: 700;
z-index: 40;
}
.classiques-arrivees-container{
border-bottom-right-radius: 10px;
border-bottom-left-radius: 4px;
}
.arrivees-list{
list-style: none;
margin: 0;
padding: 0;
/* La liste occupe toute la hauteur de l'écran; le footer sera affiché
en position absolue par-dessus la partie inférieure. */
height: 100vh;
display: flex;
flex-direction: column;
}
.arrivee-row{
display: flex;
/* laisser les colonnes occuper toute la hauteur de la ligne, puis centrer leur contenu */
align-items: stretch;
box-sizing: border-box;
padding: 0 1.2vw;
/* Répartit l'espace en var(--rows) parts ; on utilise 100% / var(--rows) pour que
9 lignes + 1 footer occupent l'écran de façon uniforme. */
flex: 0 0 calc(100% / var(--rows));
min-height: 50px; /* garde une bonne hauteur sur petits écrans */
max-height: 120px;
position: relative; /* pour positionner la .platform-box en absolu */
overflow: visible; /* laisser la platform-box déborder si agrandie */
}
.arrivee-row:nth-child(odd){
background: var(--green);
}
.arrivee-row:nth-child(even){
background: var(--green-dark);
}
/* Cacher la dernière ligne qui sera sous le footer */
/* ne plus cacher la dernière ligne — on laisse le footer la recouvrir visuellement */
.col-logo-arrivees{
max-width: 100px;
display:flex;
/* organiser verticalement les éléments et les centrer verticalement */
flex-direction: column;
justify-content: center; /* centre verticalement le contenu (logo + meta) */
align-items: flex-start; /* garder l'alignement horizontal à gauche */
flex: 0 0 10%; /* largeur fixe pour se comporter comme une colonne de tableau */
}
.logo-box-arrivees{
/* pastille/logo : ne pas forcer la hauteur pour permettre l'empilement vertical */
height: auto;
width: 100px;
display:flex;
align-items:flex-start;
justify-content:center;
font-weight:800;
font-size: clamp(14px, 1.6vw, 20px);
box-sizing: border-box;
flex: 0 0 auto;
align-self: flex-start; /* centrer la pastille dans la colonne */
}
/* Logo SVG chargé depuis public/type */
.op-logo-arrivees{
max-width: 90%;
max-height: 100%;
height: auto;
}
/* Texte à l'intérieur de la pastille/logo (quai) */
.logo-text-arrivees{
text-align: center;
/* taille plus grande, responsive ; s'assure qu'elle reste lisible sur petits et grands écrans */
font-size: 20px;
line-height: 1;
letter-spacing: 0.5px;
}
.col-time-arrivees{
max-width: 15%;
padding-left: 20px;
display:flex;
/* colonne verticale : centrer verticalement l'heure */
flex-direction: column;
align-items: center;
justify-content: center;
flex: 0 0 18%; /* largeur fixe pour alignement table-like */
}
.time-arrivees{
color: var(--accent-yellow);
font-weight:850;
/* tailles responsives similaires à l'image */
font-size: clamp(26px, 7.5vw, 70px);
line-height: 1;
display: flex;
align-items: baseline; /* centre le chiffre verticalement */
height: auto;
width: 100%; /* occupe toute la colonne pour être centré */
text-align: center;
}
.col-destination-arrivees{
flex: 1 1 auto; /* colonne flexible qui prend l'espace restant */
display: flex;
/* colonne verticale : centrer verticalement la destination */
flex-direction: column;
justify-content: center;
align-items: flex-start; /* garder le texte aligné à gauche */
}
.destination-arrivees{
color: var(--white);
font-weight: 500;
font-size: clamp(28px, 8vw, 80px);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.col-platform-arrivees{
/* La colonne laisse la boîte gérer sa taille ; on aligne la boîte à droite
et l'on centre verticalement pour qu'elle suive la hauteur de la ligne. */
display:flex;
flex: 0 0 8%;
align-items: center;
justify-content: flex-end;
padding-right: 0.5vw;
box-sizing: border-box;
}
.platform-box-arrivees{
/* Boîte quai : garder un format carré mais ne pas forcer l'étirement vertical */
height: 90px; /* limite maximale, garde l'aspect visuel */
width: 90px;
aspect-ratio: 1 / 1; /* carré strict */
display:flex;
align-items:center;
justify-content:center;
background: transparent; /* intérieur transparent pour montrer la couleur de la ligne */
border-radius: 12px;
box-sizing: border-box;
border: 4px solid #ffffff; /* bord blanc épais */
padding: 8px; /* espace intérieur pour éloigner le texte du bord */
flex: 0 0 auto;
align-self: center;
}
.platform-text-arrivees{
color: #ffffff;
font-weight: 900;
/* réduire légèrement la taille du texte afin qu'il ne touche pas la bordure */
font-size: clamp(60px, 2.6vw, 100px);
line-height:1;
letter-spacing: 0.8px;
}
/* removed duplicated/corrupted block */
.col-train-type-arrivees{
max-width: 9%;
display:flex;
/* colonne verticale : centrer verticalement l'heure */
flex-direction: column;
align-items: stretch;
justify-content: center;
flex: 0 0 18%; /* largeur fixe pour alignement table-like */
}
.train-type-box-arrivees{
height: auto;
aspect-ratio: 1 / 1;
display:flex;
align-items:center;
justify-content:center;
background: transparent;
border-radius: 10px;
box-sizing: border-box;
}
.train-type-fallback-arrivees{ text-align:center; }
.train-meta-arrivees{
flex-direction:column;
align-items:flex-start;
/* centrer verticalement sans forcer la hauteur (pour permettre l'empilement) */
justify-content: center;
color: #ffffff;
height: auto;
flex: 0 0 auto;
}
.train-meta-arrivees .op-name-arrivees{
font-weight:900;
font-size:1.50rem; /* plus visible */
padding-left: 20px;
line-height:1;
justify-content: flex-start;
text-align: left; /* aligner à gauche dans la colonne */
}
.train-meta-arrivees .op-number-arrivees{
font-weight:500;
font-size:1.25rem;
padding-left: 20px;
text-align: left; /* aligner à gauche */
margin: 0 0 2px 0;
}
.train-meta-arrivees.status-delayed-arrivees .op-name-arrivees,
.train-meta-arrivees.status-delayed-arrivees .op-number-arrivees,
.train-meta-arrivees.status-suppressed-arrivees .op-name-arrivees,
.train-meta-arrivees.status-suppressed-arrivees .op-number-arrivees{
color: var(--accent-yellow);
}
/* Si on veut un alignement plus spécifique quand train-meta apparaît dans la colonne de type */
.col-train-type-arrivees .train-meta-arrivees{ align-items: flex-start; justify-content: center; }
.col-train-type-arrivees .train-meta-arrivees .op-name-arrivees,
.col-train-type-arrivees .train-meta-arrivees .op-number-arrivees{ text-align: left; }
.watermark-arrivees{
position: absolute;
/* placer strictement à droite et faire déborder le watermark en dehors de l'afficheur */
right: -6vw; /* décalage vers l'extérieur pour qu'il soit strictement à droite */
top: 50%;
transform: translateY(-50%) rotate(-90deg);
transform-origin: center;
font-size: 10.8vw;
color: var(--watermark-green);
font-weight:800;
letter-spacing: 6px;
pointer-events: none;
user-select: none;
/* s'assurer qu'il soit au-dessus des lignes */
z-index: 45;
}
.helpline-arrivees{
position: absolute;
right: 18px;
top: 12px;
width:80px;
height:80px;
border-radius:6px;
border:3px solid #fff;
color:#fff;
display:flex;
align-items:center;
justify-content:center;
font-weight:900;
}
.clock-container-arrivees{
position: relative; /* contenu positionné par le footer */
pointer-events: none;
z-index: 30; /* au-dessus du footer */
display: inline-flex;
align-items: center;
height: 100%; /* prendra la hauteur de la ligne footer */
}
.clock-box-arrivees{
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--green-dark); /* fond foncé interne comme sur la maquette */
border-radius: 10px;
padding: 4px 8px; /* réduire padding pour diminuer légèrement la taille globale */
border: 6px solid #ffffff; /* bordure un peu moins épaisse */
box-shadow: 0 2px 0 rgba(0,0,0,0.12);
box-sizing: border-box;
overflow: hidden;
/* hauteur adaptée pour rentrer exactement dans la ligne footer */
height: calc(var(--footer-height) - 12px);
min-height: 34px;
}
.afficheur-footer-arrivees{
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: var(--footer-height);
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
z-index: 20; /* en dessous de l'horloge */
}
.afficheur-footer-arrivees .footer-inner-arrivees{
width: 100%;
height: 100%;
position: relative;
display: flex;
align-items: center; /* centre verticalement le contenu (la clock) */
justify-content: flex-end; /* place la clock à droite */
padding-right: 12px; /* espace entre le bord et la clock pour le coin arrondi */
/* léger dégradé pour donner l'effet de bande plus claire en haut */
background: linear-gradient(to bottom, rgba(11,123,180,0.18) 0%, var(--green-dark) 30%);
box-shadow: inset 0 6px 0 rgba(0,0,0,0.08);
/* arrondir côté droit comme sur la maquette */
}
/* légère ligne (accent) en haut du footer pour séparer visuellement */
.afficheur-footer-arrivees .footer-inner-arrivees::before{
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
height: 8px;
background: rgba(255,255,255,0.03);
pointer-events: none;
border-top-right-radius: 12px;
}
.clock-main-arrivees{
color: #ffffff;
font-weight: 800;
/* légèrement plus petit pour tenir dans le footer */
font-size: clamp(28px, 4.2vw, 60px);
line-height: 1;
font-family: "Achemine", "Helvetica Neue", Arial, sans-serif;
margin-right: 6px;
}
.clock-seconds-arrivees{
color: var(--accent-yellow);
font-weight: 800;
font-size: clamp(16px, 2.8vw, 36px);
line-height: 1;
}
/* Ajustements pour petits écrans */
@media (max-width: 700px){
.col-logo-arrivees{width: 18%;}
.col-time-arrivees{width: 24%;}
.watermark-arrivees{display:none}
}