:root {
    --bg-color: #0c0d0e;
    --ready-color: #2ecc71; /* Vert plus vif */
    --ready-bg: #2ecc71;
    --ready-shadow: #24a159;
    --prep-bg: #1a1c1e;
    --text-muted: #666e75;
}

/* HEADER - Navigation et Logo */
.call-displayer-header {
    font-family: 'Poppins', sans-serif;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 40px;
    background: #000;
    border-bottom: 2px solid #1a1a1a;
}

/* CONTENEUR PRINCIPAL */
.call-displayer {
    display: flex;
    height: calc(100vh - 80px);
    background-color: var(--bg-color); /* Harmonisé avec le reste */
    margin: 0;
    font-family: 'Poppins', sans-serif;
    color: white;
    overflow: hidden;
}

/* COLONNE GAUCHE (PRÊT) */
.ready-column {
    flex: 1.6; /* Un peu plus d'espace pour les commandes prêtes */
    padding: 40px;
    background-color: #000;
    border-right: 1px solid #1a1a1a;
}

/* COLONNE DROITE (EN COURS) */
.preparing-column {
    flex: 1;
    padding: 40px;
    background-color: var(--bg-color);
}

/* TITRES DES COLONNES */
.calldisplayer-title {
    text-transform: uppercase;
    letter-spacing: 3px;
    margin-bottom: 40px;
    font-weight: 800; /* Plus gras */
    font-size: 2.1rem;
    display: flex;
    align-items: center;
}

/* Petite puce de couleur devant le titre */
.calldisplayer-title::before {
    content: "";
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 15px;
}

.ready-column .calldisplayer-title {
    color: var(--ready-color);
}

.ready-column .calldisplayer-title::before {
    background-color: var(--ready-color);
}

.preparing-column .calldisplayer-title {
    color: var(--text-muted);
}

.preparing-column .calldisplayer-title::before {
    background-color: var(--text-muted);
}

/* GRILLES */
.grid {
    display: grid;
    gap: 20px;
    align-content: start;
}

.ready-grid {
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

.prep-grid {
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
}

/* CARTES DE NUMÉROS (COMMUN) */
.box-sale-calldisplayer {
    border-radius: 20px; /* Arrondi plus moderne */
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    transition: transform 0.2s ease;
}

/* STYLE PRÊT (FINISH) */
.box-sale-calldisplayer-finish {
    background-color: var(--ready-bg);
    height: 150px;
    box-shadow: 0 10px 0px var(--ready-shadow);
    margin-bottom: 10px; /* Espace pour l'ombre plate */
}

.box-sale-calldisplayer-finish .box-sale-calldisplayer-num {
    font-size: 5rem; /* Très gros pour la visibilité */
    color: #000;
    letter-spacing: -2px;
}

/* STYLE EN PRÉPARATION (INPROGRESS) */
.box-sale-calldisplayer-inprogress {
    background-color: var(--prep-bg);
    height: 85px;
    border: 1px solid #2d3136;
}

.box-sale-calldisplayer-inprogress .box-sale-calldisplayer-num {
    font-size: 2.2rem;
    color: #fff; /* Chiffres blancs plus lisibles que gris */
}

/* ANIMATION PULSE */
.box-sale-calldisplayer-finish:first-child {
    animation: pulse-soft 2s infinite ease-in-out;
}

@keyframes pulse-soft {
    0% {
        transform: translateY(0) scale(1);
    }
    50% {
        transform: translateY(-5px) scale(1.02);
    }
    100% {
        transform: translateY(0) scale(1);
    }
}

/* Petit badge "Nouveau" ou clignotement si besoin */
.blink {
    animation: blink 1s infinite;
}

@keyframes blink {
    50% {
        opacity: 0.5;
    }
}

/* Retire "BERNIER Regular" (police par défaut posée globalement par
   .body-content, matposcloud.css) pour les écrans caisse et écran de
   production (kitchen display) — demande utilisateur 2026-09-07,
   inchangé pour les autres écrans (borne/orderkiosk, online...).
   Nombreuses règles éparpillées (matposcloud.css/-900-1280/-1281,
   specific.css) fixent "BERNIER Regular" explicitement sur des éléments
   précis de .cashdrawer — plutôt que de corriger chaque occurrence, cette
   règle générique + !important, posée dans le dernier fichier CSS chargé
   (voir index.html, calldisplayer.css est le dernier <link>), gagne le
   cascade sur toutes ces occurrences quel que soit le fichier/sélecteur
   d'origine. .prod-displayer = classe posée par DisplayerPanel (écran
   production), .cashdrawer = classe posée par CashRegisterEntry (caisse).
*/
@font-face {
    font-family: "Inter";
    src: url("font/Inter-Variable.ttf");
    font-weight: 100 900;
}

.cashdrawer,
.prod-displayer {
    /* Poids par défaut hérité par tout ce qui ne fixe pas son propre
       font-weight — volontairement sans !important ni sélecteur `*` ici :
       les éléments qui déclarent déjà leur propre poids (ex. .price-box en
       800) doivent le garder, seul le comportement par défaut change. */
    font-weight: 600;
}

.cashdrawer,
.cashdrawer *,
.prod-displayer,
.prod-displayer * {
    font-family: "Inter", sans-serif !important;
}

/* Rollback partiel le 2026-09-07 (déploiement v1.1.32) : le sélecteur `*`
   ci-dessus écrasait aussi la police des icônes GWT Material
   (<i class="material-icons">, voir gwt-material's material-icons.css,
   font-family: 'Material Icons' — un jeu de ligatures texte->glyphe, pas
   une vraie police de texte) — toutes les icônes caisse/production
   s'affichaient en texte brut au lieu de leur pictogramme. Sélecteur plus
   spécifique que `.cashdrawer *`/`.prod-displayer *` (2 classes contre 1
   classe + universel), gagne le cascade sans dépendre de l'ordre. */
.cashdrawer .material-icons,
.prod-displayer .material-icons {
    font-family: "Material Icons" !important;
}

/* Même précaution pour Font Awesome (gwt-material-addins incubator,
   fontawesome-all.css) — pas confirmé utilisé sur ces deux écrans
   précisément, mais autant éviter une deuxième régression du même genre
   plutôt que de découvrir un jour qu'une icône FA y est cachée. */
.cashdrawer .fa,
.cashdrawer .fas,
.cashdrawer .far,
.prod-displayer .fa,
.prod-displayer .fas,
.prod-displayer .far {
    font-family: "Font Awesome 5 Free" !important;
}

.cashdrawer .fab,
.prod-displayer .fab {
    font-family: "Font Awesome 5 Brands" !important;
}

/* Retire "BERNIER Regular" pour les écrans borne (.orderkiosk, posé par
   OrderKioskPanel/PayLinkSalePanel/FollowUpSalePanel, et .borne, posé par
   CatalogPanel) — demande utilisateur 2026-09-13, même patron que le
   remplacement caisse/production ci-dessus (règle générique !important
   dans ce fichier, dernier chargé par index.html, pour gagner le cascade
   sur les BERNIER dispersés dans matposcloud*.css/specific.css sans corriger
   chaque occurrence). "Bagel Fat One" déjà présente dans ce repo
   (static/css/font/, ajoutée le 2026-09-07 pour un CssCustom client — voir
   CLAUDE.md, licence SIL OFL, usage commercial libre), réutilisée ici comme
   police par défaut. Exceptions Material Icons/Font Awesome reconduites
   pour éviter la même régression icônes que sur le changement précédent. */
@font-face {
    font-family: "Bagel Fat One";
    src: url("font/BagelFatOne-Regular.ttf");
}

.orderkiosk,
.orderkiosk *,
.borne,
.borne * {
    font-family: "Bagel Fat One", sans-serif !important;
}

.orderkiosk .material-icons,
.borne .material-icons {
    font-family: "Material Icons" !important;
}

.orderkiosk .fa,
.orderkiosk .fas,
.orderkiosk .far,
.borne .fa,
.borne .fas,
.borne .far {
    font-family: "Font Awesome 5 Free" !important;
}

.orderkiosk .fab,
.borne .fab {
    font-family: "Font Awesome 5 Brands" !important;
}