/* ============================================================================
   FOND NUCLÉAIRE — Feuille de style du décor

   FOND « CENTRALE NUCLÉAIRE » — Décor animé et interactif

   Le dernier arrière-plan de la liste des paramètres n'est pas un motif CSS
   comme les neuf autres, mais une scène complète, dessinée à la main et
   pilotée image par image.

   CE QUE L'ON VOIT
   ----------------
     • un ciel nocturne et son semis d'étoiles ;
     • une centrale à eau pressurisée en silhouette : deux tours
       aéroréfrigérantes hyperboloïdes, un bâtiment réacteur à dôme, la salle
       des machines et un pylône de départ de ligne ;
     • le panache des tours — de la vapeur d'eau, et rien d'autre ;
     • la lueur bleue de l'effet Tcherenkov autour du bâtiment réacteur ;
     • des noyaux d'uranium et des neutrons libres, sur un canvas ;
     • un tableau de bord discret : puissance, facteur de multiplication k,
       nombre de neutrons libres, et le seul argument qui met tout le monde
       d'accord — zéro gramme de dioxyde de carbone.

   CE QUE L'ON PEUT FAIRE
   ----------------------
   Un clic dans la zone de travail injecte des neutrons. S'ils rencontrent un
   noyau, ils le fissionnent : deux fragments partent dos à dos, deux ou trois
   neutrons sont libérés, et la réaction en chaîne s'entretient. Les barres de
   contrôle en absorbent une partie — c'est très exactement leur rôle dans un
   réacteur, et c'est aussi ce qui garantit que l'animation ne dévore jamais
   le processeur.

   Le décor cache par ailleurs sept curiosités, toutes soumises à
   l'interrupteur « messages surprises » de la page Paramètres. Elles se
   déclenchent au clavier ou en cliquant certains bâtiments. Rien ne clignote
   sans raison, rien ne s'impose : ce sont des trouvailles, pas des
   notifications.

   PRINCIPES DE MISE EN ŒUVRE
   --------------------------
   Aucune ressource externe, fidèle à la règle du site : la centrale est un
   SVG écrit à la main, le ciel et la vapeur sont du CSS, la physique tient
   dans un canvas. Rien n'est téléchargé.

   Le décor n'existe dans la page que lorsqu'il est choisi : sélectionner un
   autre arrière-plan démonte l'ensemble — plus un élément, plus un écouteur,
   plus une seule image par seconde consommée. L'animation se met en pause dès
   que l'onglet passe en arrière-plan.

   La couche entière est en pointer-events: none et n'intercepte jamais un
   clic. Si les animations sont désactivées, ou si le système demande de
   réduire les animations, la scène est rendue en une image fixe : le décor
   reste, le mouvement disparaît.

   Auteur : Émile SNYERS
   Version : 15.3
   Licence : © Tous droits réservés
   Utilisation à but non commercial autorisé .
   Non-commercial use permitted.
  // 🌍 Vous êtes autorisé à utiliser ce code, modifié ou non modifié, gratuitement et sans demande préalable, sous les conditions suivantes :  
  //  
  // 🇫🇷 Français :  
  // - Pour les entreprises ou associations opérant dans le secteur du nucléaire, l'utilisation est libre et sans aucune restriction.  
  // - Pour les entreprises ou associations exerçant en dehors du secteur du nucléaire, l'utilisation est permise uniquement dans un cadre non lucratif.  
  //  
  // 🇬🇧 English:  
  // - You are allowed to use this code, modified or unmodified, for free and without prior request, under the following conditions:  
  // - For companies or organizations operating in the nuclear sector, usage is free and without any restrictions.  
  // - For companies or organizations outside the nuclear sector, usage is allowed only in a non-profit context.  
  //  
  // 🇪🇸 Español:  
  // - Se le permite utilizar este código, modificado o no modificado, de forma gratuita y sin solicitud previa, bajo las siguientes condiciones:  
  // - Para empresas u organizaciones que operan en el sector nuclear, el uso es libre y sin restricciones.  
  // - Para empresas u organizaciones fuera del sector nuclear, el uso está permitido solo en un contexto sin fines de lucro.  
  //  
  // 🇩🇪 Deutsch:  
  // - Sie dürfen diesen Code, verändert oder unverändert, kostenlos und ohne vorherige Anfrage unter den folgenden Bedingungen verwenden:  
  // - Für Unternehmen oder Organisationen im Nuklearsektor ist die Nutzung kostenlos und uneingeschränkt.  
  // - Für Unternehmen oder Organisationen außerhalb des Nuklearsektors ist die Nutzung nur im gemeinnützigen Rahmen erlaubt.  
  //  
  // 🇮🇹 Italiano:  
  // - È consentito utilizzare questo codice, modificato o non modificato, gratuitamente e senza previa richiesta, alle seguenti condizioni:  
  // - Per le aziende o associazioni che operano nel settore nucleare, l'uso è gratuito e senza restrizioni.  
  // - Per le aziende o associazioni al di fuori del settore nucleare, l'uso è consentito solo in un contesto non profit.  
  //  
  // 🇷🇺 Русский:  
  // - Вам разрешено использовать этот код, измененный или неизмененный, бесплатно и без предварительного запроса на следующих условиях:  
  // - Для компаний или организаций, работающих в ядерной отрасли, использование бесплатно и без ограничений.  
  // - Для компаний или организаций за пределами ядерной отрасли использование разрешено только в некоммерческом контексте.  
  //  
  // 🇨🇳 中文:  
  // - 您可以在以下条件下免费使用此代码，无论是否经过修改，无需事先请求：  
  // - 对于在核能领域运营的企业或组织，可免费且无限制地使用。  
  // - 对于非核能领域的企业或组织，仅允许在非营利背景下使用。  
  //  
  // 🇯🇵 日本語:  
  // - 本コードを修正済みまたは未修正の状態で、以下の条件に基づき、事前の要請なしに無料で使用することが許可されています：  
  // - 原子力分野で活動する企業や団体は、自由かつ無制限に使用できます。  
  // - 原子力分野以外の企業や団体は、非営利目的の場合のみ使用が許可されます。  
  //  
  // 🇰🇷 한국어:  
  // - 이 코드를 수정하거나 수정하지 않은 상태로 다음 조건에 따라 사전 요청 없이 무료로 사용할 수 있습니다:  
  // - 핵 분야에서 활동하는 기업이나 단체는 무료로 제한 없이 사용할 수 있습니다.  
  // - 핵 분야 이외의 기업이나 단체는 비영리 목적으로만 사용이 허용됩니다.  
  //  
  // 🇧🇷 Português:  
  // - Você está autorizado a usar este código, modificado ou não modificado, gratuitamente e sem solicitação prévia, sob as seguintes condições:  
  // - Para empresas ou organizações que operam no setor nuclear, o uso é gratuito e sem restrições.  
  // - Para empresas ou organizações fora do setor nuclear, o uso é permitido apenas em um contexto sem fins lucrativos.  
  //  
  // 🇦🇪 العربية:  
  // - يُسمح لك باستخدام هذا الرمز، سواء كان معدلاً أو غير معدل، مجانًا وبدون طلب مسبق، بموجب الشروط التالية:  
  // - يُسمح للشركات أو الجمعيات العاملة في قطاع الطاقة النووية بالاستخدام مجانًا وبدون أي قيود.  
  // - يُسمح للشركات أو الجمعيات خارج قطاع الطاقة النووية بالاستخدام فقط في إطار غير ربحي.  
============================================================================ */

/* ============================================================================
   1. LA COUCHE
   ============================================================================
   Le décor est posé en position fixe derrière toute l'application. Il ne
   défile pas avec la zone de travail : c'est un horizon, pas un papier peint.

   Il n'intercepte jamais un clic — pointer-events: none sans exception. Sa
   visibilité est réglée par le voile posé sur la zone de travail, dont
   l'opacité est l'inverse du curseur « niveau du fond » des paramètres.
   ========================================================================= */

.nuc-scene {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  --nuc-teinte: #4cc9f0;
  --nuc-bleu: #7df9ff;
  --nuc-vert: #6cf05a;
  contain: layout paint style;
}

/* L'application passe au-dessus du décor. Le menu, la barre supérieure et le
   panneau de propriétés gardent leur fond opaque : ils restent parfaitement
   lisibles, ce qui est la moindre des choses sur un outil de contraste.

   La zone de travail, elle, reçoit un voile de la couleur du thème dont
   l'opacité est l'inverse du « niveau du fond » : à 0 % elle est opaque et la
   scène est invisible, à 100 % elle est transparente et la scène apparaît
   telle qu'elle a été peinte. C'est ce voile qui règle la visibilité, et non
   l'opacité de la scène — sinon la nuit, diluée dans un fond clair, virerait
   au gris sale au lieu de rester une nuit. La règle elle-même est écrite par
   settings.js, qui seul connaît la couleur du thème en cours. */
body.nuc-actif .app-container { position: relative; z-index: 1; }

/* Le tableau de bord et les messages passent AU-DESSUS du contenu : posés
   derrière, le premier panneau venu les masquerait. Comme la scène, cette
   couche n'intercepte jamais un clic. */
.nuc-avant {
  position: fixed;
  inset: 0;
  z-index: 1900;
  pointer-events: none;
  overflow: hidden;
  --nuc-teinte: #4cc9f0;
  --nuc-bleu: #7df9ff;
}

/* ============================================================================
   2. LE CIEL
   ============================================================================
   Un dégradé nocturne teinté par la couleur choisie dans les paramètres, et
   un semis d'étoiles obtenu par trois trames de points superposées : aucune
   image, aucune requête réseau.
   ========================================================================= */

.nuc-ciel {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(120% 78% at 50% 108%, #12313a 0%, transparent 62%),
    linear-gradient(to bottom, #050a12 0%, #08131d 44%, #0b1c22 78%, #0d2420 100%);
  background:
    radial-gradient(120% 78% at 50% 108%,
      color-mix(in srgb, var(--nuc-teinte) 42%, #071018) 0%,
      transparent 62%),
    linear-gradient(to bottom, #050a12 0%, #08131d 44%, #0b1c22 78%, #0d2420 100%);
}

.nuc-etoiles {
  position: absolute;
  inset: 0 0 34% 0;
  background-image:
    radial-gradient(1.2px 1.2px at 12% 18%, rgba(255,255,255,.75) 50%, transparent 51%),
    radial-gradient(1px 1px at 63% 9%, rgba(255,255,255,.55) 50%, transparent 51%),
    radial-gradient(1.4px 1.4px at 82% 27%, rgba(255,255,255,.7) 50%, transparent 51%),
    radial-gradient(1px 1px at 34% 42%, rgba(255,255,255,.45) 50%, transparent 51%),
    radial-gradient(1.1px 1.1px at 91% 55%, rgba(255,255,255,.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 45% 66%, rgba(255,255,255,.35) 50%, transparent 51%);
  background-size: 340px 300px, 420px 380px, 500px 460px, 380px 340px, 560px 520px, 460px 420px;
  animation: nuc-scintille 9s ease-in-out infinite alternate;
}

@keyframes nuc-scintille {
  from { opacity: .55; }
  to   { opacity: 1; }
}

/* ============================================================================
   3. LE CANVAS
   ============================================================================
   Noyaux, neutrons et éclats de fission. Le canvas couvre tout l'écran mais
   la physique confine les particules au-dessus de la ligne d'horizon.
   ========================================================================= */

.nuc-canvas {
  position: absolute;
  inset: 0;
  display: block;
}

/* ============================================================================
   4. L'HORIZON : LA CENTRALE
   ============================================================================
   Une silhouette de centrale à eau pressurisée, ancrée en bas de l'écran et
   dimensionnée en fonction de la largeur pour rester juste sur mobile.
   ========================================================================= */

.nuc-horizon {
  position: absolute;
  left: 50%;
  bottom: 0;
  width: min(1100px, 96vw);
  height: min(340px, 42vh);
  transform: translateX(-50%);
}

.nuc-centrale {
  position: absolute;
  inset: auto 0 0 0;
  width: 100%;
  height: 100%;
  display: block;
}

/* La silhouette doit rester lisible à travers le voile de la zone de travail
   et les cartes translucides : ses contours sont donc lumineux, et non un
   simple aplat noir sur ciel noir. C'est ce halo qui la fait exister. */
.nuc-centrale { filter: drop-shadow(0 0 6px rgba(125, 249, 255, .28)); }

/* Chaque couleur calculée par color-mix() est précédée d'une valeur simple :
   si un navigateur ne connaît pas la fonction, il garde la ligne précédente et
   la scène reste correcte. C'est le principe même de l'amélioration
   progressive, et cela ne coûte qu'une ligne. */
.nuc-tour {
  fill: #0a1a1c;
  stroke: #4d8a96;
  stroke: color-mix(in srgb, var(--nuc-teinte) 72%, #4d8a96);
  stroke-width: 1.7;
}

.nuc-tA { fill: #0b1c1f; }
.nuc-tB { fill: #091619; }

.nuc-tour-couronne {
  fill: #3d6b74;
  fill: color-mix(in srgb, var(--nuc-teinte) 60%, #3d6b74);
  opacity: .8;
}

.nuc-bati {
  fill: #0a181b;
  stroke: #4d8a96;
  stroke: color-mix(in srgb, var(--nuc-teinte) 68%, #4d8a96);
  stroke-width: 1.5;
}

.nuc-bati-clair {
  fill: #ffd88a;
  opacity: .55;
  animation: nuc-fenetre 6s steps(1) infinite;
}

.nuc-f2 { animation-delay: 1.5s; }
.nuc-f3 { animation-delay: 3s; }
.nuc-f4 { animation-delay: 4.5s; }

@keyframes nuc-fenetre {
  0%, 70% { opacity: .55; }
  71%, 100% { opacity: .18; }
}

.nuc-dome {
  fill: #0c2126;
  stroke: #4d8a96;
  stroke: color-mix(in srgb, var(--nuc-bleu) 70%, #4d8a96);
  stroke-width: 1.7;
}

/* La balise de sommet du bâtiment réacteur : un clignotant rouge, comme sur
   toute structure haute. Discret, lent, jamais agressif. */
.nuc-dome-oeil {
  fill: #ff4d4d;
  animation: nuc-balise 3.4s ease-in-out infinite;
}

@keyframes nuc-balise {
  0%, 78%, 100% { opacity: .25; }
  84%, 92%      { opacity: 1; }
}

.nuc-pylone path {
  fill: none;
  stroke: #4d8a96;
  stroke: color-mix(in srgb, var(--nuc-teinte) 62%, #4d8a96);
  stroke-width: 1.8;
  stroke-linecap: round;
}

.nuc-ligne {
  fill: none;
  stroke: #24414a;
  stroke: color-mix(in srgb, var(--nuc-teinte) 35%, #24414a);
  stroke-width: 1;
  opacity: .7;
}

.nuc-sol {
  stroke: #2b4a52;
  stroke: color-mix(in srgb, var(--nuc-teinte) 40%, #2b4a52);
  stroke-width: 1.6;
  opacity: .85;
}

/* ============================================================================
   5. LE PANACHE DE VAPEUR
   ============================================================================
   Ce qui sort des tours aéroréfrigérantes est de la vapeur d'eau condensée,
   et rien d'autre. Dix bouffées, cinq trajectoires, des retards décalés :
   assez pour que l'œil ne repère jamais la boucle.
   ========================================================================= */

.nuc-vapeurs {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.nuc-vapeur {
  position: absolute;
  width: 12%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 42% 58%,
    rgba(255,255,255,.30) 0%, rgba(226,244,255,.16) 46%, rgba(226,244,255,0) 72%);
  filter: blur(6px);
  opacity: 0;
  animation: nuc-monte 13s linear infinite;
}

/* Les deux tours n'ont pas la même hauteur : leurs panaches partent de deux
   points différents, sans quoi la scène perdrait toute crédibilité. */
.nuc-tourA { left: 20.5%; bottom: 52%; }
.nuc-tourB { left: 45.5%; bottom: 44%; }

.nuc-v0 { animation-delay: 0s;    animation-duration: 13s; }
.nuc-v1 { animation-delay: 2.6s;  animation-duration: 15s; }
.nuc-v2 { animation-delay: 5.2s;  animation-duration: 12s; }
.nuc-v3 { animation-delay: 7.8s;  animation-duration: 16s; }
.nuc-v4 { animation-delay: 10.4s; animation-duration: 14s; }

@keyframes nuc-monte {
  0%   { transform: translate(0, 0) scale(.45); opacity: 0; }
  12%  { opacity: .85; }
  60%  { opacity: .55; }
  100% { transform: translate(46px, -230px) scale(2.6); opacity: 0; }
}

/* Un clic sur une tour donne un coup de souffle au panache. */
body.nuc-souffle .nuc-vapeur { animation-duration: 5s !important; }

/* ============================================================================
   6. LA LUEUR TCHERENKOV
   ============================================================================
   Le bleu profond de la piscine du réacteur. Une respiration lente de huit
   secondes, jamais un clignotement : on cherche l'ambiance, pas l'alarme.
   ========================================================================= */

.nuc-cerenkov {
  position: absolute;
  left: 60%;
  bottom: 2%;
  width: 30%;
  height: 46%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 80%,
    rgba(125,249,255,.55) 0%,
    rgba(80,190,255,.28) 34%,
    rgba(60,140,255,.10) 58%,
    transparent 76%);
  filter: blur(10px);
  animation: nuc-respire 8s ease-in-out infinite;
}

@keyframes nuc-respire {
  0%, 100% { opacity: .55; transform: translateX(-50%) scale(1); }
  50%      { opacity: 1;   transform: translateX(-50%) scale(1.12); }
}

/* Clic sur le dôme : un flash bleu bref, puis retour au calme. */
body.nuc-flash .nuc-cerenkov {
  animation: nuc-tcherenkov 1.6s ease-out;
}

@keyframes nuc-tcherenkov {
  0%   { opacity: 1; transform: translateX(-50%) scale(2.2); filter: blur(4px) brightness(2.4); }
  100% { opacity: .55; transform: translateX(-50%) scale(1); filter: blur(10px) brightness(1); }
}

/* Arrêt d'urgence : la lueur s'éteint, la scène refroidit. */
body.nuc-scram .nuc-cerenkov { opacity: .08; transition: opacity 1.2s ease; }
body.nuc-scram .nuc-hud { border-color: #ff6b6b; }
body.nuc-scram .nuc-hud-titre { color: #ff8f8f; }

/* Hommage à Marie Curie : le vert pâle du radium, quelques secondes. */
body.nuc-radium .nuc-cerenkov {
  background: radial-gradient(ellipse at 50% 80%,
    rgba(150,255,140,.55) 0%, rgba(110,230,120,.26) 36%, transparent 74%);
}

/* Mode surrégénérateur, débloqué à cent fissions : le cœur passe à l'or. */
body.nuc-or .nuc-cerenkov {
  background: radial-gradient(ellipse at 50% 80%,
    rgba(255,206,110,.55) 0%, rgba(255,170,60,.26) 36%, transparent 74%);
}

body.nuc-or .nuc-hud { border-color: rgba(255,196,64,.6); }

/* ============================================================================
   7. LE TABLEAU DE BORD
   ============================================================================
   Quatre chiffres et une pointe d'humour, en bas à droite, minuscules. La
   puissance, le facteur de multiplication k, le nombre de neutrons libres —
   et un rappel du seul argument qui met tout le monde d'accord.
   ========================================================================= */

.nuc-hud {
  position: absolute;
  right: 14px;
  bottom: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  align-items: baseline;
  padding: 6px 12px;
  border: 1px solid rgba(125,249,255,.32);
  border-radius: 8px;
  background: rgba(4, 14, 20, .55);
  font-family: 'Consolas', 'SF Mono', 'Menlo', monospace;
  font-size: 8.5pt;
  letter-spacing: .04em;
  color: rgba(190, 240, 255, .85);
  transition: border-color .5s ease;
}

.nuc-hud-titre { color: var(--nuc-bleu); font-weight: 700; }
.nuc-hud-val { font-variant-numeric: tabular-nums; }
.nuc-hud-co2 { color: rgba(140, 240, 150, .9); }

/* ============================================================================
   8. LES BULLES DE CURIOSITÉ
   ============================================================================
   Elles apparaissent en bas à gauche, restent quelques secondes et s'en vont
   d'elles-mêmes. Aucune n'attend un clic, aucune ne bloque quoi que ce soit,
   et l'interrupteur « messages surprises » des paramètres les supprime toutes.
   ========================================================================= */

.nuc-bulles {
  position: absolute;
  left: 16px;
  bottom: 14px;
  display: flex;
  flex-direction: column-reverse;
  gap: 8px;
  max-width: min(430px, 62vw);
}

.nuc-bulle {
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid rgba(125,249,255,.30);
  border-left: 3px solid var(--nuc-bleu);
  background: rgba(5, 17, 24, .88);
  color: #d6f3ff;
  font-size: 9.5pt;
  line-height: 1.5;
  box-shadow: 0 4px 18px rgba(0,0,0,.45);
  animation: nuc-entre .45s cubic-bezier(.22,1,.36,1);
}

.nuc-bulle strong { color: var(--nuc-bleu); }
.nuc-bulle-alerte { border-left-color: #ff6b6b; }
.nuc-bulle-alerte strong { color: #ff9d9d; }
.nuc-bulle-curie { border-left-color: #8dff8d; }
.nuc-bulle-curie strong { color: #a8ffa8; }
.nuc-bulle-bleue { border-left-color: #7db8ff; }
.nuc-bulle-or { border-left-color: #ffc440; }
.nuc-bulle-or strong { color: #ffd97a; }

.nuc-sort { animation: nuc-part .55s ease forwards; }

@keyframes nuc-entre {
  from { opacity: 0; transform: translateY(14px) scale(.96); }
  to   { opacity: 1; transform: none; }
}

@keyframes nuc-part {
  to { opacity: 0; transform: translateX(-24px); }
}

/* ============================================================================
   9. L'OVNI
   ============================================================================
   Il traverse le ciel de droite à gauche, en neuf secondes, une seule fois.
   La commission d'enquête a conclu à une baguette tradition.
   ========================================================================= */

.nuc-ovni {
  position: absolute;
  top: 16%;
  right: -8%;
  font-size: clamp(28px, 4vw, 52px);
  filter: drop-shadow(0 0 14px rgba(255, 214, 120, .75));
  animation: nuc-traverse 9s linear forwards;
}

@keyframes nuc-traverse {
  0%   { transform: translate(0, 0) rotate(-8deg); opacity: 0; }
  10%  { opacity: 1; }
  50%  { transform: translate(-52vw, 5vh) rotate(6deg); }
  90%  { opacity: 1; }
  100% { transform: translate(-116vw, -2vh) rotate(-4deg); opacity: 0; }
}

/* ============================================================================
   10. MODE FIXE
   ============================================================================
   Animations désactivées dans les paramètres, ou système réglé sur « réduire
   les animations » : la scène est intégralement rendue, mais immobile. Le
   décor reste, le mouvement disparaît. C'est un réglage d'accessibilité, pas
   une punition — on ne retire rien à voir.
   ========================================================================= */

body.nuc-fixe .nuc-etoiles,
body.nuc-fixe .nuc-vapeur,
body.nuc-fixe .nuc-cerenkov,
body.nuc-fixe .nuc-dome-oeil,
body.nuc-fixe .nuc-bati-clair,
body.nuc-fixe .nuc-bulle,
body.nuc-fixe .nuc-ovni {
  animation: none !important;
}

body.nuc-fixe .nuc-vapeur {
  opacity: .5;
  transform: translate(20px, -110px) scale(1.6);
}

@media (prefers-reduced-motion: reduce) {
  .nuc-etoiles, .nuc-vapeur, .nuc-cerenkov,
  .nuc-dome-oeil, .nuc-bati-clair, .nuc-ovni { animation: none !important; }
  .nuc-vapeur { opacity: .5; transform: translate(20px, -110px) scale(1.6); }
}

/* ============================================================================
   11. PETITS ÉCRANS
   ============================================================================
   Sur mobile, la place est comptée. Le tableau de bord se réduit, les bulles
   passent en pleine largeur, et la centrale reste lisible parce qu'elle est
   dimensionnée en unités relatives depuis le début.
   ========================================================================= */

@media (max-width: 768px) {
  .nuc-hud {
    right: 8px;
    bottom: 8px;
    font-size: 7.5pt;
    padding: 4px 8px;
    gap: 2px 7px;
  }
  .nuc-hud-co2 { display: none; }
  .nuc-bulles {
    left: 10px;
    right: 10px;
    bottom: 10px;
    max-width: none;
  }
  .nuc-bulle { font-size: 9pt; padding: 9px 12px; }
  .nuc-horizon { height: min(230px, 34vh); }
}
