/* ═══ RAFINEX360 · THÈME « IRISATION » (1.6.0) ═══
   Salle de contrôle bleu encre, reflets irisés d'un film d'hydrocarbure.
   Chargé après app.css : redéfinit les jetons, la profondeur et le mouvement sans toucher à la structure.
   Le mouvement est coupé par prefers-reduced-motion et par html.rx-still (tests automatisés). */
:root{
  --bg-abyss:#050811;--bg-base:#070c18;--bg-surface:#0b1222;--bg-elevated:#101a2e;--bg-raised:#15223a;--bg-overlay:#1b2b48;
  --border-subtle:rgba(148,178,230,.09);--border:rgba(148,178,230,.15);--border-strong:rgba(148,178,230,.26);--border-focus:#3ee6ff;
  --text:#eaf0fa;--text-soft:#b2c0d8;--text-dim:#8d9ebd;--text-mute:#7487a8;
  --cyan:#3ee6ff;--cyan-dark:#14b8e6;--cyan-glow:rgba(62,230,255,.22);
  --green:#2ee88f;--amber:#ffbe3d;--red:#ff4d6a;--purple:#9b7bff;
  --iris:linear-gradient(120deg,#3ee6ff 0%,#4f8bff 48%,#9b7bff 78%,#ff6fb5 100%);
  --iris-soft:linear-gradient(120deg,rgba(62,230,255,.16),rgba(79,139,255,.12) 50%,rgba(155,123,255,.14));
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --font-display:'Space Grotesk','Inter',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --spring:cubic-bezier(.22,1.28,.36,1);
  --out:cubic-bezier(.16,1,.3,1);
  --liquid:cubic-bezier(.34,1.76,.64,1);
  --radius-lg:16px;
  --shadow-sm:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px -12px rgba(0,0,0,.7);
  --shadow:0 24px 60px -20px rgba(0,0,0,.8),0 0 0 1px rgba(148,178,230,.08);
}
body{background:var(--bg-abyss);font-feature-settings:'cv11','ss03'}
::selection{background:rgba(79,139,255,.35);color:#fff}

/* ─── Fond : aurore lente + grain ─── */
.app{overflow:hidden;isolation:isolate;background:var(--bg-abyss)}
.app::before,.app::after{content:'';position:absolute;pointer-events:none;z-index:-1}
.app::before{inset:-30% -40%;
  background:
    radial-gradient(38% 30% at 22% 18%,rgba(62,230,255,.13),transparent 70%),
    radial-gradient(34% 28% at 82% 30%,rgba(155,123,255,.12),transparent 70%),
    radial-gradient(40% 32% at 60% 88%,rgba(79,139,255,.10),transparent 70%),
    radial-gradient(26% 22% at 12% 78%,rgba(255,111,181,.06),transparent 70%);
  animation:rxAurora 36s ease-in-out infinite alternate;will-change:transform}
.app::after{inset:0;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes rxAurora{0%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(4%,-3%,0) rotate(6deg)}100%{transform:translate3d(-3%,4%,0) rotate(-4deg)}}

/* ─── Barre d'application : verre ─── */
.appbar{background:linear-gradient(180deg,rgba(7,12,24,.82),rgba(7,12,24,.6));border-bottom:1px solid var(--border-subtle);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);position:relative}
.appbar::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--iris);opacity:.35}
.brand-logo{background:radial-gradient(circle at 30% 25%,rgba(62,230,255,.18),rgba(11,18,34,.9) 70%);box-shadow:inset 0 0 0 1px rgba(148,178,230,.18),0 8px 24px -8px rgba(62,230,255,.45);color:transparent}
.brand-logo::after{display:none}
.brand-logo .mark{width:30px;height:30px;overflow:visible}
.mark-ring{transform-box:fill-box;transform-origin:center;animation:rxSpin 14s linear infinite}
.mark-drop{transform-box:fill-box;transform-origin:50% 100%;animation:rxDrop 4.5s var(--out) infinite}
@keyframes rxSpin{to{transform:rotate(360deg)}}
@keyframes rxDrop{0%,70%,100%{transform:none}80%{transform:translateY(-1.5px) scaleY(1.06)}90%{transform:translateY(.5px) scaleY(.96)}}
.brand-name{font-family:var(--font-display);font-weight:700;letter-spacing:-.4px;font-size:18px}
.brand-name em{background:var(--iris);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:rxIris 8s ease-in-out infinite alternate}
@keyframes rxIris{to{background-position:100% 0}}
.view-title{text-transform:none;letter-spacing:.1px;font-size:12px;font-weight:500;color:var(--text-dim);margin-top:3px}
.clock{background:rgba(16,26,46,.6);border-color:var(--border-subtle);border-radius:999px;padding:6px 11px}
.icon-btn{background:rgba(16,26,46,.6);border-color:var(--border-subtle);border-radius:12px;transition:border-color .2s,background .2s,transform .2s var(--spring)}
.icon-btn:hover{border-color:var(--border-strong);background:rgba(27,43,72,.7)}
.icon-btn:active{transform:scale(.92)}
.icon-btn .dot{border-color:#0b1222;animation:rxBeat 2s ease-in-out infinite}
@keyframes rxBeat{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}

/* ─── Contenu et entrée des vues ─── */
.content{position:relative;z-index:1;scroll-behavior:smooth}
.view{animation:none}
.view.enter>*{animation:rxRise .55s var(--out) both;animation-delay:calc(var(--i,0) * 45ms)}
@keyframes rxRise{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}

/* ─── Libellés : hiérarchie plus calme ─── */
.section-label{font-size:11px;letter-spacing:.14em;font-weight:700;color:var(--text-soft);margin-top:10px;gap:10px}
.section-label span:first-child{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.section-label span:last-child{text-align:right;min-width:0}
.section-label span:first-child::before{content:'';width:14px;height:2px;border-radius:2px;background:var(--iris)}
.section-label span:last-child{color:var(--text-dim);font-size:11.5px;font-weight:500;letter-spacing:0}
.card-title{letter-spacing:.12em;font-size:11px;color:var(--text-soft);font-weight:700}
.field label{letter-spacing:.06em;font-size:10.5px;font-weight:700;color:var(--text-dim)}
.field .hint{color:var(--text-dim)}

/* ─── Cartes : bord irisé + halo qui suit le pointeur ─── */
.card{border-color:rgba(148,178,230,.07);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
  background:
    radial-gradient(420px circle at var(--mx,-600px) var(--my,-600px),rgba(62,230,255,.07),transparent 45%),
    linear-gradient(180deg,rgba(18,29,52,.78),rgba(10,17,32,.86));
  transition:transform .35s var(--out),box-shadow .35s var(--out),border-color .35s}
.card::before{inset:0;height:auto;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(155deg,rgba(255,255,255,.16),rgba(148,178,230,.05) 35%,rgba(79,139,255,.05) 65%,rgba(155,123,255,.2));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
@media (hover:hover){
  button.card:hover,.card.unit:hover,.card[data-go]:hover{transform:translateY(-2px);box-shadow:0 18px 40px -18px rgba(0,0,0,.9),0 0 0 1px rgba(62,230,255,.12)}
}
button.card:active,.card[data-go]:active{transform:scale(.99)}

/* KPI : chiffres en police d'affichage, accent coloré en coin */
.kpi{background:
    radial-gradient(420px circle at var(--mx,-600px) var(--my,-600px),rgba(62,230,255,.07),transparent 45%),
    radial-gradient(140px 90px at 0 0,color-mix(in srgb,var(--c,var(--cyan)) 16%,transparent),transparent 70%),
    linear-gradient(180deg,rgba(18,29,52,.78),rgba(10,17,32,.86))}
.kpi::after{width:2px;top:14px;bottom:14px;border-radius:2px;background:linear-gradient(180deg,var(--c,var(--cyan)),transparent);box-shadow:0 0 14px var(--c,var(--cyan))}
.kpi-label{letter-spacing:.1em;font-size:10px;color:var(--text-dim)}
.kpi-value{font-family:var(--font-display);font-weight:600;font-size:30px;letter-spacing:-1px}
.kpi-value small{font-family:var(--font)}
.gauge-val,.tkf-eta{font-family:var(--font-display)}

/* 1.48.1 : marge basse du système (barre de gestes ou boutons Android), utilisée partout à la place de
   env(safe-area-inset-bottom). js/app.js la met à 0 quand la WebView Android est déjà placée au-dessus des boutons
   système : certaines versions de la WebView annoncent quand même la marge, la barre d'onglets remontait alors
   d'autant et cachait le bas du contenu. */
:root{--rx-sab:env(safe-area-inset-bottom,0px)}
/* 1.49 : la barre d'onglets du bas remontait et cachait le contenu. Cause : le conteneur .app (overflow:hidden) dépasse
   de l'écran (messages flottants, dialogues) et le navigateur le faisait défiler pour montrer un champ qui prend le
   focus (ouverture du clavier Android, scrollIntoView) : la barre et l'en-tête montaient avec lui de 30 à 65 px.
   overflow:clip interdit tout défilement de .app, même programmé ; seul #content défile. (js/app.js : même garde en JS.) */
html .app{overflow:clip}
/* ─── Barre d'onglets : capsule flottante, indicateur glissant ─── */
.tabbar{left:10px;right:10px;bottom:calc(8px + var(--rx-sab));padding:6px;border-radius:22px;
  background:linear-gradient(180deg,rgba(16,26,46,.92),rgba(7,12,24,.96));border:1px solid var(--border);
  backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);
  box-shadow:0 20px 50px -12px rgba(0,0,0,.85),inset 0 1px 0 rgba(255,255,255,.05)}
.content{padding-bottom:calc(var(--tabbar-h) + 40px + var(--rx-sab))}
.tab{z-index:1;color:var(--text-mute);font-size:9.5px;font-weight:600;letter-spacing:-.1px;border-radius:16px;overflow:hidden;transition:color .25s,transform .18s var(--liquid)}
.tab:active{transform:scale(.92)}
.tab svg{transition:transform .45s var(--liquid)}
.tab.active{color:#fff}
.tab.active svg{color:var(--cyan);transform:translateY(-1px) scale(1.1);filter:drop-shadow(0 0 8px rgba(62,230,255,.55))}
.tab.active::before{display:none}
.tab:not(.active):hover{color:var(--text-soft)}
.tab .badge{z-index:2;font-family:var(--font);box-shadow:0 0 0 2px #0b1222,0 0 12px var(--red-glow)}
/* Indicateur liquide : l'enveloppe suit le doigt (position/taille), la goutte intérieure
   s'étire puis se détend à chaque déplacement — deux calques pour ne pas faire concurrence
   au `transform` piloté par JS sur l'enveloppe. */
.tab-ind{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;z-index:0;opacity:0;
  transition:transform .5s var(--spring),width .5s var(--spring),height .5s var(--spring),opacity .3s}
.tab-ind.on{opacity:1}
.tab-ind::after{content:'';position:absolute;inset:0;border-radius:16px;transform-origin:50% 50%;
  background:linear-gradient(180deg,rgba(62,230,255,.16),rgba(155,123,255,.10));
  box-shadow:inset 0 0 0 1px rgba(62,230,255,.28),0 8px 24px -10px rgba(62,230,255,.6)}
.tab-ind.squish::after{animation:tabLiquid .62s var(--liquid)}
@keyframes tabLiquid{
  0%,100%{transform:scale(1,1);border-radius:16px}
  28%{transform:scale(1.32,.74);border-radius:24px 24px 8px 8px/30px 30px 6px 6px}
  56%{transform:scale(.88,1.12);border-radius:10px 10px 22px 22px/8px 8px 24px 24px}
  80%{transform:scale(1.05,.97);border-radius:18px}
}
@media (min-width:1024px){
  @keyframes tabLiquid{
    0%,100%{transform:scale(1,1);border-radius:16px}
    28%{transform:scale(.74,1.32);border-radius:22px}
    56%{transform:scale(1.12,.88);border-radius:12px}
    80%{transform:scale(.97,1.05);border-radius:18px}
  }
}

/* ─── Boutons, puces, segments ─── */
.btn,.chip,.seg button,.tab{position:relative;overflow:hidden}
.btn{border-radius:12px;border-color:var(--border);background:linear-gradient(180deg,rgba(27,43,72,.7),rgba(16,26,46,.7));
  transition:transform .25s var(--spring),border-color .2s,background .2s,box-shadow .25s}
.btn:hover{border-color:var(--border-strong)}
.btn:active{transform:scale(.96)}
.btn.primary{background:linear-gradient(120deg,#3ee6ff,#22c3f0 45%,#5b8dff);color:#04101c;font-weight:700;
  box-shadow:0 10px 26px -10px rgba(62,230,255,.75),inset 0 1px 0 rgba(255,255,255,.45)}
.btn.primary::before{content:'';position:absolute;top:0;bottom:0;left:-60%;width:45%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);transition:left .7s var(--out)}
.btn.primary:hover::before{left:120%}
.btn.primary:hover{box-shadow:0 14px 34px -10px rgba(62,230,255,.9),inset 0 1px 0 rgba(255,255,255,.5)}
.btn.danger,.btn.red{transition:transform .25s var(--spring)}
.chip{transition:background .2s,border-color .2s,color .2s,transform .25s var(--spring)}
.chip:active{transform:scale(.95)}
.chip.active{background:var(--iris-soft);border-color:rgba(62,230,255,.45);color:#e6fbff;box-shadow:0 0 18px -6px rgba(62,230,255,.6)}
.seg{background:rgba(11,18,34,.7);border-color:var(--border-subtle);border-radius:14px}
.seg button{border-radius:10px;transition:color .25s,background .25s,box-shadow .25s}
.seg button.active{background:var(--iris-soft);box-shadow:inset 0 0 0 1px rgba(62,230,255,.3)}
.seg button small{color:var(--text-dim)}
.rx-ripple{position:absolute;border-radius:50%;pointer-events:none;transform:scale(0);opacity:.35;background:radial-gradient(circle,rgba(255,255,255,.55),rgba(255,255,255,0) 70%);animation:rxRipple .6s var(--out) forwards}
@keyframes rxRipple{to{transform:scale(1);opacity:0}}

/* ─── Champs : anneau de focus animé ─── */
input,select,textarea{transition:border-color .2s,box-shadow .3s var(--out),background .2s}
.field input,.field select,.mgrid input,.tk-row input,.tk-row select,.tk-card input,.tk-card select,.tk-new input,.tk-new select,.op-card textarea,.op-card select,.op-card input,.fx-ctl select,.fx-ctl input,.sup-search input{border-color:var(--border);background:rgba(7,12,24,.65)}
.field input:focus,.field select:focus,.mgrid input:focus,.tk-row input:focus,.tk-row select:focus,.tk-card input:focus,.tk-card select:focus,.tk-new input:focus,.tk-new select:focus,.op-card textarea:focus,.op-card select:focus,.op-card input:focus,.fx-ctl select:focus,.fx-ctl input:focus,.sup-search input:focus{
  outline:none;border-color:var(--cyan);background:rgba(11,18,34,.9);box-shadow:0 0 0 3px rgba(62,230,255,.16),0 0 22px -6px rgba(62,230,255,.55)}
.switch input:checked{background:rgba(62,230,255,.22)}
.switch input::after{transition:left .35s var(--spring),background .2s}

/* ─── Réservoirs : liquide vivant ─── */
.tank-vessel{border:1.5px solid var(--border-strong);border-radius:14px 14px 8px 8px;
  background:linear-gradient(90deg,rgba(255,255,255,.03),rgba(255,255,255,0) 40%),rgba(7,12,24,.8);box-shadow:inset 0 -6px 14px rgba(0,0,0,.4)}
.tank-vessel::after{content:'';position:absolute;top:6px;bottom:6px;left:7px;width:5px;border-radius:4px;background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,.04));z-index:2;pointer-events:none}
.tank-liquid{background:linear-gradient(180deg,color-mix(in srgb,var(--tc) 92%,#fff),color-mix(in srgb,var(--tc) 45%,var(--bg-abyss)));box-shadow:0 0 22px -4px var(--tc);transform-origin:50% 100%}
.tank-liquid::before{display:none}
.tank-liquid::after{content:'';position:absolute;left:0;top:-5px;width:200%;height:8px;background:color-mix(in srgb,var(--tc) 92%,#fff);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 8' preserveAspectRatio='none'%3E%3Cpath d='M0 4 Q7.5 0 15 4 T30 4 T45 4 T60 4 V8 H0Z'/%3E%3C/svg%3E") repeat-x 0 0/30px 8px;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 8' preserveAspectRatio='none'%3E%3Cpath d='M0 4 Q7.5 0 15 4 T30 4 T45 4 T60 4 V8 H0Z'/%3E%3C/svg%3E") repeat-x 0 0/30px 8px;
  animation:rxWave 3.2s linear infinite}
@keyframes rxWave{to{transform:translateX(-50%)}}
.view.enter .tank-liquid{animation:rxFill 1.1s var(--out) both}
@keyframes rxFill{from{transform:scaleY(0)}to{transform:none}}

/* ─── Barres de progression : reflet qui circule ─── */
.bar{background:rgba(7,12,24,.8);box-shadow:inset 0 0 0 1px var(--border-subtle)}
.bar-fill{position:relative;overflow:hidden;background:linear-gradient(90deg,#14b8e6,#3ee6ff)}
.bar-fill::after{content:'';position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:rxSheen 2.8s var(--out) infinite;transform:translateX(-120%)}
@keyframes rxSheen{60%,100%{transform:translateX(320%)}}
.view.enter .bar-fill{animation:rxGrow 1s var(--out) both;transform-origin:0 50%}
@keyframes rxGrow{from{transform:scaleX(0)}to{transform:none}}

/* ─── Alertes ─── */
.alert{position:relative;flex-wrap:wrap;border-radius:12px;border-left-width:3px;row-gap:10px}
.alert-body{flex:1 1 220px}
.alert-act{margin-top:0;align-self:center}
.alert .btn{white-space:normal}
.alert.danger::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 1px rgba(255,77,106,.5),0 0 26px -4px rgba(255,77,106,.55);opacity:0;animation:rxAlarm 2.4s ease-in-out infinite}
@keyframes rxAlarm{50%{opacity:1}}
.alert-meta{font-family:var(--font);color:var(--text-dim)}

/* Opérations en cours (tableau de bord) : le trajet n'est plus tronqué */
.row-op{grid-template-columns:1fr auto;grid-template-areas:"id eta" "path path";row-gap:6px;align-items:baseline}
.row-op>b{grid-area:id;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-op>span:nth-child(2){grid-area:path;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4}
.row-op>span:nth-child(3){grid-area:eta;color:var(--text-soft);font-size:12px}
.row-op b.mono{color:var(--cyan)}

/* ─── Tags ─── */
.tag{border-radius:999px;letter-spacing:.06em;padding:3px 9px}

/* ─── Message flottant, dialogue, barre d'enregistrement, chargement ─── */
.toast{border-radius:14px;background:rgba(21,34,58,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-color:var(--border-strong);
  transform:translateY(24px) scale(.96);transition:transform .45s var(--spring),opacity .25s;bottom:calc(var(--tabbar-h) + 30px + var(--rx-sab))}
.toast.show{transform:none}
dialog#confirmDlg{border-radius:18px;background:linear-gradient(180deg,rgba(21,34,58,.97),rgba(11,18,34,.98));border-color:var(--border-strong)}
dialog#confirmDlg[open]{animation:rxPop .4s var(--spring)}
dialog#confirmDlg::backdrop{background:rgba(3,6,12,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
@keyframes rxPop{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
.savebar{height:2px;background:var(--iris);background-size:50% 100%}
.boot{background:radial-gradient(60% 40% at 50% 40%,rgba(62,230,255,.1),transparent 70%),var(--bg-abyss)}
.boot .spin{width:40px;height:40px;border:2px solid rgba(148,178,230,.14);border-top-color:var(--cyan);border-right-color:#9b7bff;box-shadow:0 0 30px -6px rgba(62,230,255,.6)}

/* Tableaux */
.table-wrap{border-radius:12px}

/* ─── Bureau : rail de navigation à gauche ─── */
@media (min-width:1024px){
  .app{max-width:1480px;padding-left:96px;border-left:none;border-right:none}
  .tabbar{top:0;bottom:0;left:0;right:auto;width:96px;border-radius:0;border:none;border-right:1px solid var(--border-subtle);
    grid-template-columns:1fr;grid-auto-rows:min-content;align-content:start;gap:6px;padding:18px 12px;
    background:linear-gradient(180deg,rgba(7,12,24,.86),rgba(7,12,24,.7));box-shadow:none}
  .tab{min-height:66px;font-size:11px;gap:5px}
  .content{padding:28px 40px 48px}
  .view{max-width:1240px;margin:0 auto;width:100%}
  .kpis{grid-template-columns:repeat(4,1fr);gap:14px}
  .tanks{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
  .toast{left:auto;right:28px;bottom:28px;max-width:420px}
}

/* ─── Mouvement réduit / tests automatisés ─── */
html.rx-still .app::before,html.rx-still .mark-ring,html.rx-still .mark-drop,html.rx-still .brand-name em,html.rx-still .tank-liquid::after,html.rx-still .bar-fill::after,html.rx-still .alert.danger::after,html.rx-still .icon-btn .dot{animation:none!important}
html.rx-still *,html.rx-still *::before,html.rx-still *::after{animation-duration:0s!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:0s!important;transition-delay:0s!important}

/* Sous-titres de groupes : texte courant, pas de police à chasse fixe */
.grp-h small{font-family:var(--font);letter-spacing:0;color:var(--text-dim)}
/* Petits téléphones : l'heure du téléphone suffit, le titre de la vue garde la place */
@media (max-width:420px){.appbar .clock{display:none}}

/* Fabrication : choix du mode et recettes du site */
.mk-mode button small{font-family:var(--font);font-weight:500;letter-spacing:0}
.mk-recipes{margin-top:10px}
.mk-recipes:empty{display:none}
.mk-recipes .chip{text-align:left;align-items:baseline;flex-wrap:wrap;max-width:100%}
.mk-recipes .chip small{font-size:10.5px;font-weight:500;color:var(--text-dim);white-space:normal}
.mk-recipes .chip.active small{color:var(--text-soft)}

/* ─── Allègement (1.6.2) : cartes résumées, détails repliés ─── */
.fx-prog{display:flex;flex-direction:column;gap:6px}
.fx-prog .bar{height:8px;border-radius:5px}
.fx-prog-t{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-dim)}
.fx-prog-t b{color:var(--text);font-family:var(--font-display);font-size:14px;font-weight:600}
.fx-card{gap:10px}
.fx-card .fx-ctl{margin-top:2px}
.fx-more{border-top:1px solid var(--border-subtle);padding-top:8px}
.fx-more>summary{font-size:12.5px;font-weight:600;color:var(--cyan);cursor:pointer}
.fx-more[open]{display:flex;flex-direction:column;gap:9px}
.fx-card .row-act{margin-top:0}
.fx-card .row-act .btn.danger{background:transparent;border-color:rgba(255,77,106,.4);color:var(--red)}
.note-sup{border-radius:12px;padding:10px 13px;background:linear-gradient(90deg,rgba(62,230,255,.08),rgba(62,230,255,.02));border-left:3px solid var(--cyan);font-size:12.5px;color:#a8e7f7}
.note-sup>summary{font-weight:600;color:var(--text);cursor:pointer}
.note-sup>div{margin-top:6px;line-height:1.5}
.tk-cap b{color:var(--text);font-weight:700}
.tk-card{gap:8px}
.tk-tech>.tk-l2{margin:10px 0}
.mtk-fold{display:flex;flex-direction:column;gap:10px}
.mtk-fold>summary{list-style:none;cursor:pointer}
.mtk-fold>summary::-webkit-details-marker{display:none}
.mtk-fold>summary span:last-child::after{content:' ▾';color:var(--cyan)}
.mtk-fold[open]>summary span:last-child::after{content:' ▴'}

/* Terrain : pompe des ouvrages et décision de rejet */
.lvl-row .pp-tg,.lvl-row .asp-box{grid-column:1/-1}
.pp-tg{display:flex;align-items:center;gap:6px}
.pp-tg>span,.asp-box>span{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);min-width:58px}
.pp-tg button{flex:1;min-height:40px;border-radius:10px;border:1px solid var(--border);background:rgba(7,12,24,.65);color:var(--text-soft);font-weight:600;font-size:12.5px;cursor:pointer;transition:all .2s}
.pp-tg button[data-pp="En marche"].on{background:rgba(46,232,143,.16);border-color:rgba(46,232,143,.6);color:var(--green)}
.pp-tg button[data-pp="Arrêtée"].on{background:rgba(148,178,230,.14);border-color:var(--border-strong);color:var(--text)}
.asp-box{display:flex;flex-direction:column;gap:6px}
.asp-box .chip{padding:6px 10px;font-size:11.5px}
.lvl-row.ctl{background:linear-gradient(90deg,rgba(62,230,255,.05),transparent);border-radius:10px;padding:10px 8px}
.eff-verdict{display:flex;flex-direction:column;gap:3px;margin-top:10px;padding:11px 13px;border-radius:12px;border-left:3px solid;font-size:12.5px}
.eff-verdict b{font-size:14px}
.eff-verdict.ok{background:rgba(46,232,143,.1);border-color:var(--green);color:#b5f7d5}
.eff-verdict.danger{background:rgba(255,77,106,.1);border-color:var(--red);color:#ffc2cc}
.eff-verdict.warn{background:rgba(255,190,61,.1);border-color:var(--amber);color:#ffe2a6}
.ouv-st{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.pp-st{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600}
.pp-st i{width:8px;height:8px;border-radius:50%;background:var(--text-mute)}
.pp-st.on{color:var(--green)}.pp-st.on i{background:var(--green);box-shadow:0 0 0 0 rgba(46,232,143,.6);animation:pulse 1.8s infinite}
.pp-st.off{color:var(--text-soft)}
.pp-st small{color:var(--text-dim);font-weight:500}
.check-l{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-soft)}
.check-l.full{grid-column:1/-1}
.check-l input{width:18px;height:18px;accent-color:var(--cyan)}
#ouvList .pump-row .btn.on{border-color:rgba(62,230,255,.5);color:var(--cyan)}
.eff-verdict[hidden]{display:none}

/* ═══ 1.6.4 · Affichage opérateur : moins « administration », plus compact ═══ */
/* Libellés en casse normale : on lit des mots, pas des en-têtes de formulaire */
.tag{text-transform:none;letter-spacing:0;font-size:11.5px;font-weight:600;padding:2px 9px}
.field label{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:600;color:var(--text-soft)}
.sub-h{text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:700;color:var(--text);margin:18px 0 8px}
.section-label{text-transform:none;letter-spacing:0;font-size:14px;font-weight:700;color:var(--text)}
.section-label span:last-child{font-size:12px}
.card-title{text-transform:none;letter-spacing:0;font-size:13.5px;color:var(--text)}
.pp-tg>span,.asp-box>span{text-transform:none;letter-spacing:0;font-size:12px;font-weight:600}
.card-p{font-size:12.5px;color:var(--text-dim);margin:2px 0 10px}

/* Suppressions discrètes : plus de gros boutons rouges dans les listes */
.btn.sm.danger,.row-act .btn.danger{background:transparent;border-color:transparent;color:var(--red);box-shadow:none}
.btn.sm.danger:hover,.row-act .btn.danger:hover{background:rgba(255,77,106,.1)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--cyan);box-shadow:none}
.btn.ghost:hover{background:rgba(62,230,255,.08)}
.row-act{justify-content:flex-end;gap:4px;margin-top:6px}
.row-act .btn.sm{min-height:30px;padding:4px 10px}
.x-btn{width:28px;height:28px;border:none;background:transparent;color:var(--text-mute);border-radius:8px;font-size:17px;line-height:1;transition:color .15s,background .15s}
.x-btn:hover,.x-btn:focus-visible{color:var(--red);background:rgba(255,77,106,.1)}
.ic-del{width:30px;height:30px;border:none;background:transparent;color:var(--text-mute);border-radius:8px;font-size:18px;line-height:1;cursor:pointer}
.ic-del:hover,.ic-del:focus-visible{color:var(--red);background:rgba(255,77,106,.1)}
.pump-row{padding:5px 0;gap:8px}
.pump-row span{font-size:12.5px}

/* Bouton « + Nouveau … » replié */
.add-fold{padding:0}
.add-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 14px;font-weight:600;color:var(--text)}
.add-fold>summary::-webkit-details-marker{display:none}
.add-fold>summary small{margin-left:auto;color:var(--text-dim);font-weight:500;font-size:11.5px;text-align:right}
.add-fold .add-ic{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;background:var(--iris-soft);color:var(--cyan);font-size:17px;font-weight:700;transition:transform .25s var(--spring)}
.add-fold[open] .add-ic{transform:rotate(45deg)}
.add-fold>form{padding:0 14px 14px}

/* Pompes : puces sur plusieurs colonnes, ajout sur une ligne */
.pm-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.pm-hint{flex:1;font-size:12px;color:var(--text-dim)}
.pm-head input{max-width:130px;min-height:34px;padding:6px 10px;font-size:13px}
.pm-chips{display:flex;flex-wrap:wrap;gap:6px}
.pm-chip{display:inline-flex;align-items:center;gap:2px;padding:4px 4px 4px 11px;border-radius:999px;border:1px solid var(--border);background:rgba(7,12,24,.55);font-family:var(--mono);font-size:12.5px;color:var(--text);min-height:32px}
.pm-chip:not(:has(button)){padding-right:11px}
.pm-chip button{width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:var(--text-mute);font-size:15px;line-height:1;cursor:pointer}
.pm-chip button:hover,.pm-chip button:focus-visible{background:rgba(255,77,106,.14);color:var(--red)}
.pm-chips .empty{padding:6px 0}
.pm-add{display:flex;gap:8px;margin-top:12px}
.pm-add input{flex:1;min-width:0}
.pm-add .btn{min-height:44px;padding:0 16px}

/* Terrain : ouvrages en tuiles, rondes sur deux lignes */
.ouv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.ouv-grid>.card:only-child{grid-column:1/-1}
.ouv-card{padding:12px 13px;display:flex;flex-direction:column;gap:6px;margin:0}
.ouv-card .ot-n{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ouv-card .ot-h{font-size:12px;color:var(--text-dim)}
.ouv-card .ot-h b{font-family:var(--mono);font-size:20px;color:var(--text);font-weight:700}
.ouv-card.al .ot-h b{color:var(--red)}
.ouv-card .bar{margin-top:0;position:relative}
.ouv-card .bar-al{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--amber);border-radius:2px}
.ouv-card .ouv-st{margin-top:0;gap:6px}
.ouv-card .pp-st{font-size:11.5px}
.ouv-card .ot-sub{font-size:11px;color:var(--text-mute);margin-top:auto}
.eff-row{padding:10px 12px}
.er-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.er-t{font-family:var(--mono);font-size:13px}
.er-by{color:var(--text-dim);font-size:12px;margin-right:auto}
.er-act{display:inline-flex;align-items:center;gap:0;margin-left:2px}
.er-act .btn.sm{min-height:28px;padding:2px 8px;font-size:12px}
.er-lv{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px;font-size:12.5px;color:var(--text-soft)}
.er-o b{font-family:var(--mono);color:var(--text);font-weight:600}
.er-o.al b{color:var(--red)}
.er-pp{font-style:normal;color:var(--green);font-size:10px;margin-left:4px}
.er-v{font-style:normal;font-size:11px;margin-left:5px;font-weight:600}
.er-v.ok{color:var(--green)}.er-v.warn{color:var(--amber)}.er-v.danger{color:var(--red)}
.er-x{margin-top:4px;font-size:12px;color:var(--text-dim)}
.eh-more>summary{cursor:pointer;color:var(--cyan);font-size:13px;font-weight:600;padding:8px 2px;list-style:none}
.eh-more>summary::-webkit-details-marker{display:none}
.eh-more>summary::before{content:'▸ ';}
.eh-more[open]>summary::before{content:'▾ '}

/* Produits et unités : cartes plus basses */
.prod-card,.unit-card{padding:11px 13px}
.prod-card .unit-code{min-width:44px;height:30px;font-size:10.5px;padding:0 6px}
.pm-head input,.pm-add input{height:42px;padding:0 12px;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);font-size:13.5px}
.pm-head input{height:34px}
.pm-head input:focus,.pm-add input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px var(--cyan-glow)}
/* Saisie de ronde plus serrée */
.lvl-row{padding:8px 0;gap:6px 8px}
.pp-tg button{min-height:34px;font-size:12px}
.lvl-row input[type=text]{height:36px;font-size:12.5px}
.lvl-row .kpi-sub{font-size:11px}
.asp-box .pick{gap:5px}
.asp-box .chip{padding:4px 9px;font-size:11.5px;min-height:28px}
.add-fold>.add-body{padding:0 14px 14px}
.tk-l2 label,.tk-head{text-transform:none;letter-spacing:0;font-size:11px;font-weight:600}
.er-top{flex-wrap:nowrap}
.er-by{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-top .tag{flex-shrink:0}
.alert-act{gap:4px}
.alert-act .btn.sm{min-height:30px;padding:4px 12px}
.alert-act .btn.ack{background:transparent;border-color:transparent;color:var(--text-dim);box-shadow:none}
.alert-act .btn.ack:hover{color:var(--text)}
.er-t{white-space:nowrap;flex-shrink:0}

/* ═══ 1.7.0 · Quart : bandeau, consignes, tableau de bord, centre de contrôle ═══ */
.shift-bar{padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.sb-main{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sb-main b{font-family:var(--display,inherit);font-size:20px}
.sb-main span{color:var(--text-soft);font-size:13px}
.sb-main .sb-date{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--text-dim)}
.sb-sub{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-dim);flex-wrap:wrap}
.sync-st{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;line-height:1.35;color:var(--text-dim)}
.sync-st i{width:8px;height:8px;border-radius:50%;margin-top:4px;flex-shrink:0;background:var(--text-mute)}
.sync-st.ok i{background:var(--green)}.sync-st.err{color:var(--amber)}.sync-st.err i{background:var(--amber)}.sync-st.loc i{background:var(--cyan)}
.cs-card{padding:10px 12px}
.cs-row{padding:8px 0;border-bottom:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:4px}
.cs-row:last-child{border-bottom:none}
.cs-row.prio{border-left:3px solid var(--red);padding-left:9px;margin-left:-12px}
.cs-t{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13.5px;color:var(--text)}
.cs-m{display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-dim)}
.cs-m>span{margin-right:auto}
.cs-m .btn.sm{min-height:28px;padding:2px 10px}
/* 1.47 : destinataires de la transmission (accusé de lecture) */
.cs-dest{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cs-dest .btn.sm{min-height:26px;padding:2px 10px;font-size:11.5px}
.cs-add>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:8px 0 2px;color:var(--cyan);font-weight:600;font-size:13px}
.cs-add>summary::-webkit-details-marker{display:none}
.cs-add .add-ic{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:var(--iris-soft);font-size:15px}
.op-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.oc{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;cursor:pointer;color:inherit;font:inherit;text-align:left;margin:0}
.oc b{font-family:var(--mono);font-size:22px}
.oc span{font-size:11px;color:var(--text-dim);line-height:1.25}
.oc.purple b{color:var(--purple)}.oc.info b{color:var(--cyan)}
@media (max-width:420px){.op-counts{grid-template-columns:repeat(2,1fr)}}
.ctl-row,.rl-row{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;width:100%;padding:7px 0;border:none;border-bottom:1px solid var(--border-subtle);background:none;color:inherit;font:inherit;text-align:left;font-size:12.5px;cursor:pointer}
.ctl-row:last-child,.rl-row:last-child{border-bottom:none}
.ctl-row span:nth-child(2),.rl-row span:nth-child(3){color:var(--text-soft);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctl-row .bad{color:var(--red);font-weight:600}
.ctl-eta{grid-column:2/-1;color:var(--text-dim);font-size:11.5px}
.rl-row{cursor:default;grid-template-columns:auto auto 1fr}
.rl-by{grid-column:1/-1;color:var(--text-mute);font-size:11px}
.link-btn{background:none;border:none;color:var(--cyan);font:inherit;font-size:12px;font-weight:600;cursor:pointer;padding:0}
.sc-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sc-filters select{height:38px;padding:0 8px;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);font-size:12.5px;min-width:0}
.chips .chip small{opacity:.7;margin-left:3px}
.sc-row{padding:11px 12px;display:flex;flex-direction:column;gap:6px}
.sc-row.bad{border-color:rgba(255,77,106,.45)}
.sc-row.flash{box-shadow:0 0 0 2px var(--cyan)}
.sc-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sc-top b{margin-right:auto;font-size:13.5px}
.sc-path{font-size:12.5px;color:var(--text-soft)}
.sc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 10px;padding:8px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}
@media (max-width:420px){.sc-grid{grid-template-columns:repeat(2,1fr)}}
.sc-grid>div{display:flex;flex-direction:column;min-width:0}
.sc-grid small{font-size:10.5px;color:var(--text-dim)}
.sc-grid b{font-family:var(--mono);font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-grid i{font-style:normal;font-size:10.5px;color:var(--text-mute);line-height:1.25}
.sc-grid .warn b{color:var(--amber)}.sc-grid .bad b,.sc-grid .bad i{color:var(--red)}.sc-grid .miss b{color:var(--text-mute);font-family:inherit;font-weight:500}
.sc-al{display:flex;flex-direction:column;gap:3px;font-size:11.5px}
.sc-al .danger{color:var(--red)}.sc-al .warn{color:var(--amber)}.sc-al .info{color:var(--text-dim)}
.sc-act{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.sc-act .btn.sm{min-height:32px}
#supList .flash{box-shadow:0 0 0 2px var(--cyan)}
.rx-dlg{border:1px solid var(--border-strong);border-radius:16px;background:var(--bg-elevated,#121d34);color:var(--text);padding:18px;width:min(420px,92vw)}
.rx-dlg::backdrop{background:rgba(3,6,14,.6)}
.rx-dlg h3{margin:0 0 10px;font-size:16px}
.pd-l{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-soft)}
.pd-l textarea{width:100%;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);padding:8px 10px;font:inherit;font-size:13.5px}
.rx-dlg .btn-row{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
/* Barre d'onglets du téléphone : le référentiel Site passe dans Plus pour laisser la place au Quart */
@media (max-width:1023px){.tabbar .tab[data-v="units"]{display:none}}
.sl-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media (min-width:1024px){.site-links{display:none}}

/* 1.7.1 : ajout d'un réservoir toujours visible sous la grille, quel que soit le nombre de bacs */
.tk-new-btn{margin:10px 0 4px;border-style:dashed;color:var(--cyan)}
.rel-more{margin-top:8px}
.rel-more .fields{margin-top:8px}
label.chk{display:flex;align-items:center;gap:8px;min-height:40px;text-transform:none;font-size:13px;color:var(--text)}
label.chk input{width:18px;height:18px;flex:none}
.rx-dlg label.pd-l{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.rx-dlg p.pd-l{font-size:12.5px;color:var(--text-dim);margin:0 0 4px;line-height:1.45}
.rx-dlg .cl-ecart{font-size:12.5px;color:var(--amber);margin-top:6px}
.rx-dlg .cl-ecart:empty{display:none}
.pd-l input,.pd-l select{width:100%;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);padding:8px 10px;font:inherit;font-size:13.5px;min-height:40px}
/* 1.8.0 : bilan matière */
.bm-per{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.bm-per select,.bm-per input{min-height:38px}
#bmCustom{display:flex;gap:6px;flex-wrap:wrap}
#bmCustom[hidden]{display:none}
.bm-t td small{display:block;color:var(--text-dim);font-size:11px;font-weight:400}
.bm-t td b.bad{color:var(--red)}
.bm-t th,.bm-t td{white-space:nowrap}
/* 1.8.1 : formes des réservoirs. Ballon GPL = sphère claire sur pieds ; cigare = cylindre horizontal */
.tk-grp{display:flex;align-items:center;gap:8px;margin:6px 2px 0;font-size:12px;font-weight:600;color:var(--text-soft)}
.tk-grp small{font-weight:500;color:var(--text-dim)}
.tank-vessel.vs-sphere{width:66px;height:66px;border-radius:50%;border:1.5px solid #c9d3e2;
  background:radial-gradient(circle at 34% 30%,#ffffff 0,#e6ecf4 28%,#b9c4d4 62%,#8794a8 100%);box-shadow:inset -6px -8px 14px rgba(20,30,50,.35),0 6px 18px -8px rgba(0,0,0,.6)}
.tank-vessel.vs-sphere::after{display:none}
.tank-vessel.vs-sphere .tank-liquid{opacity:.82;mix-blend-mode:multiply}
.tank-sphere .sph-legs{display:block;width:50px;height:9px;margin-top:-8px;position:relative;
  background:linear-gradient(90deg,transparent 6px,#8794a8 6px 9px,transparent 9px 20px,#8794a8 20px 23px,transparent 23px 27px,#8794a8 27px 30px,transparent 30px 41px,#8794a8 41px 44px,transparent 44px)}
.tank-sphere{border-color:color-mix(in srgb,#c9d3e2 35%,var(--border))}
.tank-vessel.vs-cigar{width:78px;height:38px;border-radius:19px;border:1.5px solid #c9d3e2;margin:19px 0;
  background:linear-gradient(180deg,#f3f6fa 0,#cbd4e1 55%,#8f9bb0 100%)}
.tank-vessel.vs-cigar::after{display:none}
.tank-vessel.vs-cigar .tank-liquid{opacity:.82;mix-blend-mode:multiply}
/* 1.9.0 : surveillance des bassins et drainage / vidange. Palette bleu marine, bleu clair et blanc */
:root{--navy:#0d2142;--navy-2:#13305c;--sky:#7cc4ff;--sky-soft:rgba(124,196,255,.14);--white:#f4f8ff}
#fieldSeg.s3 button{font-size:12.5px;padding:9px 4px;min-height:44px}
.syn-meta{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:14px;background:linear-gradient(120deg,var(--navy),var(--navy-2));border:1px solid rgba(124,196,255,.25);color:var(--white)}
.syn-meta b{font-size:14px}.syn-meta span{font-size:11.5px;color:#b9d6f5}
.syn-kpi{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
@media(min-width:620px){.syn-kpi{grid-template-columns:repeat(4,minmax(0,1fr))}}
.syn-k{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:1px;min-width:0}
.syn-k span{font-size:11.5px;color:var(--text-soft);font-weight:600}.syn-k b{font-family:var(--font-display);font-size:26px;line-height:1.15;color:var(--white)}
.syn-k small{font-size:10.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.syn-k.k-w.hot{border-color:var(--amber)}.syn-k.k-w.hot b{color:var(--amber)}.syn-k.k-d.hot{border-color:var(--red)}.syn-k.k-d.hot b{color:var(--red)}
.syn-k.k-g.hot b{color:var(--green)}.syn-k.k-b.hot{border-color:rgba(124,196,255,.5)}.syn-k.k-b.hot b{color:var(--sky)}
.bas-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media(max-width:360px){.bas-grid{grid-template-columns:1fr}}
@media(min-width:760px){.bas-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.bas-card{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:11px;border-radius:16px;min-width:0;
  background:linear-gradient(170deg,var(--navy-2),var(--navy) 70%);border:1px solid rgba(124,196,255,.22);color:var(--white);box-shadow:var(--shadow-sm);transition:transform .2s var(--spring),border-color .2s}
.bas-card:active{transform:scale(.98)}.bas-card:focus-visible{outline:2px solid var(--sky);outline-offset:2px}
.bas-card.crit{border-color:var(--red);box-shadow:0 0 0 1px var(--red),var(--shadow-sm)}
.bc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:6px}.bc-top b{font-size:13.5px;line-height:1.25}
.bc-body{display:flex;gap:10px;align-items:stretch}
.bc-gauge{position:relative;flex:none;width:22px;min-height:86px;border-radius:7px;background:rgba(255,255,255,.08);border:1px solid rgba(124,196,255,.3);overflow:hidden}
.bc-gauge i{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,var(--sky),#3d8de0);transition:height .6s var(--out)}
.bc-gauge.by-cls i{background:repeating-linear-gradient(135deg,rgba(124,196,255,.85) 0 5px,rgba(124,196,255,.55) 5px 10px)}
.bc-gauge em{position:absolute;left:-2px;right:-2px;height:2px;background:var(--red)}
.c-plein .bc-gauge i{background:linear-gradient(180deg,#ff8095,var(--red))}.c-haut .bc-gauge i{background:linear-gradient(180deg,#ffd27a,var(--amber))}
.bc-info{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:11.5px}
.bc-h b{font-family:var(--font-display);font-size:20px}.bc-h small{margin-left:6px;color:#b9d6f5;font-weight:600}
.bc-l{color:#cfe2f8;overflow-wrap:anywhere}.bc-l.bad{color:var(--amber);font-weight:600}
.thr-crit{color:var(--red)!important;font-weight:700}.thr-haut{color:var(--amber)!important;font-weight:600}.thr-bas{color:var(--sky)!important}
.bc-foot{font-size:10.5px;color:#9fbfe3;border-top:1px solid rgba(124,196,255,.18);padding-top:6px}.bc-foot.old{color:var(--amber)}
.cls-b{display:inline-block;padding:3px 8px;border-radius:999px;font-size:10.5px;font-weight:800;letter-spacing:.3px;white-space:nowrap;border:1px solid}
.cls-plein{background:rgba(255,77,106,.18);color:#ffb3c0;border-color:rgba(255,77,106,.6)}
.cls-haut{background:rgba(255,190,61,.16);color:#ffd88a;border-color:rgba(255,190,61,.55)}
.cls-moyen{background:rgba(124,196,255,.16);color:#bfe1ff;border-color:rgba(124,196,255,.5)}
.cls-bas{background:rgba(46,232,143,.13);color:#a9f3cd;border-color:rgba(46,232,143,.45)}
.cls-tbas{background:rgba(155,123,255,.15);color:#d3c6ff;border-color:rgba(155,123,255,.5)}
.pp-b{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;white-space:nowrap}
.pp-b i{width:8px;height:8px;border-radius:50%;background:var(--text-mute)}
.pp-on{color:var(--green)}.pp-on i{background:var(--green);animation:pulse 1.8s infinite}.pp-off{color:#cfe2f8}.pp-off i{background:#9fbfe3}
.pp-ko{color:var(--red)}.pp-ko i{background:var(--red)}.pp-nv{color:var(--text-dim)}.pp-nv i{background:transparent;border:1.5px dashed var(--text-dim)}
.dr-tbl-wrap{overflow-x:auto;border-radius:14px;border:1px solid var(--border);background:var(--bg-surface)}
.dr-tbl{width:100%;border-collapse:collapse;font-size:12px;min-width:820px}
.dr-tbl th{text-align:left;padding:9px 10px;background:var(--navy);color:var(--white);font-weight:700;font-size:11.5px;white-space:nowrap}
.dr-tbl td{padding:9px 10px;border-top:1px solid var(--border-subtle);vertical-align:top}
.dr-tbl tbody tr[data-drgo]{cursor:pointer}.dr-tbl tbody tr[data-drgo]:hover{background:var(--sky-soft)}
.dr-tbl td.empty{min-width:0;text-align:left}
.mode-b{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}
.mode-b.m-d{background:rgba(124,196,255,.18);color:#bfe1ff}.mode-b.m-v{background:rgba(255,255,255,.12);color:var(--white);box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}
.tag.crit{background:rgba(255,77,106,.22);color:#ffd0d8;border:1px solid var(--red);font-weight:800}
.bas-pick{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.bas-pick button{flex:1 0 auto;min-width:118px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;border-radius:14px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text);cursor:pointer;min-height:56px;font:inherit}
.bas-pick button b{font-size:13px}.bas-pick button small{font-size:10.5px;color:var(--text-dim)}
.bas-pick button.active{background:linear-gradient(170deg,var(--navy-2),var(--navy));border-color:var(--sky);box-shadow:0 0 0 1px var(--sky)}
.bas-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}
.bh-l{display:flex;flex-direction:column;gap:2px;min-width:0}.bh-l b{font-size:15px}.bh-l span{font-size:11.5px;color:var(--text-dim)}
.bh-r{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.bh-r small{font-size:11px;color:var(--text-dim);white-space:nowrap}
.unit-in{display:flex;gap:6px}.unit-in input{flex:1;min-width:0}.unit-in select{width:72px;flex:none}
.ro-val{min-height:44px;display:flex;align-items:center;padding:0 12px;border-radius:10px;background:var(--bg-abyss);border:1px dashed var(--border);font-size:13px;color:var(--text-soft)}
.sub-h small{font-weight:500;color:var(--text-dim);margin-left:6px;text-transform:none;letter-spacing:0}
.opt-row{display:flex;flex-wrap:wrap;gap:6px}
.opt{min-height:46px;padding:8px 14px;border-radius:12px;border:1px solid var(--border-strong);background:var(--bg-surface);color:var(--text);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;flex:1 1 auto;transition:background .15s,border-color .15s}
.opt.on{background:var(--navy-2);border-color:var(--sky);color:var(--white);box-shadow:inset 0 0 0 1px var(--sky)}
.cls-row .opt{flex:1 1 calc(20% - 6px);min-width:86px;font-weight:800;letter-spacing:.3px}
.opt.cls-o.cls-plein.on{background:rgba(255,77,106,.28);border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red)}
.opt.cls-o.cls-haut.on{background:rgba(255,190,61,.24);border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber);color:#ffe7b3}
.opt.cls-o.cls-bas.on{background:rgba(46,232,143,.2);border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.opt.cls-o.cls-tbas.on{background:rgba(155,123,255,.24);border-color:var(--purple);box-shadow:inset 0 0 0 1px var(--purple)}
.opt.pp-o.pp-on.on{background:rgba(46,232,143,.2);border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.opt.pp-o.pp-ko.on{background:rgba(255,77,106,.22);border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red)}
.bas-thr{margin-top:8px;padding:8px 12px;border-radius:10px;font-size:12.5px;font-weight:600;background:rgba(255,190,61,.1);border-left:3px solid var(--amber)}
.bas-thr.thr-crit{background:rgba(255,77,106,.12);border-color:var(--red)}
.mer-warn{display:flex;flex-direction:column;gap:3px;margin-top:10px;padding:11px 13px;border-radius:12px;border:1px solid var(--red);border-left-width:4px;background:rgba(255,77,106,.12);color:#ffd0d8;font-size:12.5px}
.mer-warn b{font-size:14px;letter-spacing:.3px;color:#fff}
.mer-warn.ok{border-color:var(--sky);background:var(--sky-soft);color:#d6ebff}
.bas-ph{display:flex;flex-direction:column;gap:6px;margin-top:6px}.bas-ph img,.br-ph{max-width:100%;max-height:220px;border-radius:10px;object-fit:contain;background:#000}
.btn.big{min-height:50px;font-size:15px}
.bas-row .br-v{font-size:13px;margin:6px 0 2px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.br-a{font-size:12.5px;color:var(--text-soft)}.br-a.bad{color:var(--amber);font-weight:600}
.br-src{font-size:10.5px;color:var(--text-mute);margin-top:4px}
.bcfg-row{padding:10px 0;border-top:1px solid var(--border-subtle)}.bcfg-row:first-child{border-top:none}
.bcfg-n{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.bcfg-f{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.bcfg-f label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--text-dim)}
.bcfg-f input{min-height:40px;border-radius:10px;background:var(--bg-abyss);border:1px solid var(--border);color:var(--text);padding:6px 10px;font:inherit;font-size:13.5px;width:100%}
.dr-card{border-left:4px solid var(--border-strong)}
.dr-card.s-en-cours{border-left-color:var(--sky)}.dr-card.s-suspendue{border-left-color:var(--amber)}.dr-card.s-terminée{border-left-color:var(--green)}.dr-card.s-annulée{opacity:.75}
.dr-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dr-top>div{flex:1;min-width:0}
.dr-tk{font-family:var(--font-display);font-size:18px;margin-right:8px}.dr-p{font-size:12.5px;color:var(--text-soft)}
.dr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;padding:10px 12px;border-radius:12px;background:var(--bg-abyss);border:1px solid var(--border-subtle)}
.dr-grid>div{display:flex;flex-direction:column;gap:2px;min-width:0}.dr-grid .full{grid-column:1/-1}
.dr-grid>div>span{font-size:10.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.4px}.dr-grid b{font-size:13px;overflow-wrap:anywhere}.dr-grid b.bad{color:var(--amber)}
.dr-grid b small{font-weight:500;color:var(--text-dim)}
.dr-act{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.dr-act .btn{flex:1 1 calc(50% - 6px)}
.dr-an{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.dr-a{padding:9px 11px;border-radius:10px;background:rgba(255,190,61,.07);border:1px solid rgba(255,190,61,.3);font-size:12.5px;display:flex;flex-direction:column;gap:5px}
.dr-a.open{border-color:var(--amber)}
.dr-a input{min-height:40px;border-radius:10px;background:var(--bg-abyss);border:1px solid var(--border);color:var(--text);padding:6px 10px;font:inherit;font-size:13px;width:100%}
.dr-dec{display:flex;gap:6px}.dr-dec input{flex:1}
.dr-bil{margin-top:8px;font-size:12.5px;color:var(--text-soft)}
.dr-upd{margin-top:6px;font-size:11px;color:var(--text-dim)}
.lnk{background:none;border:none;color:var(--sky);font:inherit;text-decoration:underline;cursor:pointer;padding:0}
.h-row .h-type{font-size:11px;font-weight:700;color:var(--sky);background:var(--sky-soft);padding:2px 8px;border-radius:999px}
#drDlg .fields{grid-template-columns:1fr}
#drDlg .opt{min-height:42px;font-size:12.5px;padding:6px 10px}
.bc-info .tag,.dr-tbl .tag{white-space:normal;display:inline-block;line-height:1.3;max-width:100%}
.bc-top .tag,.bc-top .cls-b{flex:none}
.dr-act .btn{white-space:normal;line-height:1.2}
#drDlg{border:1px solid var(--border-strong);border-radius:16px;background:var(--bg-elevated,#121d34);color:var(--text);padding:18px;width:min(440px,94vw);max-height:90vh;overflow:auto}
#drDlg::backdrop{background:rgba(3,6,14,.6)}#drDlg h3{margin:0 0 6px;font-size:16px}#drDlg .btn-row{display:flex;gap:8px;justify-content:flex-end}

/* 1.9.3 : code réglages */
.cfg-bar{position:fixed;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + 62px);z-index:60;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;border-radius:999px;background:var(--navy-2,#12233f);border:1px solid var(--amber,#f5a524);color:var(--amber,#f5a524);font-size:12.5px;font-weight:600;white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.35)}
.cfg-bar[hidden]{display:none}
.cfg-bar .btn{min-height:30px;padding:4px 12px}
details.cfg-more>summary{font-weight:600}

/* 1.9.4 : fabrication simplifiée (étapes, résumé du fond, carte de résultat collée en bas) */
.bl-steps{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:10px 0 2px;padding-bottom:2px}
.bl-steps::-webkit-scrollbar{display:none}
.bl-steps .chip{padding:6px 10px;font-size:11.5px;display:inline-flex;align-items:center;gap:5px}
.bl-steps .chip b{font-family:var(--mono);font-size:11px}
.bl-steps .chip.done{color:var(--green);border-color:rgba(46,232,143,.35)}
.bl-steps .chip.bad{color:var(--red);border-color:rgba(255,77,106,.45)}
.bl-sum{margin-top:8px;font-family:var(--mono);font-size:12.5px;color:var(--text-soft)}
.bl-sum:empty{display:none}
#heelMore{margin-top:6px}
#rcpPred{margin:8px 0 0}#rcpPred:empty{display:none}
.bl-params,.bl-corr{margin:2px 0}
.bl-track{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* 1.46 : pilotage de la fabrication */
.fab-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-width:0}
.fab-head .kpi-sub{margin:0;min-width:0}
.fab-st{flex:none;padding:5px 11px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.02em;border:1px solid var(--border);color:var(--text-dim);background:var(--bg-surface)}
.fab-st.info{color:var(--cyan);border-color:rgba(0,217,255,.45);background:rgba(0,217,255,.08)}
.fab-st.warn{color:var(--amber);border-color:rgba(255,184,0,.45);background:rgba(255,184,0,.08)}
.fab-st.ok{color:var(--green);border-color:rgba(0,214,143,.45);background:rgba(0,214,143,.08)}
.fab-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fab-btns[data-n="1"]{grid-template-columns:1fr}.fab-btns:empty{display:none}
.fab-btns .btn{min-height:48px;font-weight:700}
.fab-btns .btn.warn{color:var(--amber);border-color:rgba(255,184,0,.5)}
.fab-ops:empty{display:none}.fab-ops{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.fab-oph{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-mute)}
.fab-op{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid var(--border-subtle);border-radius:10px}
.fab-op small{display:block;color:var(--text-dim);font-size:11.5px;margin-top:3px}
.fab-opa{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fab-log:empty{display:none}.fab-log{list-style:none;margin:12px 0 0;padding:0 0 0 12px;border-left:2px solid var(--border);display:flex;flex-direction:column;gap:6px;font-size:12.5px}
.fab-log li{color:var(--text-soft)}.fab-log b{font-family:var(--mono);margin-right:4px;color:var(--text)}.fab-log small{display:block;color:var(--text-mute);font-size:11px}
#lrCmp:empty{display:none}
/* collée au-dessus de la barre d'onglets : la marge basse de .content (barre + 40 px) est déjà déduite par le navigateur */
.bl-res{position:sticky;bottom:-24px;z-index:20;margin-top:6px;border-color:var(--border-strong);box-shadow:var(--shadow);background:var(--bg-elevated)}
.bl-res-top{display:flex;align-items:center;gap:12px;margin-bottom:10px;min-width:0}
.bl-verdict{flex:none;min-width:68px;text-align:center;padding:8px 10px;border-radius:10px;font-family:var(--font-display);font-size:20px;font-weight:800;border:1px solid var(--border);color:var(--text-dim)}
.bl-verdict.ok{color:var(--green);border-color:rgba(46,232,143,.45);background:rgba(46,232,143,.08)}
.bl-verdict.marge{color:var(--amber);border-color:rgba(255,190,61,.45);background:rgba(255,190,61,.08);font-size:15px}
.bl-verdict.ko{color:var(--red);border-color:rgba(255,77,106,.45);background:rgba(255,77,106,.08)}
.bl-res-txt{min-width:0;flex:1}
.bl-res-txt>div{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text);overflow-wrap:anywhere}
.bl-res-txt small{display:block;font-size:11px;color:var(--text-dim);margin-top:2px}
.bl-ro{margin:0 0 6px}
#cfMsg{white-space:pre-line}
@media (min-width:1024px){.bl-res{bottom:0}}
#v-blend [hidden]{display:none!important}
.bl-res{padding:10px 12px}.bl-res-top{margin-bottom:8px}.bl-res .btn.primary{min-height:44px}
.bl-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;overflow:visible}
.bl-steps .chip{padding:7px 2px;font-size:10.5px;justify-content:center;gap:3px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 1.11 : circuit des eaux et vannes */
.circ{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:12px}
.circ-n{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:2px;padding:7px 10px;border-radius:12px;border:1px solid var(--border-strong);background:var(--bg-surface);min-width:0;max-width:100%}
.circ-n b{font-size:12.5px}.circ-n small{font-size:11px;color:var(--text-dim)}
.circ-n.end{cursor:default;border-style:dashed;background:transparent}.circ-n.end b{color:var(--sky)}
.circ-n.c-plein,.circ-n.c-haut{border-color:var(--amber)}.circ-n.c-plein{box-shadow:0 0 0 1px var(--red)}
.circ-p{font-style:normal;font-size:10.5px;color:var(--text-dim)}.circ-p.on{color:var(--green);font-weight:700}
.circ-a{font-size:16px;color:var(--sky);font-weight:800}.circ-a.shut{color:var(--red)}
.circ-sep{flex-basis:100%;height:0}
.van-list{display:flex;flex-direction:column;gap:8px}
.van-row{display:flex;flex-direction:column;gap:4px}.van-row>span{font-size:12.5px;color:var(--text-dim);font-weight:600}
.van-row .opt{min-height:40px;font-size:12.5px}
.bc-v{display:flex;flex-wrap:wrap;gap:4px}.bc-v .pp-b{font-size:10.5px}
.bcfg-c{margin-top:6px}.bcfg-f select{min-height:40px;border-radius:10px;background:var(--bg-abyss);border:1px solid var(--border);color:var(--text);padding:6px 10px;font:inherit;font-size:13.5px;width:100%}
.bc-v .pp-b{white-space:normal;overflow-wrap:anywhere}

/* 1.12 : alarmes d'arrêt des opérations */
.al-bar{position:fixed;left:0;right:0;top:0;z-index:90;display:flex;align-items:center;gap:8px;padding:6px 10px;box-sizing:border-box;
  background:#4a0b18;border-bottom:2px solid var(--red);box-shadow:0 6px 24px rgba(0,0,0,.55);color:#fff;animation:alPulse 1s ease-in-out infinite}
.al-bar.pre{background:#3e2c05;border-color:var(--amber);animation:none}
.al-bar[hidden]{display:none}
.al-ic{font-size:22px;line-height:1}
.al-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.al-tx b,.al-tx span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.al-tx b{font-size:14px}.al-tx span{font-size:11.5px;color:#f3d6dc}
.al-bar.pre .al-tx span{color:#f5e6c4}
.al-btns{display:flex;gap:6px}.al-btns .btn{min-height:38px;padding:0 10px}
@keyframes alPulse{50%{background:#7a1226}}
html.rx-still .al-bar{animation:none}
.al-cfg .chk{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13.5px}

/* ═══ 1.13 · Réception tanker et dossiers douaniers ═══ */
@media (max-width:1023px){.tabbar{left:6px;right:6px;padding:5px}.tabbar .tab{font-size:8.6px;letter-spacing:-.35px;white-space:nowrap}}
.dou-cmp td:first-child small{display:block;color:var(--text-dim);font-size:10.5px}
.dou-cmp td.num{font-size:11.5px}.dou-cmp{table-layout:fixed}.dou-cmp th:first-child{width:34%}.dou-cmp th{white-space:normal;vertical-align:bottom;overflow-wrap:anywhere;letter-spacing:.2px}.dou-cmp td{overflow-wrap:anywhere}.dou-cmp th small{display:block;font-size:9px;text-transform:none;letter-spacing:0;color:var(--text-mute)}.dou-cmp th.num{text-align:right}.dou-cmp td,.dou-cmp th{padding-left:4px;padding-right:4px}.dou-cmpx{display:grid;gap:4px;margin-top:8px;font-size:12.5px}.dou-cmpx b{color:var(--text-soft);font-weight:700}
.tkr-pick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin:12px 0}
.tkr-pick .chips{flex:1;min-width:0}
.tkr-pick .chip small{font-family:var(--font);font-weight:500;color:var(--text-dim);margin-left:4px}
.tkr-arch{max-width:220px;min-height:36px;font-size:12px}
.tkr-empty{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 18px}
.tkr-ship{display:inline-flex;width:44px;height:38px;color:var(--cyan);filter:drop-shadow(0 0 10px rgba(62,230,255,.35))}
.tkr-ship svg{width:100%;height:100%}
.tkr-head{display:grid;gap:14px}
.tkr-hl{display:flex;align-items:center;gap:12px}
.tkr-h1{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.3px;margin-bottom:4px}
.tkr-dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:0}
.tkr-dl div{min-width:0}.tkr-dl dt{font-size:10.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.8px;font-weight:700}
.tkr-dl dd{margin:2px 0 0;font-weight:600;font-size:13.5px;overflow-wrap:anywhere}
.tkr-hact{display:flex;flex-wrap:wrap;gap:8px}
.tkr-steps{display:flex;align-items:stretch;gap:6px;margin:12px 0;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.tkr-st{display:flex;align-items:center;gap:10px;flex:1 0 150px;padding:10px 12px;border-radius:14px;background:rgba(16,26,46,.6);border:1px solid var(--border-subtle)}
.tkr-st i{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:800;font-family:var(--font-display);background:var(--bg-raised);color:var(--text-dim);border:1px solid var(--border)}
.tkr-st b{display:block;font-size:12.5px}.tkr-st small{color:var(--text-dim);font-size:11px}
.tkr-st.done i{background:var(--green);color:#04150c;border-color:transparent;box-shadow:0 0 16px rgba(46,232,143,.35)}
.tkr-st.cur{border-color:rgba(62,230,255,.45);background:linear-gradient(120deg,rgba(62,230,255,.10),rgba(79,139,255,.06))}
.tkr-st.cur i{background:var(--iris);color:#04101c;border-color:transparent;box-shadow:0 0 18px rgba(62,230,255,.45)}
.tkr-st.cur b{color:var(--cyan)}
.tkr-sep{align-self:center;color:var(--text-mute);font-size:18px;flex:none}
.tkr-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.tkr-grid>.card{margin:0}
.tkr-tw{overflow-x:auto;margin:0 -4px}
.tkr-t{width:100%;border-collapse:collapse;font-size:12.5px}
.tkr-t th{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);text-align:left;padding:6px 6px;border-bottom:1px solid var(--border);white-space:nowrap}
.tkr-t td{padding:7px 6px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}
.tkr-t td.num{text-align:right;font-family:var(--mono);white-space:nowrap}
.tkr-t tr.on td{background:rgba(62,230,255,.07)}.tkr-t tr.on td:first-child{color:var(--cyan);font-weight:800}
.tkr-t tr.msd td{color:var(--text-soft);font-style:italic}
.tkr-t tr.tot td{font-weight:800;border-top:1px solid var(--border-strong)}
.tkr-t .tag{white-space:normal;text-align:left}
.tkr-t .link-btn.tag{cursor:pointer;font:inherit;font-size:9.5px;font-weight:800}
.tkr-ra{white-space:nowrap;text-align:right}.tkr-ra .btn{margin-left:4px}
.tkr-curb{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;align-items:start}
.tkr-vis{grid-row:span 2}
.tkr-tank{width:100%;height:auto;display:block}
.tkr-tank .tk-sh{fill:rgba(16,26,46,.85);stroke:var(--border-strong);stroke-width:1.5}
.tkr-tank .tk-liq{opacity:.85;transition:y .6s var(--out),height .6s var(--out)}
.tkr-tank .tk-top{fill:rgba(148,178,230,.18);stroke:var(--border-strong)}
.tkr-tank .tk-rib{stroke:rgba(255,255,255,.12);stroke-width:1}
.tkr-lv{display:flex;flex-direction:column;gap:5px;min-width:0}
.tkr-lv>small{color:var(--text-dim);font-size:11.5px}
.tkr-lv>b{font-family:var(--font-display);font-size:30px;line-height:1;letter-spacing:-.6px}
.tkr-lv .tag{align-self:flex-start}
.tkr-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;grid-column:1/-1}
.tkr-kv.k4{grid-template-columns:repeat(2,minmax(0,1fr))}
.tkr-kv div{background:rgba(16,26,46,.55);border:1px solid var(--border-subtle);border-radius:12px;padding:8px 10px;min-width:0}
.tkr-kv dt{font-size:10.5px;color:var(--text-dim)}.tkr-kv dd{margin:2px 0 0;font-family:var(--mono);font-weight:700;font-size:14.5px;overflow-wrap:anywhere}
.tkr-warn{color:var(--amber);margin:8px 0 0}
.tkr-pg{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;align-items:center;margin-top:8px}
.tkr-pg dl{margin:0;display:grid;gap:8px}.tkr-pg dt{font-size:11px;color:var(--text-dim)}.tkr-pg dd{margin:0;font-family:var(--mono);font-weight:700;font-size:16px}
.tkr-donut{width:120px;height:120px}
.tkr-donut .dn-bg{fill:none;stroke:rgba(148,178,230,.14);stroke-width:12}
.tkr-donut .dn-fg{fill:none;stroke:url(#rxIris);stroke:var(--green);stroke-width:12;stroke-linecap:round;transition:stroke-dasharray .8s var(--out)}
.tkr-donut text{fill:var(--text);font-family:var(--font-display);font-weight:700;font-size:17px}
.tkr-states{display:grid;gap:8px}
.tkr-sr{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border-subtle)}
.tkr-sr:last-child{border-bottom:none}.tkr-sr b{display:block}.tkr-sr small{color:var(--text-dim);font-family:var(--mono);font-size:11.5px}
.tkr-al{display:grid;gap:6px}
.tkr-ai{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:8px;align-items:start;padding:7px 0;border-bottom:1px solid var(--border-subtle)}
.tkr-ai:last-child{border-bottom:none}
.tkr-ai i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:12px;background:rgba(255,190,61,.16);color:var(--amber)}
.tkr-ai.ok i{background:rgba(46,232,143,.16);color:var(--green)}.tkr-ai.danger i{background:rgba(255,77,106,.18);color:var(--red)}
.tkr-ai b{font-size:12.5px;display:block}.tkr-ai small{color:var(--text-dim);font-size:11.5px}.tkr-ai .mono{font-size:11px;color:var(--text-mute)}
.tkr-nh{margin:8px 0}
.tkr-chk{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:6px}
.tkr-chk li{display:flex;gap:8px;align-items:center;font-size:12.5px}
.tkr-chk i{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:900;flex:none}
.tkr-chk li.ok i{background:var(--green);color:#04150c}.tkr-chk li.no i{background:rgba(255,77,106,.2);color:var(--red)}
.tkr-relf{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border)}
.tkr-cw{position:relative;height:220px;margin-top:8px}
.tkr-conf{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin:10px 0 4px;font-size:12px;color:var(--text-dim)}
.tkr-conf .bar{height:8px}.tkr-conf b{color:var(--text)}
.bar-fill.c-bonne{background:var(--green)}.bar-fill.c-moyenne{background:var(--amber)}.bar-fill.c-faible,.bar-fill.c-non{background:var(--red)}
.tkr-seq{display:flex;align-items:center;gap:6px;overflow-x:auto;margin-top:10px;padding-bottom:2px}
.tkr-sq{flex:none;min-width:92px;padding:8px 10px;border-radius:12px;border:1px solid var(--border);background:rgba(16,26,46,.6);text-align:center}
.tkr-sq b{display:block}.tkr-sq small{display:block;color:var(--text-dim);font-size:10.5px}.tkr-sq .mono{font-size:12px}
.tkr-sq.on{border-color:rgba(46,232,143,.55);background:rgba(46,232,143,.12)}.tkr-sq.on small{color:var(--green)}
.tkr-sq.done{opacity:.65}
.tkr-arr{font-style:normal;color:var(--cyan);font-weight:800}
.tkr-qb{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.tkr-qb .btn{min-height:44px}
.tkr-er{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:6px 0;border-bottom:1px solid var(--border-subtle);font-size:12.5px}
.tkr-er:last-child{border-bottom:none}.tkr-er .mono{color:var(--text-dim);font-size:11.5px;white-space:nowrap}
.chip.dim{opacity:.45}
.tkr-tkpick .chip.active::after{content:attr(data-n);margin-left:6px;font-family:var(--mono);font-size:10px;background:var(--cyan);color:#04101c;border-radius:999px;padding:0 6px}
/* Dossiers */
.dou-list{display:grid;gap:10px}
.dou-card{display:grid;gap:6px;text-align:left;cursor:pointer;color:inherit;font:inherit;width:100%}
.dou-card:hover{border-color:var(--border-strong)}
.dou-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dou-top b{margin-right:4px;font-size:14px}
.dou-mid{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.dou-card small{color:var(--text-dim);font-size:11.5px}
.dou-hd{display:grid;gap:10px}
.dou-steps{display:flex;flex-wrap:wrap;gap:4px}
.dou-steps span{font-size:10.5px;font-weight:700;padding:4px 8px;border-radius:999px;background:rgba(16,26,46,.6);color:var(--text-mute);border:1px solid var(--border-subtle)}
.dou-steps span.done{color:var(--green);border-color:rgba(46,232,143,.3)}
.dou-steps span.cur{color:#04101c;background:var(--iris);border-color:transparent}
.dou-hint{margin:0}
.dou-ed .card+.card{margin-top:12px}
.dou-sec{padding:12px 0;border-bottom:1px solid var(--border-subtle)}
.dou-sec:last-of-type{border-bottom:none}
.dou-sec h4{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:var(--cyan);font-weight:800}
.dou-ech,.dou-doc{padding:10px;border:1px solid var(--border-subtle);border-radius:12px;margin-bottom:8px;background:rgba(16,26,46,.4)}
.dou-pj{display:grid;gap:6px;margin-top:8px}
.dou-pjr{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12.5px;flex-wrap:wrap}
.dou-pjr small{color:var(--text-dim)}
.dou-up{cursor:pointer;justify-self:start}
.dou-res .tkr-t td:first-child{color:var(--text-soft)}
.dou-res.prev{border-left:3px solid var(--amber);padding-left:8px}
.dou-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--text-dim);margin-top:8px}
.miss{color:var(--amber)}
.dou-corr{padding:8px 10px;border-radius:10px;background:rgba(255,190,61,.08);border:1px solid rgba(255,190,61,.25);margin-bottom:8px;display:grid;gap:3px;font-size:12px}
.dou-corr small{color:var(--text-soft)}.dou-corr .mono{font-size:11.5px}
.dou-act{display:flex;flex-wrap:wrap;gap:8px;padding-top:12px}
.dou-ed.ro input:disabled,.dou-ed.ro select:disabled,.dou-ed.ro textarea:disabled{opacity:.85}
.dou-cfg{margin-top:14px}
.dou-cfg .chk{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:6px 0}
@media (min-width:720px){
  .tkr-head{grid-template-columns:minmax(0,1fr)}
  .tkr-dl{grid-template-columns:repeat(4,minmax(0,1fr))}
  .tkr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tkr-plan,.tkr-rel{grid-column:1/-1}
  .tkr-kv.k4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (min-width:1024px){
  .tkr-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
  .tkr-plan{grid-column:span 5}.tkr-cur{grid-column:span 4}.tkr-prog{grid-column:span 3}
  .tkr-states{grid-column:span 3}.tkr-al{grid-column:span 4}.tkr-next{grid-column:span 5}
  .tkr-rel{grid-column:span 8}.tkr-ch{grid-column:span 4}
  .tkr-est{grid-column:span 5}.tkr-chg{grid-column:span 3}.tkr-q{grid-column:span 4}.tkr-ev{grid-column:span 12}
  .tkr-kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tkr-pg{grid-template-columns:110px minmax(0,1fr)}
}
.dou-cmp{min-width:0}
.dou-res .tkr-t{min-width:0;table-layout:fixed}.dou-res .tkr-t th{white-space:normal}.dou-res .tkr-t th:nth-child(1){width:34%}.dou-res .tkr-t th:nth-child(2){width:24%}.dou-res .tkr-t th:nth-child(3){width:13%}
.dou-res .tkr-t td{overflow-wrap:anywhere}.dou-res .tkr-t td:nth-child(4){font-size:11px;color:var(--text-dim)}.dou-res .tkr-t td.num{font-size:11.5px;white-space:normal}
.dou-cmp th:first-child{width:38%}.dou-cmp td:first-child{font-size:12px;overflow-wrap:break-word}.dou-cmp td.num{font-size:11px}
.dou-cmp td:first-child,.dou-res .tkr-t td{white-space:normal}.dou-cmp th small{font-size:8.5px}
.tkr-plan .tkr-t{min-width:0}.tkr-plan .tkr-t td{white-space:normal;padding:8px 5px}.tkr-plan .tkr-t th{padding:6px 5px}@media (max-width:480px){.tkr-plan .tkr-t th:nth-child(3),.tkr-plan .tkr-t tr:not(.tkr-ra-row) td:nth-child(3){display:none}}
.tkr-ra-row td{padding-top:0!important;border-bottom:1px solid var(--border-subtle)}.tkr-ra{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.tkr-t tr:has(+ .tkr-ra-row) td{border-bottom:none}
.tkr-t tr.on + .tkr-ra-row td{background:rgba(62,230,255,.07)}

/* ═══ 1.14 · Réservoirs en mouvement, arrêts automatiques, journal du quart ═══ */
.card.tank{position:relative}
.tk-mv{position:absolute;top:6px;right:6px;z-index:2;display:inline-flex;align-items:center;gap:3px;padding:2px 6px 2px 5px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.2;background:rgba(10,18,34,.82);border:1px solid currentColor}
.tk-mv i{font-style:normal;display:inline-block;animation:mvIn 1.1s ease-in-out infinite}
.tk-mv small{font-size:9.5px;font-weight:700;font-family:var(--mono)}
.tk-mv.mv-in{color:var(--green,#34d399)}.tk-mv.mv-out{color:var(--amber)}.tk-mv.mv-both{color:var(--cyan)}
.tk-mv.mv-out i{animation-name:mvOut}.tk-mv.mv-both i{animation-name:mvBoth}
.tk-mv.inl{position:static;margin-left:6px;vertical-align:middle;padding:1px 6px}
@keyframes mvIn{0%,100%{transform:translateY(2px);opacity:.55}50%{transform:translateY(-2px);opacity:1}}
@keyframes mvOut{0%,100%{transform:translateY(-2px);opacity:.55}50%{transform:translateY(2px);opacity:1}}
@keyframes mvBoth{0%,100%{opacity:.5}50%{opacity:1}}
.tk-flow{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,0) 0 6px,rgba(255,255,255,.18) 6px 8px);animation:mvFlow 1.6s linear infinite;pointer-events:none}
.tank.moving.mv-out .tk-flow{animation-direction:reverse}
@keyframes mvFlow{from{background-position:0 0}to{background-position:0 -16px}}
.tank.moving{box-shadow:0 0 0 1px rgba(62,230,255,.25),0 0 18px rgba(62,230,255,.12)}
html.rx-still .tk-mv i,html.rx-still .tk-flow{animation:none}
.al-site{margin-top:10px;padding-top:10px;border-top:1px solid var(--border-subtle)}
.rcp-zone{margin-bottom:6px}.rcp-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.sj-list{display:flex;flex-direction:column}
.sj-row{display:grid;grid-template-columns:44px 20px 1fr;gap:6px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--border-subtle);font-size:12.5px}
.sj-row:last-child{border-bottom:none}.sj-row .mono{color:var(--text-dim);font-size:11.5px}.sj-row i{font-style:normal;text-align:center}.sj-row small{color:var(--text-dim)}
.sj-row.sj-stop span:last-child{color:var(--amber);font-weight:700}.sj-row.sj-anom span:last-child{color:var(--red)}
.tk-moving{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px}
.tkm-l{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-dim);font-weight:700;margin-right:2px}
.chip.tkm i{font-style:normal;margin-right:4px;display:inline-block;animation:mvIn 1.1s ease-in-out infinite}
.chip.tkm.mv-in{border-color:var(--green,#34d399);color:var(--green,#34d399)}.chip.tkm.mv-out{border-color:var(--amber);color:var(--amber)}.chip.tkm.mv-out i{animation-name:mvOut}
.chip.tkm small{font-family:var(--mono);margin-left:4px;opacity:.9}
/* 1.14.1 : bases en m³ ou en %, sources coulée/transfert */
.rcp-unit{margin-bottom:10px}
.rcp-unit button small{font-family:var(--font);font-weight:500;letter-spacing:0}
.rcp-m3{margin-bottom:6px}
.rcp-step select optgroup{font-style:normal;color:var(--text-dim)}
.rcp-step .kpi-sub,#rcpM3Sum{display:block;line-height:1.5}
.fx-pr{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.fx-pr .btn{flex:1 1 auto}
#nHint{display:block;line-height:1.5}
.tank .tk-h{font-size:15px;font-weight:700;color:var(--cyan);letter-spacing:.2px}
/* 1.16 : équipe et passation du quart */
.qz-card{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.qz-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.qz-h b{display:block;font-size:15px}.qz-h small{color:var(--text-dim);font-size:12px}
.qz-team{display:flex;flex-wrap:wrap;gap:6px}
.qz-p{display:flex;flex-direction:column;padding:6px 10px;border-radius:10px;background:var(--surface-2,rgba(255,255,255,.04));border:1px solid var(--border-subtle);min-width:0}
.qz-p b{font-size:13px}.qz-p small{font-size:11px;color:var(--text-dim)}.qz-p.chef{border-color:var(--cyan)}.qz-p.chef small{color:var(--cyan)}
.qz-warn{padding:8px 10px;border-radius:10px;border:1px solid var(--amber);background:rgba(255,184,0,.08);font-size:12.5px;line-height:1.45}
.qz-warn .btn{margin-top:6px}
.qz-hist{display:flex;flex-direction:column}
.qz-hr{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-subtle)}.qz-hr:last-child{border-bottom:none}
.qz-hr b{display:block;font-size:13px}.qz-hr small{display:block;color:var(--text-dim);font-size:11.5px}.qz-hr .qz-obs{font-style:italic}
.section-label.sm{font-size:12.5px;margin-top:2px}
.qz-m{display:grid;grid-template-columns:1fr 1fr 30px;gap:6px;margin-bottom:6px}.qz-m input{min-width:0}
.qz-pass{font-size:12.5px;line-height:1.5;display:flex;flex-direction:column;gap:4px;padding:8px 10px;border-radius:10px;background:var(--surface-2,rgba(255,255,255,.04))}
.qz-bil{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}.qz-bil div{display:flex;flex-direction:column;align-items:center;padding:6px;border-radius:10px;background:var(--surface-2,rgba(255,255,255,.04))}
.qz-bil b{font-size:17px;color:var(--cyan)}.qz-bil span{font-size:11px;color:var(--text-dim);text-align:center}
.qz-line{font-size:12px;color:var(--text-soft)}.qz-line.ok{color:var(--green,#3ddc97)}.qz-line.warn{color:var(--amber)}

/* ═══ 1.17 · Tableau de bord des opérations : tuiles colorées, feuille claire, cartes par catégorie, animations ═══ */
#v-dash,#v-shift{--ink:#13203a;--ink2:#56637d;--ink3:#8a96ad;--line:#e3e8f1;--paper:#f5f7fb;--card:#fff}
.db-head{margin:6px 2px 0}.db-sub{font-size:12.5px;color:var(--text-soft)}
.db-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.db-kpi{position:relative;display:grid;grid-template-columns:1fr auto;grid-template-areas:"ic ic" "l l" "n c" "s s";align-items:end;text-align:left;padding:12px 12px 11px;border:0;border-radius:14px;cursor:pointer;color:#fff;font:inherit;min-height:88px;overflow:hidden;
  background:linear-gradient(150deg,color-mix(in srgb,var(--kc) 88%,#fff 12%),color-mix(in srgb,var(--kc) 80%,#000 20%));box-shadow:0 10px 24px -12px color-mix(in srgb,var(--kc) 70%,transparent),inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .25s var(--spring),box-shadow .25s;animation:dbUp .5s var(--out) both;animation-delay:calc(var(--i)*55ms)}
.db-kpi::after{content:'';position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 70%);pointer-events:none}
.db-kpi.zero{filter:saturate(.75)}
.db-ki{grid-area:ic;width:22px;height:22px;display:block;margin-bottom:4px}.db-ki svg{width:100%;height:100%}
.db-kpi span{grid-area:l;font-size:11px;font-weight:600;line-height:1.2}
.db-kpi b{grid-area:n;font-family:var(--font-display);font-size:24px;font-weight:700;line-height:1.05;margin-top:2px}
.db-kpi em{grid-area:s;font-style:normal;font-size:10.5px;opacity:.9}
.db-kc{grid-area:c;font-style:normal;font-size:22px;opacity:.75;transition:transform .2s}
.db-kpi:hover{transform:translateY(-3px)}.db-kpi:hover .db-kc{transform:translateX(3px)}.db-kpi:active{transform:scale(.97)}
.db-kpi.on{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--kc),0 12px 28px -10px var(--kc)}
.db-kpi.hot .db-ki{animation:dbPulse 1.8s ease-in-out infinite}
@keyframes dbUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes dbPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
/* Feuille claire des opérations */
.db-sheet,.db-bottom .db-panel{background:var(--paper);color:var(--ink);border-radius:18px;box-shadow:0 20px 50px -24px rgba(0,0,0,.7)}
.db-sheet{padding:14px 12px 12px}
.db-shh{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.db-sht{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.db-sht h2{font-family:var(--font-display);font-size:19px;font-weight:700;color:var(--ink);margin:0}
.db-shi{width:30px;height:30px;color:#1d3a6e;display:inline-flex}.db-shi svg{width:100%;height:100%}
.db-pill{background:#16a05a;color:#fff;font-size:12px;font-weight:600;padding:4px 11px;border-radius:999px}
.db-link{background:none;border:0;color:#2563d9;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;padding:4px}
.db-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:6px}
.db-search{grid-column:1/-1;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 10px}
.db-search svg{width:16px;height:16px;color:var(--ink3);flex:none}
.db-search input{border:0!important;background:transparent!important;color:var(--ink)!important;box-shadow:none!important;width:100%;min-width:0;padding:9px 0!important;font-size:13px}
.db-tools select{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:10px;min-width:0;width:100%;font-size:12.5px;padding:8px 10px}
.db-upd{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:10px;color:var(--ink2);font:inherit;font-size:12px;padding:8px;cursor:pointer}
.db-upd svg{width:15px;height:15px}.db-upd:active svg{transform:rotate(-120deg);transition:transform .3s}.db-upd b{color:var(--ink)}
.db-cf{font-size:11.5px;color:var(--ink3);margin:2px 2px 8px}
.db-ops{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
.db-op{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 12px 10px;color:var(--ink);box-shadow:0 4px 14px -8px rgba(19,32,58,.25);transition:box-shadow .25s,transform .25s}
.db-op:hover{box-shadow:0 12px 28px -12px rgba(19,32,58,.35);transform:translateY(-1px)}
.db-op.new{animation:dbUp .45s var(--out) both}
.db-op[data-st="ANOMALIE"]{border-color:#f3b4be;box-shadow:0 0 0 1px #f3b4be,0 4px 14px -8px rgba(224,49,75,.35)}
.db-op[data-st="À SURVEILLER"]{border-color:#f7d9a8}
.db-oh{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start}
.db-oi{width:46px;height:46px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(145deg,color-mix(in srgb,var(--cc) 85%,#fff 15%),var(--cc));box-shadow:0 6px 14px -6px var(--cc)}
.db-oi svg{width:24px;height:24px}
.db-ot{min-width:0;display:flex;flex-direction:column;gap:1px}
.db-ok{font-size:12.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--cc)}
.db-opp{font-size:14.5px;color:var(--ink)}
.db-ot small{font-size:12px;color:var(--ink2)}.db-ot small b{color:var(--ink);font-weight:600}
.db-rz{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;margin-left:2px;vertical-align:1px}
.db-rz.ok{background:#dff5e8;color:#127a43}.db-rz.w{background:#fff1d6;color:#a5620a}
.db-stp{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:5px 10px;border-radius:999px;white-space:nowrap;color:#fff;background:#16a05a}
.db-stp i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 0 currentColor}
.db-stp.run i{animation:dbDot 1.6s ease-out infinite}
.db-stp.bad{background:#e0314b}.db-stp.bad i{animation:dbDot 1.2s ease-out infinite}
.db-stp.warn{background:#f08a12}.db-stp.wait{background:#e8ecf3;color:#56637d}.db-stp.ok{background:#dff5e8;color:#127a43}
@keyframes dbDot{0%{box-shadow:0 0 0 0 rgba(255,255,255,.75)}100%{box-shadow:0 0 0 7px rgba(255,255,255,0)}}
.db-id{display:flex;align-items:center;gap:8px;margin:8px 0 6px;padding-left:56px;flex-wrap:wrap}
.db-id b{font-size:11.5px;color:var(--ink3);font-weight:600}
.db-alc{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:#b9660b}.db-alc.d{color:#d02a43}.db-alc svg{width:13px;height:13px}
.db-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:0 14px}
.db-r{display:grid;grid-template-columns:auto 1fr auto;column-gap:6px;align-items:baseline;padding:3px 0;font-size:12.5px;border-bottom:1px dashed #edf1f7}
.db-r:last-child{border-bottom:0}
.db-ri{display:none}
.db-rl{color:var(--ink2)}.db-rl::after{content:' :'}
.db-rv{font-weight:700;color:var(--ink);text-align:right;overflow-wrap:anywhere}
.db-rs{grid-column:1/-1;font-size:10.5px;color:var(--ink3);line-height:1.3;text-align:right}
.db-r.crit .db-rv{color:#d02a43}.db-r.warn .db-rv{color:#c26a00}.db-r.ok .db-rv{color:#127a43}.db-r.up .db-rv{color:#127a43}.db-r.down .db-rv{color:#2563d9}
.db-na{color:var(--ink3);font-weight:500}
.db-ex{margin-top:6px;padding:6px 10px;border-radius:10px;background:#f4f7fc}
.db-ex .db-r{border-bottom-color:#e6ecf5}
.db-ex .db-ri{display:inline-flex;width:14px;height:14px;color:var(--cc);align-self:center}.db-ex .db-ri svg{width:100%;height:100%}
.db-ex .db-r:not(:has(.db-ri)){padding-left:20px}
.db-warn{display:flex;gap:6px;align-items:center;margin-top:8px;padding:7px 10px;border-radius:10px;background:#fdecef;color:#b3243a;font-size:12px;font-weight:600}
.db-warn svg{width:15px;height:15px;flex:none}
.db-note{margin-top:6px;font-size:11.5px;color:var(--ink2)}
.db-prog{display:flex;align-items:center;gap:10px;margin:10px 0 6px}
.db-prog b{font-family:var(--mono);font-size:12px;min-width:40px;text-align:right;color:var(--ink)}
.db-bar{flex:1;height:9px;border-radius:999px;background:#e8edf5;overflow:hidden}
.db-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--cc) 70%,#fff),var(--cc));transition:width .8s var(--out)}
.db-op.live .db-bar i{background-image:linear-gradient(90deg,color-mix(in srgb,var(--cc) 70%,#fff),var(--cc)),repeating-linear-gradient(135deg,rgba(255,255,255,.28) 0 8px,transparent 8px 16px);background-blend-mode:overlay;background-size:100% 100%,32px 32px;animation:dbFlow 1.2s linear infinite}
.db-op.new .db-bar i{animation:dbFill 1s var(--out) both}
.db-op.new.live .db-bar i{animation:dbFill 1s var(--out) both,dbFlow 1.2s linear 1s infinite}
@keyframes dbFlow{to{background-position:0 0,32px 0}}
@keyframes dbFill{from{width:0}}
.db-op footer{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;padding-top:7px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink2)}
.db-op footer b{color:var(--ink);font-weight:600}
.db-go{margin-left:auto;background:#eef3fc;color:#2563d9;border:0;border-radius:8px;font:inherit;font-size:12px;font-weight:600;padding:5px 10px;cursor:pointer}
.db-more{width:100%;background:#fff;border:1px dashed #c5cfdf;color:#2563d9;border-radius:12px;padding:10px;font:inherit;font-weight:600;cursor:pointer}
.db-empty{font-size:12.5px;color:var(--ink3);padding:12px 4px}.db-empty.ok{color:#127a43}
/* Rangée du bas */
.db-bottom{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.db-panel{padding:12px}
.db-ph{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--ink)}
.db-ph em{font-style:normal;font-family:var(--font);font-size:11px;font-weight:600;color:#b9660b;background:#fff1d6;padding:2px 8px;border-radius:999px}
.db-ph .db-link{margin-left:auto}
.db-phi{width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex:none}.db-phi svg{width:18px;height:18px}
.c-red{background:#e0314b}.c-navy{background:#1d3a6e}.c-blue{background:#2f7bf6}.c-teal{background:#0fa3a8}
.db-alr{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:start;padding:8px 0;border-bottom:1px solid var(--line)}
.db-alr:last-child{border-bottom:0}.db-alr.acked{opacity:.55}
.db-sev{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:999px;color:#fff;background:#f08a12;white-space:nowrap}.db-sev.danger{background:#e0314b}.db-sev.info{background:#6b8bd6}
.db-alb{min-width:0}.db-alb b{display:block;font-size:12.5px;color:var(--ink);line-height:1.3}
.db-alb small{display:block;font-size:11px;color:var(--ink2);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-alm .new{color:#c26a00;font-weight:700}
.db-ala{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.db-ala .mono{font-size:11.5px;color:var(--ink2)}
.db-ack{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:#fff;color:#127a43;font-weight:700;cursor:pointer}
.db-ack:hover{background:#dff5e8}
#dbNxP{width:100%;margin-bottom:8px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12.5px}
.db-nxb{display:flex;align-items:center;gap:8px;margin-bottom:4px}.db-nxb b{font-size:17px;color:var(--ink)}.db-nxb .db-ri{display:inline-flex;width:22px;height:22px;color:#1d3a6e}.db-nxb .db-ri svg{width:100%;height:100%}.db-nxb .db-rz{margin-left:auto}
.db-nxd{margin-top:8px}.db-nxd summary{cursor:pointer;list-style:none;text-align:center;background:#1d3a6e;color:#fff;border-radius:10px;padding:9px;font-size:12.5px;font-weight:600}
.db-nxd summary::-webkit-details-marker{display:none}
.db-nxo{font-size:11.5px;color:var(--ink2);margin-top:8px}
.db-nxv{margin:4px 0 0;padding-left:16px;font-size:11.5px;color:#a5620a}
.db-nx2{display:flex;gap:8px;align-items:center;font-size:12px;padding:6px 0;border-top:1px solid var(--line);margin-top:6px}.db-nx2 b{color:var(--ink)}.db-nx2 .db-rz{margin-left:auto}
.db-foot{font-size:10.5px;color:var(--ink3);margin:8px 0 0}
.db-big{display:flex;flex-direction:column;gap:1px;margin-bottom:8px}.db-big small{font-size:11px;color:var(--ink2)}
.db-big b{font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--ink);line-height:1.1}
.db-cl{display:grid;gap:2px}
.db-cr{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;background:none;border:0;padding:5px 2px;font:inherit;font-size:12.5px;color:var(--ink);cursor:pointer;text-align:left;border-radius:6px}
.db-cr:hover{background:#eef3fc}.db-cr i{width:16px;height:4px;border-radius:2px;background:var(--cc)}.db-cr b{font-family:var(--mono);font-size:12px}.db-cr b.bad{color:#d02a43}
.db-sh{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3);margin:10px 0 4px;font-weight:700}
.db-li{font-size:11.5px;color:var(--ink2);margin:2px 0}.db-li.bad{color:#d02a43}.db-li b{color:var(--ink)}
/* Réception tanker (contenu fourni par le module tanker) sur fond clair */
.db-tkr .tkd{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin-bottom:8px;color:var(--ink)}
.tkd-top{display:flex;align-items:center;gap:10px}
.tkd-nm{flex:1;min-width:0}.tkd-nm b{display:block;font-size:14px;color:var(--ink)}.tkd-nm small{font-size:11px;color:var(--ink2)}
.tkd-ship{display:inline-flex;width:46px;height:38px;color:#0fa3a8;animation:tkdBob 3.2s ease-in-out infinite}
.tkd-ship svg{width:100%;height:100%}.tkd-ship.idle{animation:none;opacity:.6}
@keyframes tkdBob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(-1.5deg)}}
.tkd-pipe{height:6px;margin:8px 4px;border-radius:999px;background:#e8edf5;overflow:hidden}
.tkd-pipe.on i{display:block;height:100%;width:200%;background:repeating-linear-gradient(90deg,#0fa3a8 0 14px,transparent 14px 28px);opacity:.8;animation:tkdFlow 1.6s linear infinite}
@keyframes tkdFlow{to{transform:translateX(28px)}}
.tkd-tank{display:flex;gap:10px;align-items:center;margin:4px 0 8px}
.tkd-tank .tkr-tank{width:58px;height:76px;flex:none}
.db-tkr .tkr-tank .tk-sh{fill:#eef2f8;stroke:#c9d3e3}
.tkd-lv{display:flex;flex-direction:column;gap:1px;min-width:0}.tkd-lv small{font-size:11px;color:var(--ink2)}.tkd-lv b{font-size:14px;color:var(--ink)}
.tkd-h{font-size:20px;font-weight:700;color:var(--ink)}
.tkd-kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:6px 0 8px}.tkd-kv span{font-size:10.5px;color:var(--ink3)}.tkd-kv b{display:block;font-size:12.5px;color:var(--ink)}
.db-tkr .db-prog .db-bar i{background:#0fa3a8}
.db-tkr .btn{background:#eef3fc;color:#2563d9;border-color:transparent}
.tkd-empty{display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--ink2)}
/* 1.18 : sélecteur d'affichage, bandeau de flux, anneau d'avancement, pastilles clés, liste et chronologie */
.db-view{display:inline-flex;background:#e9eef6;border-radius:11px;padding:3px;gap:2px}
.db-view button{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--ink2);font:inherit;font-size:12px;font-weight:600;padding:6px 10px;border-radius:8px;cursor:pointer;transition:background .2s,color .2s,box-shadow .2s}
.db-view button svg{width:15px;height:15px}.db-view button.on{background:#fff;color:#1d3a6e;box-shadow:0 2px 8px -3px rgba(19,32,58,.3)}
@media (max-width:420px){.db-view button span{display:none}.db-view button{padding:7px 9px}}
.db-flow{display:grid;grid-template-columns:minmax(0,1fr) minmax(54px,.8fr) minmax(0,1fr) auto;align-items:center;gap:8px;margin:10px 0 8px;padding:10px;border-radius:12px;background:linear-gradient(180deg,#f7f9fd,#eef3fa);border:1px solid #e6ecf5}
.db-nd{display:flex;align-items:center;gap:8px;min-width:0}
.db-ndt{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.db-ndt small{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3)}
.db-ndt b{font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-ndt span{font-size:11px;color:var(--ink2);font-family:var(--mono);white-space:nowrap}
.db-g{position:relative;flex:none;width:22px;height:42px;border-radius:6px 6px 4px 4px;background:#fff;border:1.5px solid #c9d4e5;overflow:hidden}
.db-g i{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,color-mix(in srgb,var(--tc,#2f7bf6) 75%,#fff),var(--tc,#2f7bf6));transition:height .8s var(--out)}
.db-g u{position:absolute;left:-2px;right:-2px;height:0;border-top:1.5px dashed #f08a12}
.db-g.up i::after,.db-g.dn i::after{content:'';position:absolute;left:0;right:0;top:0;height:3px;background:rgba(255,255,255,.75);animation:dbLvl 1.6s ease-in-out infinite}
.db-viz{position:relative;flex:none;width:34px;height:50px;display:flex;align-items:flex-end;justify-content:center}
.db-viz svg{width:100%;height:100%;overflow:visible}
.db-nd.hi .db-g{border-color:#f0a23b}.db-nd.crit .db-g{border-color:#e0314b;box-shadow:0 0 0 3px rgba(224,49,75,.15)}
.db-nd.crit .db-ndt span{color:#c4223a;font-weight:600}
.db-nic{flex:none;width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1.5px solid #d6dfec;color:var(--cc)}
.db-nic svg{width:20px;height:20px}
.db-pipe{position:relative;height:8px;border-radius:999px;background:#dfe6f1;overflow:visible}
.db-pipe i{position:absolute;inset:0;border-radius:inherit}
.db-pipe.on i{background:repeating-linear-gradient(90deg,var(--cc) 0 10px,color-mix(in srgb,var(--cc) 35%,#fff) 10px 20px);background-size:40px 100%;animation:dbPipe .9s linear infinite}
.db-pipe::after{content:'';position:absolute;right:-6px;top:50%;transform:translateY(-50%);border:6px solid transparent;border-left:8px solid #c4cfdf;border-right:0}
.db-pipe.on::after{border-left-color:var(--cc)}
.db-pipe span{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);font-size:11px;font-weight:700;color:var(--ink);white-space:nowrap;font-family:var(--mono)}
.db-ring{--p:0;flex:none;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--cc) calc(var(--p)*1%),#dfe6f1 0);position:relative;transition:--p .8s}
.db-ring::before{content:'';position:absolute;inset:6px;border-radius:50%;background:#fff}
.db-ring b{position:relative;font-family:var(--mono);font-size:13px;color:var(--ink)}.db-ring b small{font-size:9px;margin-left:1px;color:var(--ink2)}
.db-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:6px}
.db-chip{background:#fff;border:1px solid var(--line);border-radius:10px;padding:7px 8px;display:flex;flex-direction:column;gap:1px;min-width:0}
.db-chip small{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3)}
.db-chip b{font-size:15px;font-weight:700;color:var(--ink);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-chip span{font-size:10.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-chip.warn{border-color:#f7d9a8;background:#fff9ef}.db-chip.warn b{color:#b46205}
.db-chip.crit{border-color:#f3b4be;background:#fff4f5}.db-chip.crit b,.db-chip.crit span{color:#c4223a}
.db-det{margin:2px 0 0}.db-det>summary{list-style:none;cursor:pointer;font-size:12px;font-weight:600;color:#2563d9;padding:6px 2px;display:flex;align-items:center;gap:6px}
.db-det>summary::-webkit-details-marker{display:none}.db-det>summary::before{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s}
.db-det[open]>summary::before{transform:rotate(45deg)}
.db-ops.v-list{gap:6px}
.db-lh{display:none}
.db-lr{display:grid;grid-template-columns:30px minmax(0,1fr) auto;grid-template-areas:"i m s" "i f f" "i p p";gap:3px 10px;align-items:center;text-align:left;width:100%;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--cc);border-radius:12px;padding:9px 10px;color:var(--ink);font:inherit;cursor:pointer;transition:box-shadow .2s,transform .2s}
.db-lr:hover{box-shadow:0 8px 20px -12px rgba(19,32,58,.4);transform:translateY(-1px)}
.db-lr[data-st="ANOMALIE"]{background:#fff8f9}
.db-lri{grid-area:i;width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--cc) 14%,#fff);color:var(--cc)}.db-lri svg{width:17px;height:17px}
.db-lrm{grid-area:m;display:flex;flex-direction:column;min-width:0}.db-lrm b{font-size:12.5px}.db-lrm small{font-size:11px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-lrf{grid-area:f;font-size:12px;color:var(--ink2)}.db-lrf i{font-style:normal;color:var(--cc);font-weight:700}
.db-lrp{grid-area:p;display:flex;align-items:center;gap:8px}.db-lrp .db-bar{height:6px}.db-lrp small{font-size:11px;color:var(--ink2);white-space:nowrap;font-family:var(--mono)}
.db-lrq,.db-lre{display:none}
.db-lr .db-stp{grid-area:s;font-size:10px;padding:4px 8px}
.db-lr .db-bar i{background:var(--cc)}
@media (min-width:900px){
  .db-lh{display:grid;grid-template-columns:30px 1.3fr 1.3fr 1.4fr .6fr .8fr auto;gap:10px;padding:0 12px 2px 16px;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3)}
  .db-lr{grid-template-columns:30px 1.3fr 1.3fr 1.4fr .6fr .8fr auto;grid-template-areas:"i m f p q e s";padding:8px 12px}
  .db-lrq,.db-lre{display:block;font-family:var(--mono);font-size:13px;font-weight:600}.db-lrq small{font-size:10px;color:var(--ink2);font-weight:400}
  .db-lre.bad{color:#c4223a}.db-lre .db-alc{display:block;font-family:var(--font);font-size:10.5px;font-weight:600;margin-top:2px}
}
.db-gt{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 10px 4px;overflow:hidden}
.db-gtx{position:relative;height:18px;margin-left:var(--gl,118px);border-bottom:1px solid var(--line)}
.db-gtx span{position:absolute;transform:translateX(-50%);font-size:10px;color:var(--ink3);font-family:var(--mono);white-space:nowrap}
.db-gtb{position:relative}
.db-gtl{position:absolute;top:0;bottom:0;left:var(--gl,118px);right:0;pointer-events:none;z-index:1}
.db-gtl u{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed #e3e8f1}
.db-gr{position:relative;z-index:0;display:grid;grid-template-columns:var(--gl,118px) 1fr;align-items:center;gap:0;width:100%;background:none;border:0;border-bottom:1px solid #f0f3f8;padding:6px 0;font:inherit;color:var(--ink);cursor:pointer;text-align:left}
.db-gr:hover{background:#f7f9fd}
.db-grl{display:flex;flex-direction:column;min-width:0;padding-right:8px}.db-grl b{font-size:11.5px}.db-grl small{font-size:10px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-grt{position:relative;height:22px}
.db-grb{position:absolute;top:2px;height:18px;border-radius:6px;background:color-mix(in srgb,var(--cc) 28%,#fff);border:1px solid color-mix(in srgb,var(--cc) 55%,#fff);overflow:hidden;min-width:6px}
.db-grb i{position:absolute;left:0;top:0;bottom:0;background:var(--cc);opacity:.85}
.db-grb.live i{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.25) 0 6px,transparent 6px 12px);background-color:var(--cc);animation:dbFlow 1.2s linear infinite}
.db-grb.plan{background:repeating-linear-gradient(135deg,#eef2f8 0 6px,#fff 6px 12px);border-style:dashed}
.db-grb.unk{border-right:2px dashed var(--cc);border-top-right-radius:0;border-bottom-right-radius:0;-webkit-mask:linear-gradient(90deg,#000 70%,transparent)}
.db-grb.late{border-color:#e0314b;box-shadow:0 0 0 2px rgba(224,49,75,.18)}
.db-grb em{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-style:normal;font-size:10px;font-weight:700;font-family:var(--mono);color:var(--ink)}
.db-now{position:absolute;top:-18px;bottom:0;width:0;border-left:2px solid #e0314b;z-index:2}
.db-now span{position:absolute;top:0;left:3px;font-size:10px;font-weight:700;color:#e0314b;font-family:var(--mono);font-style:normal}
@keyframes dbPipe{to{background-position:40px 0}}
@keyframes dbLvl{0%,100%{opacity:.2}50%{opacity:1}}
html.rx-still .db-pipe.on i,html.rx-still .db-g i::after,html.rx-still .db-grb.live i{animation:none!important}
html.rx-still .db-pipe.on i,html.rx-still .db-g i::after,html.rx-still .db-grb.live i{animation:none!important}
@media (min-width:600px){.db-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.db-kpi{min-height:108px;padding:12px}.db-ki{width:30px;height:30px;margin-bottom:6px}.db-kpi span{font-size:12.5px}.db-kpi b{font-size:30px}.db-cols{grid-template-columns:1fr 1fr}.db-tools{grid-template-columns:2fr repeat(3,1fr)}.db-search{grid-column:auto}.db-upd{grid-column:auto}.db-bottom{grid-template-columns:1fr 1fr}}
@media (min-width:1024px){.db-kpis{grid-template-columns:repeat(auto-fit,minmax(128px,1fr))}.db-sheet{padding:18px}.db-ops{grid-template-columns:1fr 1fr}.db-tools{grid-template-columns:2fr repeat(5,1fr) auto}.db-bottom{grid-template-columns:1fr 1fr}.db-tkr{grid-column:1/-1}}
html.rx-still .db-kpi,html.rx-still .db-op.new,html.rx-still .db-op .db-bar i,html.rx-still .db-stp i,html.rx-still .db-kpi.hot .db-ki,html.rx-still .tkd-ship,html.rx-still .tkd-pipe.on i{animation:none!important}
html.rx-still .db-kpi,html.rx-still .db-op.new,html.rx-still .db-op .db-bar i,html.rx-still .db-stp i,html.rx-still .db-kpi.hot .db-ki,html.rx-still .tkd-ship,html.rx-still .tkd-pipe.on i{animation:none!important}
.db-ops.v-list,.db-ops.v-gantt{grid-template-columns:minmax(0,1fr)!important}
.db-lrm b,.db-grl b{white-space:nowrap}
.db-gt{--gl:128px}.db-grl b{font-size:11px}
@media (min-width:900px){.db-gt{--gl:170px}.db-grl b{font-size:12px}.db-lr,.db-lh{grid-template-columns:30px 1.5fr 1.2fr 1.4fr .6fr .8fr auto}}
.db-gro{position:absolute;top:50%;transform:translateY(-50%);font-style:normal;font-size:10px;font-weight:700;font-family:var(--mono);color:var(--ink2);white-space:nowrap}

/* 1.18.2 : Bacs en mouvement en cartes, au style des opérations du tableau de bord */
.tm-sheet{background:var(--paper);color:var(--ink);border-radius:18px;padding:12px;margin-bottom:14px;box-shadow:0 20px 50px -24px rgba(0,0,0,.7)}
.tm-h{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ink);margin:4px 2px 10px}
.tm-h:not(:first-child){margin-top:16px}
.tm-h i{width:10px;height:10px;border-radius:50%;background:var(--cc);box-shadow:0 0 0 4px color-mix(in srgb,var(--cc) 20%,transparent)}
.tm-h em{margin-left:auto;font-style:normal;font-size:11.5px;font-weight:700;color:var(--ink2);background:#e8edf5;border-radius:999px;padding:1px 9px}
.tm-h em:empty{display:none}
.tm-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
.tm-id{font-size:20px;letter-spacing:.02em;color:var(--ink)}
.tm-vis{display:flex;align-items:center;gap:14px;margin:12px 0 10px;padding:10px 12px;border-radius:12px;background:linear-gradient(180deg,#f1f5fb,#e9eff8);border:1px solid #e1e8f3}
.db-g.tm-g{width:34px;height:64px;border-radius:9px 9px 6px 6px;border-width:2px}
/* 1.62 : réservoir en verre animé (tkViz) dans les cartes « bac en mouvement », au format Stocks */
.tm-viz{position:relative;flex:none;width:46px;height:68px;display:flex;align-items:flex-end;justify-content:center}
.tm-viz svg{width:100%;height:100%;overflow:visible}
/* 1.62 : avancement par opération dans les cartes « bac en mouvement » */
.tm-opr{display:block;margin-top:2px;font-size:11px;font-weight:600;color:var(--cyan,#2f7bf6)}
/* 1.62 : bandeau « fin prévue / reste » mis en avant en tête de carte d'opération */
.db-eta{display:flex;align-items:center;gap:7px;margin:8px 0 2px;padding:6px 10px;border-radius:9px;background:color-mix(in srgb,var(--cc,#2f7bf6) 10%,transparent);border:1px solid color-mix(in srgb,var(--cc,#2f7bf6) 28%,transparent)}
.db-eta svg{width:15px;height:15px;color:var(--cc,#2f7bf6);flex:none}
.db-eta span{font-size:11.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.02em}
.db-eta b{font-size:15px;font-weight:800;color:var(--text)}
.db-eta u{margin-left:auto;font-size:11.5px;text-decoration:none;color:var(--text-dim)}
.db-eta.late{background:rgba(224,49,75,.12);border-color:rgba(224,49,75,.4)}.db-eta.late svg,.db-eta.late b{color:#e0314b}
/* 1.62 (D) : légende des couleurs de statut d'opération */
.db-leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 10px;padding:7px 11px;border-radius:10px;background:var(--solid-1,#f1f5fb);border:1px solid var(--border-subtle,#e1e8f3)}
.db-leg .dl{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--text-dim)}
.db-leg .dl i{width:9px;height:9px;border-radius:50%;flex:none}
.db-leg .dl.ok i{background:#16a05a}.db-leg .dl.warn i{background:#f08a12}.db-leg .dl.bad i{background:#e0314b}.db-leg .dl.wait i{background:#9aa6bd}.db-leg .dl.done i{background:#7ac69b}
/* 1.62 (E) : tuiles « Activités de terrain en cours » */
.db-field{padding:12px}
.fa-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.fa-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:14px 8px;border-radius:12px;border:1px solid var(--border-subtle,#e1e8f3);background:var(--solid-1,#f6f9fe);cursor:pointer;transition:transform .12s var(--out),box-shadow .12s}
.fa-tile:active{transform:scale(.97)}
.fa-tile b{font-size:26px;font-weight:800;line-height:1;color:var(--text-dim)}
.fa-tile span{font-size:11px;color:var(--text-dim);text-align:center}
.fa-tile.has b,.fa-tile.has{color:var(--text)}
.fa-tile.has{border-color:color-mix(in srgb,var(--cyan,#2f7bf6) 40%,transparent)}.fa-tile.has b{color:var(--cyan,#2f7bf6)}
.fa-tile.warn{border-color:rgba(240,138,18,.5);background:rgba(240,138,18,.08)}.fa-tile.warn b{color:#f08a12}
.fa-tile.bad{border-color:rgba(224,49,75,.5);background:rgba(224,49,75,.1)}.fa-tile.bad b{color:#e0314b}
.fa-tile.z{opacity:.6}.fa-tile.z b{color:var(--text-dim)}
@media (max-width:360px){.fa-tile b{font-size:22px}.fa-tile span{font-size:10px}}
.tm-ops{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.tm-ops small{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3)}
.tm-op{display:flex;flex-direction:column;align-items:flex-start;text-align:left;background:#fff;border:1px solid var(--line);border-left:3px solid var(--cc);border-radius:8px;padding:4px 8px;font:inherit;color:var(--ink);cursor:pointer;min-width:0;max-width:100%}
.tm-op b{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tm-op span{font-size:11px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tm-op:hover{box-shadow:0 4px 12px -6px rgba(19,32,58,.35)}
.tm-vis .db-ring{width:60px;height:60px}.tm-vis .db-ring b{font-size:14px}
.tm-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
.db-chip.up b{color:#127a43}.db-chip.dn b{color:#2563d9}
.tm-card footer .tm-stale{color:#b46205;font-weight:600}
@media (min-width:600px){.tm-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:900px){.tm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tm-chips{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.tm-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:1400px){.tm-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* 1.18.2 : Quart › Opérations ouvertes en cartes claires */
.sc-sheet{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
.db-op.sc-row{display:block;padding:12px 12px 10px;gap:0}
.db-op.sc-row.bad{border-color:#f3b4be}
.db-op.sc-row.flash{box-shadow:0 0 0 3px #3ee6ff}
.sc-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
.sc-chips .db-chip span{white-space:normal;line-height:1.25}
.db-chip.miss b{color:var(--ink3);font-family:inherit;font-weight:500}
.db-op .sc-al{display:flex;flex-direction:column;gap:4px;margin:4px 0 8px;padding:8px 10px;border-radius:10px;background:#fff7ea;font-size:12px}
.db-op .sc-al span{display:flex;gap:6px;align-items:flex-start;color:#a5620a;font-weight:600}
.db-op .sc-al span svg{width:14px;height:14px;flex:none;margin-top:1px}
.db-op .sc-al .danger{color:#c4223a}.db-op .sc-al .info{color:var(--ink2)}
.db-op .sc-al:has(.danger){background:#fdecef}
.db-op footer.sc-act{justify-content:flex-end;gap:6px}
.db-op .sc-act .btn.sm{min-height:34px;border-radius:9px;background:#eef3fc;border:0;color:#2563d9;box-shadow:none;font-weight:600}
.db-op .sc-act .btn.sm.ghost{background:transparent;color:#56637d}
.db-op .sc-act .btn.sm.ghost:hover{background:#eef3fc;color:#2563d9}
.db-op .sc-act .btn.sm.primary{background:linear-gradient(120deg,#22c3f0,#5b8dff);color:#fff}
@media (min-width:600px){.sc-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:1100px){.sc-sheet{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 1.18.3 : réception tanker, débit saisi et arrêt */
.tkr-kv dd small{display:block;font-size:10.5px;font-weight:500;color:var(--text-dim);font-family:var(--font)}
.tkr-cfg{display:block;font-size:11px;color:var(--text-dim);font-weight:500}
.tkr-cur .card-header{flex-wrap:wrap;gap:6px}

/* 1.18.4 : bandeau « nouvelle version prête » (mises à jour en ligne) */
.web-upd{position:fixed;left:12px;right:12px;bottom:calc(76px + var(--rx-sab));z-index:60;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:10px 12px;border-radius:12px;background:#0f1a2e;border:1px solid rgba(0,217,255,.45);color:#eaf0fa;box-shadow:0 10px 30px rgba(0,0,0,.4);font-size:13px}
.web-upd span{flex:1 1 160px}

/* 1.18.5 : écran Opérations allégé */
.sup-actions{display:grid;grid-template-columns:1.4fr 1fr;gap:8px}
.sup-actions .btn{min-height:46px;font-weight:700}
.sup-actions .btn.on{outline:2px solid rgba(0,217,255,.55);outline-offset:1px}
.sup-panel{border:1px solid rgba(0,217,255,.35);box-shadow:0 0 0 1px rgba(0,217,255,.08),0 12px 30px rgba(0,0,0,.25)}
.sup-panel[hidden]{display:none!important}
.sup-ph{display:flex;align-items:center;gap:8px;margin:-2px 0 10px;padding-bottom:10px;border-bottom:1px solid var(--border-subtle)}
.sup-ph b{flex:1;font-size:15px;color:var(--text)}
.sup-ph small{color:var(--text-dim);font-size:11.5px}
.sup-ph .chk.sm{font-size:11.5px;margin:0;white-space:nowrap}
.sup-ph .btn.sm.ghost{padding:4px 8px;min-height:30px}
.fx-opt{margin-top:10px;border:1px solid var(--border-subtle);border-radius:10px;padding:8px 10px;background:rgba(255,255,255,.015)}
.fx-opt>summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--cyan)}
.fx-opt>summary small{color:var(--text-dim);font-weight:400;margin-left:4px}
.fx-opt>.fields{margin-top:8px}
.fx-opt[hidden]{display:none}
#nErr{margin-top:8px;min-height:0}
#nErr:empty{display:none}
#nErr.ok{color:var(--green)}
.fx-act{display:flex;gap:6px;flex-wrap:wrap}
.fx-act .btn.sm{flex:1 1 0;min-height:36px;min-width:0}
.fx-ctl label{display:flex;flex-direction:column;gap:3px;margin:0}
.fx-ctl small{font-size:11px;color:var(--text-dim)}
.fx-card .fx-seuil{font-size:12px}
.sup-tools-h{margin-top:14px}

/* 1.18.6 : profil de l'entreprise */
.org-logo-row{display:flex;gap:12px;align-items:center}
.org-logo-box{width:120px;height:64px;border-radius:10px;border:1px dashed var(--border);background:#fff;display:grid;place-items:center;overflow:hidden;flex:none}
.org-logo-box img{max-width:100%;max-height:100%;object-fit:contain}
.org-logo-box span{font-size:11px;color:#667}
.org-logo-act{display:flex;flex-direction:column;gap:6px}
.org-logo-act label.btn{cursor:pointer;margin:0}
.org-prev{margin-top:10px;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid var(--border-subtle);font-size:12px;color:var(--text-dim)}
.org-prev small{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}

/* ─── 1.18.7 : incidents ─── */
#fieldSeg.s4 button{font-size:12px;padding:9px 2px;min-height:44px}
.inc-kpi{margin:0 0 10px}
.inc-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.inc-bar .btn.primary{flex:1 1 200px}
.inc-tools{display:flex;flex-direction:column;gap:8px;margin:10px 0 8px}
.inc-tools input[type=search]{width:100%}
.inc-imp{display:flex;flex-wrap:wrap;gap:6px 14px}
.inc-grav button.active[data-g="Mineure"]{border-color:var(--text-dim);color:var(--text)}
.inc-grav button.active[data-g="Modérée"]{border-color:var(--amber);color:var(--amber);background:rgba(255,179,0,.12)}
.inc-grav button.active[data-g="Majeure"]{border-color:var(--red);color:var(--red);background:rgba(255,61,90,.12)}
.inc-grav button.active[data-g="Critique"]{border-color:var(--red);color:#fff;background:var(--red-dark)}
.inc-card{border-left:4px solid var(--text-mute);padding:0;overflow:hidden}
.inc-card.g-Modérée{border-left-color:var(--amber)}.inc-card.g-Majeure,.inc-card.g-Critique{border-left-color:var(--red)}
.inc-card.done{opacity:.72}.inc-card.open{opacity:1}
.inc-head{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:12px 14px}
.inc-head:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
.inc-head b{display:block;font-size:14px;color:var(--text)}.inc-head small{display:block;margin-top:2px;font-size:11px;color:var(--text-dim)}
.inc-tags{display:flex;flex-direction:column;gap:4px;align-items:flex-end;flex-shrink:0}
.inc-sum{padding:0 14px;font-size:13px;color:var(--text-soft);line-height:1.45}
.inc-card>.kpi-sub{padding:0 14px 12px}
.inc-detail{padding:0 14px 14px;display:flex;flex-direction:column;gap:12px}
.inc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media(min-width:620px){.inc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.inc-kv{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;padding:7px 9px;min-width:0}
.inc-kv span{display:block;font-size:10.5px;color:var(--text-dim);font-weight:600}.inc-kv b{display:block;font-size:13px;color:var(--text);overflow-wrap:anywhere}
.inc-sec h4{margin:0 0 6px;font-size:12.5px;color:var(--text-soft);text-transform:uppercase;letter-spacing:.4px;display:flex;gap:8px;align-items:baseline}
.inc-sec h4 small{text-transform:none;letter-spacing:0;color:var(--text-dim);font-weight:600}
.inc-sec p{margin:0 0 4px;font-size:13px;line-height:1.5;color:var(--text);white-space:pre-wrap}
.inc-sec textarea,.inc-sec select{width:100%}
.inc-act{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--border-subtle)}
.inc-act>div{flex:1;min-width:0}.inc-act b{display:block;font-size:13px;font-weight:600;color:var(--text);overflow-wrap:anywhere}
.inc-act small{display:block;font-size:11px;color:var(--text-dim);margin-top:2px}
.inc-act.done b{text-decoration:line-through;color:var(--text-dim)}.inc-act.late small{color:var(--red)}
.inc-ck{width:20px;text-align:center;color:var(--text-dim)}
.inc-add{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.inc-add [data-ia="txt"]{grid-column:1/-1}
@media(min-width:620px){.inc-add{grid-template-columns:2fr 1fr 1fr auto}.inc-add [data-ia="txt"]{grid-column:auto}}
.inc-sec select,.inc-sec textarea,.inc-add input,.inc-tools input{width:100%;min-width:0;height:42px;padding:0 10px;border-radius:9px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);font-family:var(--font);font-size:13.5px;font-weight:600;box-sizing:border-box}
.inc-sec textarea{height:auto;min-height:72px;padding:8px 10px;font-weight:500;resize:vertical;line-height:1.45}
.inc-sec select:focus,.inc-sec textarea:focus,.inc-add input:focus,.inc-tools input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px var(--cyan-glow)}
.inc-act .chk input{width:20px;height:20px}

/* ─── 1.19 : niveaux d'alerte, assistant de l'opérateur, « Mon poste » ───
   Mouvement court et sobre : entrées en ease-out ≤ 220 ms, aucune animation sur les actions répétées, coupé par reduced-motion. */
.lv-tag{display:inline-flex;align-items:center;margin-right:8px;padding:2px 7px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;vertical-align:1px;
  background:rgba(148,178,230,.12);color:var(--text-soft);border:1px solid var(--border)}
.lv-tag.lv-critique{background:rgba(255,77,106,.16);color:#ff9aab;border-color:rgba(255,77,106,.4)}
.lv-tag.lv-avertissement{background:rgba(255,190,61,.15);color:#ffd27a;border-color:rgba(255,190,61,.38)}
.lv-tag.lv-attention{background:rgba(62,230,255,.12);color:#9ff1ff;border-color:rgba(62,230,255,.3)}
.alert .al-why{flex-basis:100%;margin-top:6px;font-size:12.5px;color:var(--text-soft)}
.alert .al-why summary{cursor:pointer;color:var(--text-dim);font-weight:600;list-style:none;min-height:28px;display:flex;align-items:center}
.alert .al-why summary::before{content:'›';display:inline-block;margin-right:6px;transition:transform .18s var(--out)}
.alert .al-why[open] summary::before{transform:rotate(90deg)}
.alert .al-why p{margin:4px 0}

.asst-fab{position:fixed;z-index:40;right:16px;bottom:calc(88px + var(--rx-sab));width:52px;height:52px;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--border-strong);color:#04101c;background:var(--iris);box-shadow:0 12px 30px -10px rgba(62,230,255,.55);
  cursor:pointer;transition:transform .16s var(--out),box-shadow .2s}
.asst-fab svg{width:24px;height:24px}
.asst-fab span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.asst-fab:active{transform:scale(.94)}
@media (hover:hover){.asst-fab:hover{box-shadow:0 14px 34px -8px rgba(62,230,255,.7)}}
@media (min-width:1024px){.asst-fab{bottom:28px;right:28px}}

dialog.asst-dlg{margin:0;padding:0;border:none;background:transparent;color:var(--text);max-width:none;max-height:none;width:100%;height:100%;inset:0}
dialog.asst-dlg::backdrop{background:rgba(3,6,12,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.asst-sheet{position:absolute;left:0;right:0;bottom:0;max-height:88dvh;overflow:auto;overscroll-behavior:contain;padding:16px 16px calc(16px + var(--rx-sab));
  background:linear-gradient(180deg,rgba(21,34,58,.98),rgba(11,18,34,.99));border:1px solid var(--border-strong);border-bottom:none;border-radius:20px 20px 0 0;box-shadow:var(--shadow)}
dialog.asst-dlg[open] .asst-sheet{animation:asstIn .22s var(--out)}
dialog.asst-dlg[open]::backdrop{animation:asstFade .2s ease-out}
dialog.asst-dlg.closing .asst-sheet{animation:asstOut .16s ease-in forwards}
@keyframes asstIn{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes asstOut{to{transform:translateY(24px);opacity:0}}
@keyframes asstFade{from{opacity:0}}
@media (min-width:760px){.asst-sheet{left:50%;right:auto;bottom:24px;width:min(720px,calc(100% - 48px));transform:translateX(-50%);border-radius:20px;border-bottom:1px solid var(--border-strong);max-height:min(82dvh,900px)}
  dialog.asst-dlg[open] .asst-sheet{animation:asstInD .22s var(--out)}
  dialog.asst-dlg.closing .asst-sheet{animation:asstOutD .16s ease-in forwards}
  @keyframes asstInD{from{transform:translate(-50%,16px) scale(.98);opacity:0}to{transform:translateX(-50%);opacity:1}}
  @keyframes asstOutD{to{transform:translate(-50%,12px) scale(.98);opacity:0}}}
.asst-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.asst-h b{font-family:var(--font-display);font-size:17px}
.asst-h small{display:block;color:var(--text-dim);font-size:12px;margin-top:2px}
.asst-ask{display:flex;gap:8px}
.asst-ask input{flex:1;min-width:0}
.asst-qs{display:flex;gap:6px;overflow-x:auto;padding:10px 0 4px;margin:0 -16px;padding-left:16px;padding-right:16px;scrollbar-width:none;scroll-snap-type:x proximity}
.asst-qs::-webkit-scrollbar{display:none}
.asst-qs .chip{flex:none;white-space:nowrap;scroll-snap-align:start;font-size:12px}
.asst-hint,.asst-none{color:var(--text-dim);font-size:13px}
.asst-ans h3{margin:12px 0 8px;font-family:var(--font-display);font-size:16px}
.asst-sec{padding:10px 12px;margin:8px 0;border-radius:12px;background:rgba(148,178,230,.05);border:1px solid var(--border-subtle)}
.asst-sec h4{margin:0 0 6px;font-size:11.5px;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim)}
.asst-sec p,.asst-sec ul{margin:0;font-size:13.5px;line-height:1.5}
.asst-sec ul{padding-left:18px}
.asst-sec li+li{margin-top:4px}
.asst-sec.s-verifier{border-color:rgba(255,190,61,.28)}
.asst-sec.s-limites{background:transparent}
.asst-refs{display:flex;flex-wrap:wrap;gap:6px}
.asst-ref{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;padding:6px 10px;min-height:40px;border-radius:10px;border:1px solid var(--border);background:var(--bg-raised);color:var(--text);font:inherit;font-size:13px;cursor:pointer;transition:border-color .15s}
.asst-ref small{font-size:10.5px;color:var(--text-dim)}
@media (hover:hover){.asst-ref:hover{border-color:var(--border-focus)}}
.asst-need{display:grid;gap:8px;margin-top:10px}
.asst-need p{margin:0;color:var(--text-soft);font-size:13.5px}
.asst-row{display:flex;gap:8px;flex-wrap:wrap}
.asst-row>*{flex:1 1 140px;min-width:0}

.my-post{display:grid;gap:12px}
.mp-h{display:flex;justify-content:space-between;align-items:center;gap:12px}
.mp-h b{font-family:var(--font-display);font-size:16px}
.mp-h small{display:block;color:var(--text-dim);font-size:12px}
.mp-k{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (min-width:760px){.mp-k{grid-template-columns:repeat(4,minmax(0,1fr))}}
.mp-kc{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border-radius:12px;border:1px solid var(--border-subtle);background:rgba(148,178,230,.05);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,transform .12s var(--out)}
.mp-kc:active{transform:scale(.98)}
.mp-kc b{font-family:var(--font-display);font-size:22px;line-height:1.1}
.mp-kc span{font-size:12.5px;font-weight:600}
.mp-kc small{font-size:11.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.mp-kc.hot{border-color:rgba(255,190,61,.35)}
.mp-kc.hot b{color:var(--amber)}
/* 1.56 : accent de catégorie en haut de chaque tuile du tableau de bord « Mon poste » (plus lisible, plus moderne) */
.mp-kc{border-top-width:2px;transition:border-color .15s,transform .14s var(--out),box-shadow .2s}
.mp-kc[data-mp="q:ops"]{border-top-color:var(--cyan)}
.mp-kc[data-mp="q:cons"]{border-top-color:var(--purple)}
.mp-kc[data-mp="q:acts"],.mp-kc[data-mp="q:coh"]{border-top-color:var(--amber)}
.mp-kc[data-mp="q:ops"] span{color:var(--cyan)}
.mp-kc[data-mp="q:cons"] span{color:var(--purple)}
.mp-kc[data-mp="q:acts"] span,.mp-kc[data-mp="q:coh"] span{color:var(--amber)}
/* Micro-interactions fluides au survol (web / pointeur) — sur tablette, l'appui garde son retour tactile */
@media (hover:hover) and (pointer:fine){
  .mp-kc:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.28)}
  .tank:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.4)}
  .mp-sc .btn:hover,.chip:hover{transform:translateY(-1px)}
}
html.rx-still .mp-kc:hover,html.rx-still .tank:hover{transform:none;box-shadow:none}
.mp-al{display:grid;gap:6px}
.mp-a{display:flex;align-items:center;gap:4px;width:100%;padding:8px 10px;min-height:40px;border-radius:10px;border:1px solid var(--border-subtle);border-left:3px solid var(--amber);background:rgba(255,190,61,.06);color:var(--text);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.mp-a.lv-critique{border-left-color:var(--red);background:rgba(255,77,106,.08)}
.mp-a .lv-tag{flex:none}
.mp-ok{margin:0;color:var(--text-dim);font-size:13px}
.mp-sc{display:flex;flex-wrap:wrap;gap:6px}
html.rx-still dialog.asst-dlg[open] .asst-sheet,html.rx-still dialog.asst-dlg.closing .asst-sheet,html.rx-still dialog.asst-dlg[open]::backdrop{animation:none}html.rx-still .asst-fab,html.rx-still .mp-kc,html.rx-still .alert .al-why summary::before{transition:none}
html.rx-still dialog.asst-dlg .asst-sheet{animation:none!important}
/* Feuille de l'assistant : en-tête, question et questions proposées fixes, seule la réponse défile */
.asst-sheet{display:flex;flex-direction:column;overflow:hidden}
.asst-sheet>.asst-h,.asst-sheet>.asst-ask,.asst-sheet>.asst-qs{flex:none}
.asst-out{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;margin:0 -16px;padding:0 16px 4px}
.asst-ask input,.asst-need select,.asst-need input{height:44px;padding:0 12px;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border);color:var(--text);font:inherit;font-size:14px;-webkit-appearance:none;appearance:none}
.asst-ask input::placeholder{color:var(--text-mute)}
.asst-ask input:focus,.asst-need select:focus,.asst-need input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px var(--cyan-glow)}
/* ─── 1.25 : registre MMT (Fabrication › Stock MMT) ─── */
.mm-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:8px}
.mm-k{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:var(--bg-raised);border:1px solid var(--border-subtle)}
.mm-k span{font-size:11.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}
.mm-k b{font-size:18px;color:var(--text)}
.mm-k small{font-size:11.5px;color:var(--text-mute);line-height:1.35}
.mm-k.bad b,.mm-tbl .bad{color:var(--red)}
.mm-warn{margin:0 0 8px;padding:8px 10px;border-radius:10px;border:1px solid var(--red);color:var(--text)}
.mm-list{display:flex;flex-direction:column;font-size:12.5px}
.mm-row{display:grid;grid-template-columns:minmax(84px,auto) 1fr auto auto;column-gap:10px;row-gap:3px;align-items:baseline;padding:8px 2px;border-bottom:1px solid var(--border-subtle);color:var(--text-soft)}
.mm-row:last-child{border-bottom:0}
.mm-row .num{text-align:right;white-space:nowrap;min-width:58px}
.mm-head{font-weight:600;color:var(--text-dim);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)}
.mm-kind{font-weight:600;color:var(--text)}
.mm-row.k-rec .mm-kind{color:var(--green)}.mm-row.k-inj .mm-kind{color:var(--cyan)}.mm-row.k-inv .mm-kind{color:var(--purple)}
.mm-row .bad{color:var(--red)}
.mm-det{grid-column:1/-1;line-height:1.4}
.mm-by{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--text-mute);margin-top:2px}
/* 1.73.2 : quantités MMT en kg · L · mg Mn/L sous le chiffre, suppression/correction plus accessibles */
.mm-q,.mm-sd{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}
.mm-q small,.mm-sd small{font-size:10px;color:var(--text-mute);font-weight:400;white-space:nowrap;text-transform:none;letter-spacing:0}
.mm-who{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-act{display:flex;gap:6px;flex:none}
.mm-del{color:var(--red)}
.mm-del:hover,.mm-del:focus-visible{background:rgba(255,77,106,.12);border-color:rgba(255,77,106,.4)}
.mm-act{display:inline-flex;align-items:center;gap:4px}
/* ─── 1.27 : état déclaré des pompes (maintenance, hors service) ─── */
.pm-card.pm-maint{--pc:var(--amber)}.pm-card.pm-off{--pc:var(--text-mute)}
.pm-card.pm-maint .pf-pipe,.pm-card.pm-off .pf-pipe{opacity:.55}
.pm-et{margin:6px 0 0;padding:7px 9px;border-radius:9px;border:1px dashed var(--pc,var(--amber));font-size:12px;color:var(--text);line-height:1.4}
.pm-et small{display:block;color:var(--text-mute);font-size:11px;margin-top:2px}
.pm-f>span{display:inline-flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}

/* 1.28 : aperçu d'une injection MMT et teneur par bac */
#mmPrev{display:block}
#mmPrev .mm-pv{display:block;margin:2px 0;line-height:1.45}
#mmPrev .mm-pv b{display:inline;float:none;margin:0}
#mmPrev .mm-pv small{color:var(--text-dim)}
#mmTgtHint b{display:inline}
.mm-tk{margin:4px 0 2px}

.bl-guide{margin:4px 0 2px}.bl-guide-l{margin:6px 0 4px;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:13px;line-height:1.45;color:var(--text-soft)}
.bl-guide-l b{color:var(--text)}
#v-blend:not(.recipe) .bl-guide-l li.rcp{display:none}
/* 1.46 : planification et suivi des travaux */
.trv-vw{display:inline-grid;grid-template-columns:1fr 1fr;min-width:220px}
.trv-av{height:6px;border-radius:99px;background:var(--border-subtle);overflow:hidden;margin:6px 0 2px}.trv-av i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--green));border-radius:inherit}
.trv-log{list-style:none;margin:8px 0 0;padding:0 0 0 12px;border-left:2px solid var(--border);display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-soft)}
.trv-log b{font-family:var(--mono);color:var(--text);margin-right:4px}.trv-log small{display:block;color:var(--text-mute);font-size:11px}
.trv-steps{flex-wrap:wrap;margin-bottom:10px}
.trv-act{flex-wrap:wrap;gap:6px}
.trv-act .btn.warn{color:var(--amber);border-color:rgba(255,184,0,.5)}
.trv-pm{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}
.trv-gz{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.trv-gz label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-dim)}
.trv-gz input{width:100%;min-width:0}
.trv-prio button.p0.active{background:rgba(255,77,106,.18);border-color:var(--red);color:var(--red)}
.trv-prio button.p1.active{background:rgba(255,120,77,.16);border-color:#ff784d;color:#ff784d}
.trv-prio button.p2.active{background:rgba(255,184,0,.14);border-color:var(--amber);color:var(--amber)}
.trv-note{margin:10px 2px 0;font-size:11.5px}
.trv-gantt{overflow-x:auto;padding:12px}
.trv-g{display:grid;grid-template-columns:minmax(150px,1.4fr) repeat(var(--n),minmax(30px,1fr));align-items:stretch;min-width:620px;font-size:12px}
.trv-gh{text-align:center;padding:4px 0 6px;color:var(--text-dim);font-family:var(--mono);border-bottom:1px solid var(--border)}
.trv-gh small{display:block;font-size:10px;color:var(--text-mute);text-transform:uppercase}
.trv-gh.we{background:rgba(127,127,127,.06)}.trv-gh.now{color:var(--cyan);font-weight:800}
.trv-gh.trv-gl{text-align:left;font-family:var(--font);font-weight:700}
button.trv-gl{all:unset;cursor:pointer;padding:7px 8px 7px 0;border-bottom:1px solid var(--border-subtle);min-width:0}
button.trv-gl b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}button.trv-gl small{display:block;color:var(--text-mute);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
button.trv-gl:focus-visible{outline:2px solid var(--cyan)}
.trv-gr{position:relative;border-bottom:1px solid var(--border-subtle);min-height:38px}
.trv-gb{position:absolute;top:8px;bottom:8px;border-radius:7px;overflow:hidden;border:1px solid var(--border-strong);background:rgba(0,217,255,.14);font-style:normal}
.trv-gb em{position:absolute;inset:0 auto 0 0;background:rgba(0,214,143,.32)}
.trv-gb span{position:relative;display:block;padding:3px 6px;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.trv-gb.s-warn{background:rgba(255,184,0,.16);border-color:rgba(255,184,0,.5)}.trv-gb.s-ok{background:rgba(0,214,143,.16);border-color:rgba(0,214,143,.5)}
.trv-gb.s-purple{background:rgba(155,120,255,.18);border-color:rgba(155,120,255,.5)}.trv-gb.s-gray{background:rgba(127,127,127,.14)}
.trv-gb.late{box-shadow:0 0 0 2px var(--red)}
@media (max-width:520px){.trv-gz{grid-template-columns:1fr 1fr}.trv-pm{grid-template-columns:1fr}}
/* 1.46 : 9 volets dans Terrain : deux lignes de 5 */
#fieldSeg.s4{grid-template-columns:repeat(5,1fr)}
#fieldSeg.s4 button{font-size:11.5px;padding:8px 1px;min-height:44px;line-height:1.15}
/* 1.46.4 : RON après additif */
.ra-out{display:flex;flex-direction:column;gap:6px;margin-top:10px;font-size:13px;color:var(--text-soft);line-height:1.45}
.ra-res{display:flex;align-items:baseline;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid var(--border);margin:4px 0}
.ra-res b{font-family:var(--font-display);font-size:30px;color:var(--text)}.ra-res span{font-size:12.5px;color:var(--text-dim)}
.ra-res.ok{border-color:rgba(0,214,143,.5)}.ra-res.ok b{color:var(--green)}.ra-res.marge{border-color:rgba(255,184,0,.5)}.ra-res.marge b{color:var(--amber)}
.ra-res.ko{border-color:rgba(255,77,106,.5)}.ra-res.ko b{color:var(--red)}.ra-ko{color:var(--red)}
/* 1.46.5 : petits écrans (320–390 px) : les titres de section et leurs étiquettes passent à la ligne au lieu de déborder */
.section-label{flex-wrap:wrap;row-gap:4px}
.section-label>span:last-child{min-width:0;max-width:100%}
.section-label .tag{white-space:normal;text-align:left}
.btn{max-width:100%}
#mmtModelDef,.mmt-act .btn{white-space:normal;height:auto;min-height:40px;line-height:1.25}
.section-label>span{min-width:0;overflow-wrap:anywhere}
/* 1.46.5 : téléphone tenu à l'horizontale (hauteur ≤ 520 px) : barre d'onglets sur le côté, en-tête compact,
   pour garder la hauteur de l'écran au contenu (même logique que la tablette, en plus étroit) */
@media (orientation:landscape) and (max-height:520px) and (max-width:1023px){
  html .app{max-width:none;padding-left:calc(78px + env(safe-area-inset-left,0px))}
  html .app .tabbar{top:0;bottom:0;left:0;right:auto;width:calc(78px + env(safe-area-inset-left,0px));border-radius:0;border:none;border-right:1px solid var(--border-subtle);
    display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:2px;padding:8px 6px 8px calc(6px + env(safe-area-inset-left,0px));overflow-y:auto;overscroll-behavior:contain;box-shadow:none}
  html .app .tab{flex:none;min-height:44px;font-size:9px;gap:2px;padding:4px 0}
  html .app .tab svg{width:20px;height:20px}
  html .app .appbar{padding-top:calc(6px + env(safe-area-inset-top,0px));padding-bottom:6px}
  html .app .content{padding:12px 16px 20px;padding-right:calc(16px + env(safe-area-inset-right,0px))}
  .bl-res{bottom:0}
}
/* 1.46.7 : référentiel produits : ajout en tête, suppression visible */
.prod-bar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.prod-card .unit-top{align-items:center}
.prod-card .btn.prod-del{flex:none;min-width:36px;padding:6px 10px;color:var(--red);border-color:rgba(255,77,106,.35)}

/* ─── 1.47.3 : stock MMT — aujourd'hui et bilan journalier ─── */
.mm-today{margin:0 0 10px;padding:12px;border-radius:14px;border:1px solid var(--border);background:linear-gradient(180deg,rgba(62,230,255,.07),rgba(155,123,255,.05))}
.mm-today h4{margin:0 0 8px;font-size:13px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--text)}
.mm-today h4 small{font-weight:500;color:var(--text-mute);font-size:11.5px}
.mm-tg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.mm-tg>div{display:flex;flex-direction:column;gap:1px;min-width:0}
.mm-tg span{font-size:10.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em}
.mm-tg b{font-size:16px;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm-tg small{font-size:11px;color:var(--text-mute)}
.mm-tg .in b{color:var(--green)}.mm-tg .out b{color:var(--cyan)}.mm-tg .rest b{font-size:18px}.mm-tg .bad b{color:var(--red)}
.mm-today .mm-tk2{margin-top:8px;font-size:12px;color:var(--text-soft);line-height:1.45}
@media (max-width:420px){.mm-tg{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:10px}}
.mm-dbox{margin:0 0 10px;border:1px solid var(--border-subtle);border-radius:14px;padding:4px 10px}
.mm-dbox>summary{cursor:pointer;display:flex;flex-direction:column;gap:1px;padding:8px 0;list-style:none}
.mm-dbox>summary::-webkit-details-marker{display:none}
.mm-dctl{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin:2px 0 8px}
.mm-dsel{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--text-dim)}
.mm-dsel select{min-height:34px;padding:4px 8px}
.mm-dl{display:flex;flex-direction:column;font-size:12.5px}
.mm-dr{display:grid;grid-template-columns:minmax(78px,1.25fr) repeat(4,minmax(0,1fr));column-gap:6px;align-items:baseline;padding:8px 2px;border-bottom:1px solid var(--border-subtle);color:var(--text-soft)}
.mm-dr>span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm-dr .num{text-align:right;font-variant-numeric:tabular-nums}
.mm-dr.mm-head{font-weight:600;color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:0;border-bottom:1px solid var(--border)}
.mm-dd{border-bottom:1px solid var(--border-subtle)}
.mm-dd>summary{list-style:none;cursor:pointer}.mm-dd>summary::-webkit-details-marker{display:none}
.mm-dd>summary .mm-dr{border-bottom:0}
.mm-dd .p{color:var(--green)}.mm-dd .m{color:var(--cyan)}.mm-dd .r{color:var(--text);font-weight:700}.mm-dd .bad{color:var(--red)}
.mm-dd.today>summary .mm-dr{background:rgba(62,230,255,.06);border-radius:8px}
.mm-dd.idle>summary .mm-dr{opacity:.6}
.mm-dx{padding:2px 4px 10px;font-size:12px;color:var(--text-soft);line-height:1.45}
.mm-dx .mm-eq{font-size:11.5px;color:var(--text-mute);margin:2px 0 6px}
.mm-dx table{width:100%;min-width:0;border-collapse:collapse;font-size:11.5px;table-layout:fixed}
.mm-dx td{overflow-wrap:anywhere}
.mm-dx td,.mm-dx th{padding:4px 3px;border-bottom:1px solid var(--border-subtle);text-align:left;vertical-align:top}
.mm-dx th{color:var(--text-dim);font-weight:600;font-size:10.5px;text-transform:uppercase}
.mm-dx td.num,.mm-dx th.num{text-align:right;white-space:nowrap}
.mm-dr .wd{font-style:normal}
.mm-dr .num{overflow:visible;text-overflow:clip}
@media (max-width:400px){.mm-dr{grid-template-columns:42px repeat(4,minmax(0,1fr));column-gap:4px;font-size:11.5px}.mm-dr .wd{display:none}.mm-dr.mm-head{font-size:9px}}

/* ─── 1.48 : toit flottant ─── */
.rf-box{padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--bg-raised);font-size:12.5px;line-height:1.45;display:flex;flex-direction:column;gap:3px;--rc:var(--text-mute)}
.rf-box.rf-ok{--rc:var(--green)}.rf-box.rf-zc{--rc:var(--amber)}.rf-box.rf-pose{--rc:var(--red)}
.rf-box{border-left:4px solid var(--rc)}
.rf-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rf-z{font-weight:700;color:var(--rc);font-size:12px}
.rf-m{color:var(--text-mute);font-size:11.5px}
.rf-w{color:var(--red);font-weight:600;font-size:12px}
.rf-tag{display:inline-block;padding:1px 7px;border-radius:999px;font-size:10.5px;font-weight:600;border:1px solid currentColor;color:var(--text-mute)}
.rf-tag.rf-ok{color:var(--green)}.rf-tag.rf-zc{color:var(--amber)}.rf-tag.rf-pose{color:var(--red)}
.rf-quick{display:flex;gap:6px;flex-wrap:wrap}
.tk-roof{margin-top:10px;padding-top:8px;border-top:1px dashed var(--border)}
.tk-roof>b{display:block;margin-bottom:4px}

/* 1.57 : cartes d'opération plus vivantes (tableau de bord et Quart) — halo animé discret quand l'opération est active */
.db-card{transition:transform .18s var(--out),box-shadow .2s}
@media (hover:hover) and (pointer:fine){.db-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.28)}}
.db-flow .db-pipe.on i{animation:dbPipe 1.1s linear infinite}
@keyframes dbPipe{to{background-position:14px 0}}
html.rx-still .db-card{transition:none}html.rx-still .db-flow .db-pipe.on i{animation:none}

/* 1.58 : bandeau de permutation des charges brut Topping ↔ Injection */
#dbPermut{margin:0 0 10px}
.db-permut{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border-radius:12px;border:1px solid rgba(141,63,217,.4);background:linear-gradient(180deg,rgba(141,63,217,.1),rgba(240,138,18,.06))}
.db-permut-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.db-permut-t b{font-size:13px}
.db-permut-t span{font-size:12.5px;color:var(--text-soft,#a5b4cc)}
.db-permut-t span b{color:var(--text,#e8eef7)}

/* 1.59 : tableau du stock MMT par société d'approvisionnement */
.mm-sup{border:1px solid var(--border-subtle);border-radius:10px;overflow:hidden;margin:4px 0}
.mm-srow{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(5,minmax(0,1fr)) minmax(0,.7fr);gap:6px;align-items:center;padding:7px 10px;border-top:1px solid var(--border-subtle);font-size:12.5px}
.mm-srow:first-child{border-top:none}
.mm-srow.mm-head{background:var(--bg-elevated);color:var(--text-soft);font-size:11px;text-transform:uppercase;letter-spacing:.03em;font-weight:600}
.mm-srow .num{text-align:right}
.mm-srow.mm-tot{background:rgba(141,63,217,.08);font-weight:600}
.mm-srow.bad .mono b{color:var(--red)}
@media(max-width:560px){.mm-srow{grid-template-columns:minmax(0,1.3fr) repeat(5,minmax(0,1fr)) minmax(0,.6fr);font-size:11.5px;gap:3px;padding:6px 7px}}
