/* ============================================================
   MAMOUSSO V19 — Studio d'enregistrement & transcription
   Palette « Claude » : crème chaud, brun foncé, accent terracotta.
   Chargé uniquement par templates/transcribe.html (body.mxTranscribe) :
   les autres modules de la suite ne sont pas concernés.
   ============================================================ */

:root {
  --mx-bg: #f5f4ed;
  --mx-surface: #fffdf8;
  --mx-surface-2: #faf9f5;
  --mx-surface-3: #f0eee6;
  --mx-text: #141413;
  --mx-muted: #73726c;
  --mx-line: #e8e6dc;
  --mx-line-strong: #d6d3c7;
  --mx-accent: #c96442;
  --mx-accent-soft: #f9ece4;
  --mx-grad-from: #d97757;
  --mx-grad-to: #c15f3c;
  --mx-rec: #ef4444;
  --mx-rec-2: #f97316;
  --mx-rec-soft: #fee2e2;
  --mx-warn: #a15c07;
  --mx-warn-soft: #fef3c7;
  --mx-ok: #15803d;
  --mx-ok-soft: #dcfce7;
  --mx-danger: #b91c1c;
  --mx-danger-soft: #fee2e2;
  --mx-info: #5a6f8c;
  --mx-info-soft: #e9edf2;
  --mx-wave: #d97757;
  --mx-wave-idle: rgba(217, 119, 87, .18);
  --mx-shadow: 0 1px 2px rgba(20, 20, 19, .04), 0 12px 32px rgba(60, 45, 30, .06);
  --mx-ring: 0 0 0 3px rgba(217, 119, 87, .3);

  /* Éditeur : mêmes tons crème et terracotta que le studio */
  --mxw-bg: #f5f4ed;
  --mxw-panel: #faf9f5;
  --mxw-page: #fffdf8;
  --mxw-line: #e8e6dc;
  --mxw-line-soft: #f0eee6;
  --mxw-text: #3d3929;
  --mxw-title: #141413;
  --mxw-muted: #73726c;
  --mxw-hover: #f0eee6;
  --mxw-current: #ebe7dc;
  --mxw-strong: #c96442;
  --mxw-strong-text: #ffffff;
  --mxw-highlight: #fbe3c8;
  --mxw-input: #fffdf8;
  color-scheme: light;
}

/* Mode sombre : automatique (système) sauf choix « clair », ou forcé */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --mx-bg: #262624;
    --mx-surface: #30302e;
    --mx-surface-2: #2b2b29;
    --mx-surface-3: #3a3a37;
    --mx-text: #f5f4ee;
    --mx-muted: #a6a39a;
    --mx-line: #3e3e3a;
    --mx-line-strong: #52514c;
    --mx-accent: #e08a6c;
    --mx-accent-soft: rgba(217, 119, 87, .16);
    --mx-rec: #f87171;
    --mx-rec-soft: rgba(248, 113, 113, .14);
    --mx-warn: #fcd34d;
    --mx-warn-soft: rgba(251, 191, 36, .12);
    --mx-ok: #4ade80;
    --mx-ok-soft: rgba(74, 222, 128, .12);
    --mx-danger: #fca5a5;
    --mx-danger-soft: rgba(248, 113, 113, .12);
    --mx-info: #a9b8cc;
    --mx-info-soft: rgba(169, 184, 204, .12);
    --mx-wave: #e08a6c;
    --mx-wave-idle: rgba(224, 138, 108, .16);
    --mx-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 18px 44px rgba(0, 0, 0, .3);
    --mx-ring: 0 0 0 3px rgba(224, 138, 108, .38);
    --mxw-bg: #262624;
    --mxw-panel: #2b2b29;
    --mxw-page: #30302e;
    --mxw-line: #3e3e3a;
    --mxw-line-soft: #363633;
    --mxw-text: #e8e6dc;
    --mxw-title: #f5f4ee;
    --mxw-muted: #a6a39a;
    --mxw-hover: #3a3a37;
    --mxw-current: #42413d;
    --mxw-strong: #d97757;
    --mxw-strong-text: #ffffff;
    --mxw-highlight: rgba(217, 119, 87, .28);
    --mxw-input: #262624;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --mx-bg: #262624;
  --mx-surface: #30302e;
  --mx-surface-2: #2b2b29;
  --mx-surface-3: #3a3a37;
  --mx-text: #f5f4ee;
  --mx-muted: #a6a39a;
  --mx-line: #3e3e3a;
  --mx-line-strong: #52514c;
  --mx-accent: #e08a6c;
  --mx-accent-soft: rgba(217, 119, 87, .16);
  --mx-rec: #f87171;
  --mx-rec-soft: rgba(248, 113, 113, .14);
  --mx-warn: #fcd34d;
  --mx-warn-soft: rgba(251, 191, 36, .12);
  --mx-ok: #4ade80;
  --mx-ok-soft: rgba(74, 222, 128, .12);
  --mx-danger: #fca5a5;
  --mx-danger-soft: rgba(248, 113, 113, .12);
  --mx-info: #a9b8cc;
  --mx-info-soft: rgba(169, 184, 204, .12);
  --mx-wave: #e08a6c;
  --mx-wave-idle: rgba(224, 138, 108, .16);
  --mx-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 18px 44px rgba(0, 0, 0, .3);
  --mx-ring: 0 0 0 3px rgba(224, 138, 108, .38);
  --mxw-bg: #262624;
  --mxw-panel: #2b2b29;
  --mxw-page: #30302e;
  --mxw-line: #3e3e3a;
  --mxw-line-soft: #363633;
  --mxw-text: #e8e6dc;
  --mxw-title: #f5f4ee;
  --mxw-muted: #a6a39a;
  --mxw-hover: #3a3a37;
  --mxw-current: #42413d;
  --mxw-strong: #d97757;
  --mxw-strong-text: #ffffff;
  --mxw-highlight: rgba(217, 119, 87, .28);
  --mxw-input: #262624;
  color-scheme: dark;
}

/* ---------------------------------------------------------------- page */
body.mxTranscribe {
  background: var(--mx-bg);
  color: var(--mx-text);
  transition: background-color .25s ease, color .25s ease;
}
.mxTranscribe .transcribePage { width: min(980px, calc(100% - 32px)); }
.mxTranscribe .brand { color: var(--mx-text); }
.mxTranscribe .subtitle,
.mxTranscribe .hint,
.mxTranscribe .segments { color: var(--mx-muted); }
.mxTranscribe .pill,
.mxTranscribe .languageControl,
.mxTranscribe .userBadge {
  background: var(--mx-surface);
  border-color: var(--mx-line);
  color: var(--mx-text);
}
.mxTranscribe .languageControl select { color: var(--mx-text); }
.mxTranscribe .logoutLink { color: var(--mx-muted); }
.mxTranscribe .logoutLink:hover { background: var(--mx-surface-3); color: var(--mx-text); }
.mxTranscribe .passkeyManageLink { background: var(--mx-surface-3); border-color: var(--mx-line); color: var(--mx-text); }

.mxThemeToggle {
  width: 40px;
  height: 40px;
  padding: 0;
  border-radius: 12px;
  border: 1px solid var(--mx-line);
  background: var(--mx-surface);
  color: var(--mx-text);
  flex: none;
  transition: transform .2s ease, border-color .2s ease;
}
.mxThemeToggle:hover { border-color: var(--mx-line-strong); transform: rotate(-12deg); }
.mxThemeToggle:focus-visible { outline: none; box-shadow: var(--mx-ring); }
.mxThemeToggle svg { width: 18px; height: 18px; fill: currentColor; }
.mxThemeToggle .mxSun { display: none; }
.mxThemeToggle[data-mode="dark"] .mxSun { display: block; }
.mxThemeToggle[data-mode="dark"] .mxMoon { display: none; }

.mxTranscribe .card {
  background: var(--mx-surface);
  border-color: var(--mx-line);
  border-radius: 24px;
  box-shadow: var(--mx-shadow);
  transition: background-color .25s ease, border-color .25s ease;
}
.mxTranscribe select {
  background: var(--mx-surface-2);
  border-color: var(--mx-line);
  color: var(--mx-text);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.mxTranscribe select:focus { outline: none; border-color: var(--mx-accent); box-shadow: var(--mx-ring); }
.mxTranscribe label > span { color: var(--mx-text); }

/* ---------------------------------------------------------------- en-tête du studio */
.mxStudio { padding: 30px; }
.mxStudioHead {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}
.mxStudioHead h1 { font-size: clamp(24px, 3.6vw, 32px); letter-spacing: -.02em; margin-bottom: 6px; }
.mxStudioHead .hint { margin: 0; max-width: 620px; }

.mxStatus {
  --dot: var(--mx-muted);
  --chip-bg: var(--mx-surface-3);
  --chip-text: var(--mx-muted);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: none;
  padding: 7px 13px 7px 11px;
  border-radius: 999px;
  background: var(--chip-bg);
  color: var(--chip-text);
  font-size: 13px;
  font-weight: 750;
  white-space: nowrap;
  transition: background-color .25s ease, color .25s ease;
}
.mxStatus i {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--dot);
  flex: none;
}
.mxStatus[data-state="recording"] { --dot: var(--mx-rec); --chip-bg: var(--mx-rec-soft); --chip-text: var(--mx-rec); }
.mxStatus[data-state="recording"] i { animation: mxBlink 1.1s ease-in-out infinite; }
.mxStatus[data-state="paused"],
.mxStatus[data-state="requesting"],
.mxStatus[data-state="stopping"] { --dot: var(--mx-warn); --chip-bg: var(--mx-warn-soft); --chip-text: var(--mx-warn); }
.mxStatus[data-state="available"] { --dot: var(--mx-info); --chip-bg: var(--mx-info-soft); --chip-text: var(--mx-info); }
.mxStatus[data-state="transcribing"] { --dot: var(--mx-accent); --chip-bg: var(--mx-accent-soft); --chip-text: var(--mx-accent); }
.mxStatus[data-state="transcribing"] i {
  background: none;
  border: 2px solid var(--mx-accent);
  border-right-color: transparent;
  animation: mxSpin .8s linear infinite;
}
.mxStatus[data-state="done"] { --dot: var(--mx-ok); --chip-bg: var(--mx-ok-soft); --chip-text: var(--mx-ok); }
.mxStatus[data-state="error"] { --dot: var(--mx-danger); --chip-bg: var(--mx-danger-soft); --chip-text: var(--mx-danger); }

/* ---------------------------------------------------------------- onglets */
.mxTabs {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border-radius: 14px;
  background: var(--mx-surface-3);
  margin-bottom: 18px;
  max-width: 100%;
}
.mxTab {
  gap: 8px;
  padding: 9px 16px;
  border-radius: 11px;
  background: transparent;
  color: var(--mx-muted);
  font-size: 14px;
  font-weight: 750;
  transition: background-color .2s ease, color .2s ease, box-shadow .2s ease;
}
.mxTab svg { width: 18px; height: 18px; fill: currentColor; flex: none; }
.mxTab:hover { color: var(--mx-text); }
.mxTab[aria-selected="true"] {
  background: var(--mx-surface);
  color: var(--mx-text);
  box-shadow: 0 1px 3px rgba(20, 20, 19, .08);
}
.mxTab:focus-visible { outline: none; box-shadow: var(--mx-ring); }

.mxPanel { animation: mxFadeUp .28s ease both; }

/* ---------------------------------------------------------------- enregistreur */
.mxRecorder {
  --mx-level: 0;
  --mic-from: var(--mx-grad-from);
  --mic-to: var(--mx-grad-to);
  --glow: rgba(217, 119, 87, .5);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 26px 8px 8px;
  border-radius: 20px;
  background:
    radial-gradient(120% 90% at 50% 0%, var(--mx-accent-soft), transparent 70%),
    var(--mx-surface-2);
  border: 1px solid var(--mx-line);
  transition: background .3s ease;
}
.mxRecorder[data-state="recording"] { --mic-from: var(--mx-rec); --mic-to: var(--mx-rec-2); --glow: rgba(239, 68, 68, .55); }
.mxRecorder[data-state="paused"] { --mic-from: #f59e0b; --mic-to: #f97316; --glow: rgba(245, 158, 11, .4); }

.mxMicWrap {
  position: relative;
  width: 128px;
  height: 128px;
  display: grid;
  place-items: center;
  margin-bottom: 14px;
}
.mxGlow {
  position: absolute;
  inset: -18px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--glow) 0%, transparent 68%);
  opacity: 0;
  transform: scale(1);
  transition: opacity .3s ease, transform .12s linear;
  pointer-events: none;
}
.mxRecorder[data-state="recording"] .mxGlow {
  opacity: calc(.35 + var(--mx-level) * .65);
  transform: scale(calc(1 + var(--mx-level) * .4));
}
.mxRecorder[data-state="paused"] .mxGlow { opacity: .25; }
.mxRing {
  position: absolute;
  inset: 6px;
  border-radius: 50%;
  border: 2px solid var(--mic-from);
  opacity: 0;
  pointer-events: none;
}
.mxRecorder[data-state="recording"] .mxRing { animation: mxPulse 1.8s ease-out infinite; }
.mxRecorder[data-state="requesting"] .mxRing { animation: mxPulse 1.2s ease-out infinite; }

.mxMic {
  position: relative;
  width: 108px;
  height: 108px;
  padding: 0;
  border-radius: 50%;
  background: linear-gradient(145deg, var(--mic-from), var(--mic-to));
  color: #fff;
  box-shadow: 0 14px 34px -10px var(--glow), inset 0 1px 0 rgba(255, 255, 255, .25);
  transition: transform .2s ease, box-shadow .2s ease, background .3s ease;
}
.mxMic svg { width: 44px; height: 44px; fill: currentColor; }
.mxMic:not(:disabled):hover { transform: translateY(-2px) scale(1.03); box-shadow: 0 18px 40px -10px var(--glow), inset 0 1px 0 rgba(255, 255, 255, .25); }
.mxMic:not(:disabled):active { transform: scale(.97); }
.mxMic:focus-visible { outline: none; box-shadow: var(--mx-ring), 0 14px 34px -10px var(--glow); }
.mxMic:disabled { cursor: default; }
.mxRecorder[data-state="idle"] .mxMic { animation: mxBreath 3.2s ease-in-out infinite; }

.mxTimer {
  font-size: clamp(32px, 6vw, 44px);
  font-weight: 800;
  letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  color: var(--mx-muted);
  line-height: 1.1;
  transition: color .25s ease;
}
.mxRecorder[data-state="recording"] .mxTimer { color: var(--mx-text); }
.mxRecorder[data-state="paused"] .mxTimer { animation: mxBlink 1.4s ease-in-out infinite; color: var(--mx-warn); }

.mxWave {
  display: block;
  width: min(560px, 100%);
  height: 64px;
  margin: 14px auto 8px;
}
.mxHint {
  margin: 4px auto 0;
  max-width: 520px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--mx-muted);
}
.mxLevelWarn {
  margin: 10px auto 0;
  padding: 7px 12px;
  border-radius: 10px;
  background: var(--mx-warn-soft);
  color: var(--mx-warn);
  font-size: 13px;
  font-weight: 650;
  animation: mxFadeUp .2s ease both;
}
.mxControls {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin: 18px 0 6px;
  animation: mxFadeUp .25s ease both;
}
.mxMicSelect {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 12px 0 4px;
  font-size: 12px;
  color: var(--mx-muted);
}
.mxTranscribe .mxMicSelect > span { margin: 0; font-size: 12px; font-weight: 700; color: var(--mx-muted); }
.mxMicSelect select { width: auto; max-width: 260px; padding: 6px 10px; font-size: 13px; border-radius: 10px; }

/* ---------------------------------------------------------------- boutons */
.mxBtn {
  gap: 8px;
  padding: 11px 17px;
  border-radius: 12px;
  border: 1px solid var(--mx-line);
  background: var(--mx-surface);
  color: var(--mx-text);
  font-size: 14px;
  font-weight: 750;
  transition: transform .15s ease, border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.mxBtn svg { width: 18px; height: 18px; fill: currentColor; flex: none; }
.mxBtn:hover:not(:disabled) { border-color: var(--mx-line-strong); transform: translateY(-1px); }
.mxBtn:active:not(:disabled) { transform: translateY(0); }
.mxBtn:focus-visible { outline: none; box-shadow: var(--mx-ring); }
.mxBtn:disabled { opacity: .5; cursor: not-allowed; }
.mxBtnSmall { padding: 9px 13px; font-size: 13px; }
.mxBtnSmall svg { width: 16px; height: 16px; }
.mxBtnStop { background: var(--mx-text); color: var(--mx-bg); border-color: transparent; }
.mxBtnStop:hover:not(:disabled) { border-color: transparent; box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .45); }
.mxBtnDanger { color: var(--mx-danger); }
.mxBtnDanger:hover:not(:disabled) { background: var(--mx-danger-soft); border-color: transparent; }

.mxTranscribe .mxPrimary {
  position: relative;
  width: 100%;
  min-height: 60px;
  gap: 10px;
  margin-top: 6px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--mx-grad-from), var(--mx-grad-to));
  color: #fff;
  font-size: 17px;
  font-weight: 850;
  letter-spacing: .04em;
  box-shadow: 0 14px 30px -12px rgba(193, 95, 60, .55);
  transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease, filter .2s ease;
  animation: mxFadeUp .3s ease both;
}
.mxTranscribe .mxPrimary svg { width: 22px; height: 22px; fill: currentColor; }
.mxTranscribe .mxPrimary:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 18px 36px -12px rgba(193, 95, 60, .65); filter: brightness(1.05); }
.mxTranscribe .mxPrimary:active:not(:disabled) { transform: translateY(0); }
.mxTranscribe .mxPrimary:focus-visible { outline: none; box-shadow: var(--mx-ring), 0 14px 30px -12px rgba(193, 95, 60, .55); }
.mxTranscribe .mxPrimary:disabled { opacity: .55; cursor: not-allowed; box-shadow: none; }
.mxTranscribe .mxPrimary[aria-busy="true"] svg { display: none; }
.mxTranscribe .mxPrimary[aria-busy="true"]::before {
  content: "";
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2.5px solid rgba(255, 255, 255, .9);
  border-right-color: transparent;
  animation: mxSpin .8s linear infinite;
}
.mxFootnote {
  margin: 10px 0 0;
  text-align: center;
  font-size: 12.5px;
  color: var(--mx-muted);
}

/* ---------------------------------------------------------------- audio enregistré */
.mxReview {
  padding: 20px;
  border-radius: 20px;
  background: var(--mx-surface-2);
  border: 1px solid var(--mx-line);
  animation: mxFadeUp .3s ease both;
}
.mxReviewHead {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
}
.mxFileBadge {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: linear-gradient(145deg, var(--mx-grad-from), var(--mx-grad-to));
  color: #fff;
}
.mxFileBadge svg { width: 24px; height: 24px; fill: currentColor; }
.mxReviewInfo { min-width: 0; }
.mxReviewInfo b { display: block; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mxReviewInfo small { display: block; margin-top: 3px; color: var(--mx-muted); font-size: 12.5px; }
.mxDuration {
  font-size: 22px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--mx-text);
}
.mxPlayer { display: block; width: 100%; height: 44px; margin: 16px 0 14px; }
.mxReviewActions { display: flex; flex-wrap: wrap; gap: 8px; }
.mxReviewActions .mxBtnDanger { margin-left: auto; }

/* ---------------------------------------------------------------- messages */
.mxNotice {
  margin-bottom: 14px;
  padding: 11px 14px;
  border-radius: 12px;
  background: var(--mx-info-soft);
  color: var(--mx-info);
  font-size: 13.5px;
  line-height: 1.5;
  animation: mxFadeUp .25s ease both;
}
.mxNotice b { margin-right: 4px; }
.mxNoticeWarn { background: var(--mx-warn-soft); color: var(--mx-warn); }
.mxNoticeError { background: var(--mx-danger-soft); color: var(--mx-danger); }

/* ---------------------------------------------------------------- import de fichier */
.mxTranscribe .mxDropzone {
  min-height: 210px;
  border: 2px dashed var(--mx-line-strong);
  border-radius: 20px;
  background: var(--mx-surface-2);
  color: var(--mx-text);
  transition: border-color .2s ease, background-color .2s ease, transform .2s ease;
}
.mxTranscribe .mxDropzone:hover,
.mxTranscribe .mxDropzone.isDragging { border-color: var(--mx-accent); background: var(--mx-accent-soft); }
.mxTranscribe .mxDropzone.isDragging { transform: scale(1.01); }
.mxTranscribe .mxDropzone span { color: var(--mx-muted); }
.mxDropIcon {
  width: 54px;
  height: 54px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  margin-bottom: 6px;
  background: var(--mx-accent-soft);
  color: var(--mx-accent) !important;
}
.mxDropIcon svg { width: 26px; height: 26px; fill: currentColor; }

.mxSettings { margin: 22px 0 18px; }

/* ---------------------------------------------------------------- progression / erreur */
.mxTranscribe #progressCard,
.mxTranscribe #errorCard { animation: mxFadeUp .3s ease both; }
.mxTranscribe .progressHeader p { color: var(--mx-muted); }
.mxTranscribe .percent { color: var(--mx-text); font-variant-numeric: tabular-nums; }
.mxTranscribe .progressTrack { background: var(--mx-surface-3); height: 12px; }
.mxTranscribe .progressBar {
  background: linear-gradient(90deg, var(--mx-grad-from), var(--mx-grad-to));
  border-radius: 999px;
}
.mxTranscribe .secondary {
  background: var(--mx-surface-3);
  color: var(--mx-text);
  border-radius: 12px;
}
.mxTranscribe .errorCard { border-color: var(--mx-danger-soft); }
.mxTranscribe .errorCard pre { color: var(--mx-danger); line-height: 1.55; }

/* ---------------------------------------------------------------- historique */
.mxTranscribe .historyRow,
.mxTranscribe .historyRow.disabled:hover {
  background: var(--mx-surface);
  border-color: var(--mx-line);
  color: var(--mx-text);
}
.mxTranscribe .historyRow:hover { background: var(--mx-surface-2); border-color: var(--mx-line-strong); }
.mxTranscribe .historyRow.current { border-color: var(--mx-accent); background: var(--mx-accent-soft); }
.mxTranscribe .historyRowIcon { background: var(--mx-surface-3); color: var(--mx-muted); }
.mxTranscribe .historyRowText small { color: var(--mx-muted); }
.mxTranscribe .historyRowAction,
.mxTranscribe .seeAllHistoryBtn { color: var(--mx-accent); }
.mxTranscribe .historyPageSearch { background: var(--mx-surface-2); border-color: var(--mx-line); color: var(--mx-text); }
.mxTranscribe .historyEmpty { border-color: var(--mx-line-strong); color: var(--mx-muted); }
.mxTranscribe .historyBadge.done { background: var(--mx-ok-soft); color: var(--mx-ok); }
.mxTranscribe .historyBadge.running { background: var(--mx-info-soft); color: var(--mx-info); }
.mxTranscribe .historyBadge.paused { background: var(--mx-warn-soft); color: var(--mx-warn); }
.mxTranscribe .historyBadge.failed { background: var(--mx-danger-soft); color: var(--mx-danger); }
.mxTranscribe .historyGuestLogin { background: linear-gradient(135deg, var(--mx-grad-from), var(--mx-grad-to)); }

/* ---------------------------------------------------------------- éditeur (thème) */
body.mxTranscribe.workspaceOpen,
.mxTranscribe .transcriptionWorkspace { background: var(--mxw-bg); }
.mxTranscribe .workspaceLeft,
.mxTranscribe .workspaceRight { background: var(--mxw-panel); border-color: var(--mxw-line); }
.mxTranscribe .workspaceCenter { background: var(--mxw-bg); }
.mxTranscribe .workspaceBrand,
.mxTranscribe .rightPanelInner h3 { color: var(--mxw-title); }
.mxTranscribe .iconButton { background: var(--mxw-hover); color: var(--mxw-text); }
.mxTranscribe .newTranscriptBtn,
.mxTranscribe .saveWideBtn,
.mxTranscribe .playPauseButton { background: var(--mxw-strong); color: var(--mxw-strong-text); }
.mxTranscribe .leftSectionTitle,
.mxTranscribe .leftNavItem,
.mxTranscribe .historyItem,
.mxTranscribe .sideAction,
.mxTranscribe .sideToggle { color: var(--mxw-text); }
.mxTranscribe .leftNavItem:hover,
.mxTranscribe .leftNavItem.active,
.mxTranscribe .sideAction:hover { background: var(--mxw-hover); }
.mxTranscribe .historyItem:hover,
.mxTranscribe .historyItem.current { background: var(--mxw-current); }
.mxTranscribe .historyItem small,
.mxTranscribe .sideAction small,
.mxTranscribe .documentMeta,
.mxTranscribe .saveStatus,
.mxTranscribe .inlineTimecode,
.mxTranscribe .playerTime,
.mxTranscribe .followCompact { color: var(--mxw-muted); }
.mxTranscribe .documentPage { background: var(--mxw-page); border-color: var(--mxw-line); }
.mxTranscribe .documentHeader { border-bottom-color: var(--mxw-line-soft); }
.mxTranscribe .documentHeader h1 { color: var(--mxw-title); }
.mxTranscribe .documentSearch,
.mxTranscribe .backToHistoryBtn,
.mxTranscribe .rateSelect {
  background: var(--mxw-input);
  border-color: var(--mxw-line);
  color: var(--mxw-text);
}
.mxTranscribe .backToHistoryBtn:hover { background: var(--mxw-hover); }
.mxTranscribe .transcriptDocument { color: var(--mxw-text); }
.mxTranscribe .inlineSegment.active { background: var(--mxw-highlight); }
.mxTranscribe .inlineEditable { background: var(--mxw-input); }
.mxTranscribe .inlineEditable:focus { background: var(--mxw-page); }
.mxTranscribe .sideIcon { background: var(--mxw-page); border-color: var(--mxw-line); color: var(--mxw-text); }
.mxTranscribe .sideIcon.aiIcon { background: #10a37f; border-color: #10a37f; color: #fff; }
.mxTranscribe .rightDivider { background: var(--mxw-line); }
.mxTranscribe .bottomPlayer { background: var(--mxw-page); border-top-color: var(--mxw-line); color: var(--mxw-text); }
.mxTranscribe .playerIconButton { color: var(--mxw-text); }
.mxTranscribe .aiDialog,
.mxTranscribe .translationDialog,
.mxTranscribe .accountFinishDialog { background: var(--mxw-page); color: var(--mxw-text); }
.mxTranscribe .aiDialog textarea,
.mxTranscribe .translationControls input,
.mxTranscribe .translationControls select { background: var(--mxw-input); color: var(--mxw-text); border-color: var(--mxw-line); }
.mxTranscribe .translationControls,
.mxTranscribe .translationRow { background: var(--mxw-panel); border-color: var(--mxw-line); }
.mxTranscribe .translationOriginal,
.mxTranscribe .translationTranslated { background: var(--mxw-page); color: var(--mxw-text); }
.mxTranscribe .accountFinishBox { color: var(--mxw-text); }
@media (max-width: 820px) {
  .mxTranscribe .workspaceRight { background: var(--mxw-page); border-top-color: var(--mxw-line); }
}

/* ---------------------------------------------------------------- animations */
@keyframes mxFadeUp { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes mxSpin { to { transform: rotate(360deg); } }
@keyframes mxBlink { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes mxPulse {
  0% { opacity: .7; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.45); }
}
@keyframes mxBreath {
  0%, 100% { box-shadow: 0 14px 34px -10px var(--glow), 0 0 0 0 rgba(217, 119, 87, 0); }
  50% { box-shadow: 0 14px 34px -10px var(--glow), 0 0 0 10px rgba(217, 119, 87, .1); }
}
@media (prefers-reduced-motion: reduce) {
  .mxTranscribe *, .mxTranscribe *::before, .mxTranscribe *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ---------------------------------------------------------------- tablettes et mobiles */
@media (max-width: 760px) {
  .mxTranscribe .topbarActions { flex-direction: row; flex-wrap: wrap; align-items: center; }
}
@media (max-width: 640px) {
  .mxTranscribe .transcribePage { width: calc(100% - 24px); padding-top: 18px; }
  .mxStudio { padding: 20px 16px; }
  .mxStudioHead { flex-direction: column-reverse; gap: 10px; }
  .mxTabs { display: flex; width: 100%; }
  .mxTab { flex: 1; gap: 6px; padding: 10px 6px; font-size: 13px; white-space: nowrap; }
  .mxRecorder { padding: 22px 4px 6px; }
  .mxMicWrap { width: 112px; height: 112px; }
  .mxMic { width: 96px; height: 96px; }
  .mxMic svg { width: 40px; height: 40px; }
  .mxControls .mxBtn { flex: 1 1 140px; }
  .mxReview { padding: 16px; }
  .mxReviewHead { grid-template-columns: 44px minmax(0, 1fr); }
  .mxDuration { grid-column: 1 / -1; font-size: 18px; }
  .mxReviewActions .mxBtn { flex: 1 1 calc(50% - 8px); }
  .mxReviewActions .mxBtnDanger { margin-left: 0; }
  .mxTranscribe .mxPrimary { min-height: 56px; font-size: 16px; }
}

/* V19.2 : transcription depuis le lien d'une vidéo */
.mxTranscribe .mxUrlOr { display: flex; align-items: center; gap: 12px; margin: 16px 0 12px; color: var(--mx-muted); font-size: 13px; }
.mxTranscribe .mxUrlOr::before,
.mxTranscribe .mxUrlOr::after { content: ""; flex: 1; height: 1px; background: currentColor; opacity: .3; }
.mxTranscribe .mxUrlField { display: grid; gap: 6px; }
.mxTranscribe .mxUrlField > span { font-weight: 600; }
.mxTranscribe .mxUrlField input {
  width: 100%; box-sizing: border-box; min-width: 0;
  padding: 12px 14px; border: 1px solid var(--mx-line); border-radius: 12px;
  background: var(--mx-surface-2); color: var(--mx-text); font: inherit;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.mxTranscribe .mxUrlField input:focus { outline: none; border-color: var(--mx-accent); box-shadow: var(--mx-ring); }
.mxTranscribe .mxUrlField small { color: var(--mx-muted); }

/* V23 — option « Améliorer la voix » */
.mxEnhance {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: -4px 0 18px;
  padding: 12px 14px;
  border: 1px solid var(--mx-line);
  border-radius: 14px;
  background: var(--mx-surface-2);
  cursor: pointer;
}
.mxEnhance input { width: 18px; height: 18px; margin: 2px 0 0; flex: none; accent-color: var(--mx-accent); }
.mxEnhanceText { display: flex; flex-direction: column; gap: 3px; }
.mxTranscribe .mxEnhanceText b { font-size: 14px; color: var(--mx-text); margin: 0; }
.mxTranscribe .mxEnhanceText small { font-size: 12.5px; line-height: 1.45; color: var(--mx-muted); }
