﻿:root {
  /* ---------- Transfereko palette — docs/CHARTE-VISUELLE.md ---------- */
  --bg: #F7F5FC;
  --surface: #FFFFFF;
  --surface-raised: #F0EBFA;
  --border: #E4DDF2;
  --border-soft: #EEEAF6;
  --text: #0A0A0A;
  --text-dim: #5C5668;
  --text-faint: #8E879A;

  /* Violet accent + lime highlight */
  --accent: #7D39EB;
  --accent-bright: #9B5FFF;
  --accent-deep: #5B21B6;
  --accent-wash: rgba(125, 57, 235, 0.10);
  --accent-rgb: 125, 57, 235;
  --on-accent: #FFFFFF;

  --lime: #C6FF33;
  --lime-rgb: 198, 255, 51;
  --on-lime: #0A0A0A;

  --success: #C6FF33;
  --danger: #FF4D6A;

  --font-display: 'Space Grotesk', sans-serif;
  --font-body: 'Inter', sans-serif;
  --font-mono: 'IBM Plex Mono', monospace;

  --radius-lg: 22px;
  --radius-md: 14px;
  --radius-sm: 10px;

  --shadow-sm: 0 2px 10px rgba(10, 10, 10, 0.06);
  --shadow-md: 0 14px 32px -14px rgba(125, 57, 235, 0.28), 0 4px 14px -6px rgba(10, 10, 10, 0.08);
  --shadow-lg: 0 28px 56px -22px rgba(125, 57, 235, 0.32), 0 10px 24px -10px rgba(10, 10, 10, 0.12);

  --glass: color-mix(in srgb, var(--surface) 72%, transparent);
  --glass-border: color-mix(in srgb, var(--border) 65%, transparent);
  --header-offset: 120px;

  color-scheme: light;
}

:root[data-theme="dark"] {
  --bg: #000000;
  --surface: #121214;
  --surface-raised: #1C1C22;
  --border: #2A2A32;
  --border-soft: #222228;
  --text: #FFFFFF;
  --text-dim: #A8A4B3;
  --text-faint: #6F6A7A;

  --accent: #9B5FFF;
  --accent-bright: #B58AFF;
  --accent-deep: #7D39EB;
  --accent-wash: rgba(155, 95, 255, 0.16);
  --accent-rgb: 155, 95, 255;
  --on-accent: #FFFFFF;

  --lime: #C6FF33;
  --lime-rgb: 198, 255, 51;
  --on-lime: #0A0A0A;

  --success: #C6FF33;
  --danger: #FF6B81;

  --shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.45);
  --shadow-md: 0 14px 32px -14px rgba(155, 95, 255, 0.35), 0 4px 16px -6px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 28px 56px -20px rgba(155, 95, 255, 0.4), 0 12px 28px -10px rgba(0, 0, 0, 0.55);

  --glass: color-mix(in srgb, var(--surface) 62%, transparent);
  --glass-border: color-mix(in srgb, var(--border) 55%, transparent);

  color-scheme: dark;
}

* {
  box-sizing: border-box;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--text-faint) 45%, transparent) transparent;
}

html { background: var(--bg); }

body {
  margin: 0;
  background: transparent;
  color: var(--text);
  font-family: var(--font-body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  transition: color 0.25s ease;
}

/* ---------- Scrollbars (fins, fond transparent) ---------- */
*::-webkit-scrollbar {
  width: 4px;
  height: 4px;
}
*::-webkit-scrollbar-track,
*::-webkit-scrollbar-corner {
  background: transparent;
}
*::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--text-faint) 40%, transparent);
  border-radius: 999px;
  border: none;
  background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover {
  background: color-mix(in srgb, var(--text-dim) 55%, transparent);
}
*::-webkit-scrollbar-button {
  display: none;
  width: 0;
  height: 0;
}

/* ---------- Fond animÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© ---------- */
.bg-fx {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background: var(--bg);
  transition: background 0.25s ease;
}
.bg-glow {
  position: absolute;
  width: 62vw;
  max-width: 900px;
  height: 62vw;
  max-height: 900px;
  left: -12vw;
  top: -22vw;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(var(--accent-rgb), 0.14), transparent 68%);
  filter: blur(6px);
  animation: glow-pulse 11s ease-in-out infinite;
}
.bg-glow::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 65% 65%, rgba(var(--accent-rgb), 0.09), transparent 60%);
}
:root[data-theme="dark"] .bg-glow { opacity: 0.85; }
@keyframes glow-pulse {
  0%, 100% { transform: scale(1); opacity: 0.55; }
  50% { transform: scale(1.14); opacity: 0.85; }
}
.bg-stars { position: absolute; inset: 0; display: none; }
.star {
  position: absolute;
  width: 2px;
  height: 2px;
  border-radius: 50%;
  background: var(--text-dim);
  animation: twinkle 4s ease-in-out infinite;
}
:root[data-theme="dark"] .bg-stars { display: block; }
@keyframes twinkle {
  0%, 100% { opacity: 0.1; }
  50% { opacity: 0.85; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}

button, input { font-family: inherit; }

:focus-visible {
  outline: 2px solid var(--accent-bright);
  outline-offset: 2px;
  border-radius: 4px;
}

.app {
  max-width: 1180px;
  margin: 0 auto;
  padding: 18px 24px 70px;
}

/* ---------- Header (sticky) ---------- */
.app-header {
  position: sticky;
  top: 0;
  z-index: 80;
  width: 100%;
  margin: 0;
  padding: 18px 24px 14px;
  background: transparent;
  border-bottom: 1px solid transparent;
  box-shadow: none;
  backdrop-filter: blur(0);
  -webkit-backdrop-filter: blur(0);
  transition:
    background-color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    backdrop-filter 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    -webkit-backdrop-filter 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    padding 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.app-header-inner {
  max-width: 1180px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.header-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 44px;
}

/* Logo texte "Transfereko" ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ grand, alignÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© verticalement avec les icÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´nes */
.brand-wordmark {
  display: flex;
  align-items: center;
  height: 100px;
  flex-shrink: 0;
  text-decoration: none;
  transition: height 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.wordmark-img {
  height: 100%;
  width: auto;
  max-width: 500px;
  object-fit: contain;
  display: block;
  transition: max-width 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.brand-tagline {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.92rem;
  max-width: 42ch;
  line-height: 1.4;
  opacity: 1;
  max-height: 3.2em;
  overflow: hidden;
  transform: translateY(0);
  transition:
    opacity 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    margin 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

/* ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ°tat compact au scroll */
.app-header.is-compact {
  padding: 10px 24px;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  border-bottom-color: var(--border-soft);
  box-shadow: 0 8px 28px -18px rgba(43, 33, 27, 0.28);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
}

.app-header.is-compact .brand-wordmark {
  height: 48px;
}

.app-header.is-compact .wordmark-img {
  max-width: 240px;
}

.app-header.is-compact .brand-tagline {
  opacity: 0;
  max-height: 0;
  margin: 0;
  transform: translateY(-6px);
  pointer-events: none;
}

:root[data-theme="dark"] .app-header.is-compact {
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  box-shadow: 0 10px 32px -16px rgba(0, 0, 0, 0.55);
}

@media (max-width: 640px) {
  .app-header { padding: 14px 16px 10px; }
  .app-header.is-compact { padding: 8px 16px; }

  .brand-wordmark { height: 48px; }
  .app-header.is-compact .brand-wordmark { height: 36px; }

  .wordmark-img { max-width: 240px; }
  .app-header.is-compact .wordmark-img { max-width: 180px; }

  .brand-tagline {
    font-size: 0.84rem;
    max-width: none;
  }

  .header-actions { gap: 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .app-header,
  .brand-wordmark,
  .wordmark-img,
  .brand-tagline {
    transition: none !important;
  }
}

.header-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }

.install-btn {
  width: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 38px;
  padding: 0 14px;
  border-radius: 999px;
  font-size: 0.85rem;
  font-weight: 500;
  box-shadow: var(--shadow-sm);
}
.install-btn[hidden] { display: none; }

.theme-toggle {
  width: 40px;
  height: 40px;
  min-width: 40px;
  min-height: 40px;
  aspect-ratio: 1 / 1;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--border);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.15s ease, transform 0.15s ease;
  padding: 0;
  box-sizing: border-box;
}
.theme-toggle:hover { background: var(--accent-wash); border-color: var(--accent);}
.theme-toggle:active { background: var(--accent-deep); border-color: var(--accent);}

/* ---------- SÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lecteur de langue ---------- */
.lang-switcher { position: relative; }
.lang-switcher-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  padding: 0 12px;
  border-radius: 999px;
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: background 0.15s ease, border-color 0.15s ease;
}
.lang-switcher-btn:hover { background: var(--accent-wash); border-color: var(--accent); }
.lang-switcher-btn i { font-size: 0.85rem; color: var(--text-dim); }
.lang-switcher-caret { font-size: 0.6rem !important; transition: transform 0.15s ease; }
.lang-switcher-btn[aria-expanded="true"] .lang-switcher-caret { transform: rotate(180deg); }

.lang-switcher-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 168px;
  margin: 0;
  padding: 6px;
  list-style: none;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: 50;
  animation: modal-in 0.15s ease-out;
}
.lang-switcher-menu[hidden] { display: none; }
.lang-switcher-menu li { margin: 0; }
.lang-switcher-menu button {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  background: transparent;
  border: none;
  color: var(--text);
  padding: 9px 10px;
  border-radius: var(--radius-sm);
  font-size: 0.88rem;
  text-align: left;
  cursor: pointer;
  transition: background 0.12s ease;
}
.lang-switcher-menu button:hover { background: var(--surface-raised); }
.lang-switcher-menu .lang-code {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 0.76rem;
  color: var(--text-dim);
  width: 26px;
  flex-shrink: 0;
}
.lang-switcher-menu .lang-full { color: var(--text); }
.lang-switcher-menu li[aria-selected="true"] button {
  background: var(--accent-wash);
  color: var(--accent-deep);
}
.lang-switcher-menu li[aria-selected="true"] .lang-code { color: var(--accent-deep); }

.banner {
  background: rgba(255, 83, 43, 0.10);
  border: 1px solid rgba(255, 83, 43, 0.28);
  color: var(--accent-deep);
  border-radius: var(--radius-sm);
  padding: 10px 16px;
  font-size: 0.86rem;
  margin-bottom: 20px;
}

/* ---------- Onglets mobiles ---------- */
/* MasquÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©s par dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©faut : sur desktop les deux panneaux restent cÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´te ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ  cÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´te. */
.mobile-tabs {
  display: none;
  gap: 8px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: 5px;
  margin-top: 16px;
  box-shadow: var(--shadow-sm);
}
.mobile-tab {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  background: transparent;
  border: none;
  border-radius: var(--radius-sm);
  color: var(--text-dim);
  padding: 10px 8px;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.mobile-tab .btn-icon { font-size: 1rem; }
.mobile-tab:hover { color: var(--accent-deep); }
.mobile-tab.active { background: var(--accent-wash); color: var(--accent-deep); }

/* ---------- Layout ---------- */
.layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 20px;
  align-items: start;
  margin-top: 22px;
}
@media (max-width: 860px) {
  .layout { grid-template-columns: 1fr; }
  .mobile-tabs { display: flex; }
  .side-panel.tab-hidden,
  .main-panel.tab-hidden { display: none; }
}

.panel { display: flex; flex-direction: column; gap: 18px; }

/* Colonne gauche sticky : reste fixe pendant le scroll des transferts,
   puis part avec le flux quand le footer arrive. Si la sidebar est plus
   haute que l'ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©cran, elle dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©file en interne (overflow). */
@media (min-width: 861px) {
  /* Hauteur mini pour que le sticky ait de la ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ« course ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ» mÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂªme si
     l'historique de transferts est vide / court. */
  .layout {
    min-height: calc(100vh - 150px);
  }
  .main-panel {
    min-height: calc(100vh - 170px);
  }
  .side-panel {
    position: sticky;
    top: calc(var(--header-offset, 120px) + 12px);
    align-self: start;
    max-height: calc(100vh - var(--header-offset, 120px) - 28px);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: 2px;
    padding-bottom: 0;
    padding-top: 0;
  }
}

/* Edge fades: flush to top/bottom — no empty strip under/above the gradient */
.side-panel-fade,
.side-panel-fade-top {
  display: none;
}
@media (min-width: 861px) {
  .side-panel-fade,
  .side-panel-fade-top {
    display: block;
    position: sticky;
    flex: none;
    height: 72px;
    pointer-events: none;
    z-index: 4;
  }
  .side-panel-fade {
    bottom: 0;
    margin-top: -72px;
    background: linear-gradient(
      to bottom,
      transparent 0%,
      color-mix(in srgb, var(--bg) 35%, transparent) 40%,
      color-mix(in srgb, var(--bg) 78%, transparent) 72%,
      var(--bg) 100%
    );
  }
  .side-panel-fade-top {
    top: 0;
    margin-bottom: -72px;
    background: linear-gradient(
      to top,
      transparent 0%,
      color-mix(in srgb, var(--bg) 35%, transparent) 40%,
      color-mix(in srgb, var(--bg) 78%, transparent) 72%,
      var(--bg) 100%
    );
  }
  /* Dark: avoid pitch-black band — blend toward surface (matches page ambiance) */
  :root[data-theme="dark"] .side-panel-fade {
    background: linear-gradient(
      to bottom,
      transparent 0%,
      color-mix(in srgb, var(--surface) 28%, transparent) 42%,
      color-mix(in srgb, var(--surface) 72%, transparent) 78%,
      color-mix(in srgb, var(--surface) 92%, var(--bg)) 100%
    );
  }
  :root[data-theme="dark"] .side-panel-fade-top {
    background: linear-gradient(
      to top,
      transparent 0%,
      color-mix(in srgb, var(--surface) 28%, transparent) 42%,
      color-mix(in srgb, var(--surface) 72%, transparent) 78%,
      color-mix(in srgb, var(--surface) 92%, var(--bg)) 100%
    );
  }
}
}

.main-panel {
  min-width: 0;
}

/* ---------- Dual-choice hero (Cloud vs WiFi Local) ---------- */
.mode-hero {
  display: none;
  position: relative;
  z-index: 40;
  max-width: 980px;
  margin: 0 auto;
  padding: 28px 24px 56px;
  animation: mode-hero-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}

body.has-mode-hero .mode-hero,
html.has-mode-hero .mode-hero { display: block; }
body.has-mode-hero .app,
html.has-mode-hero .app { display: none; }
body.has-mode-hero .brand-tagline,
html.has-mode-hero .brand-tagline { display: none; }

@keyframes mode-hero-in {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: none; }
}

.mode-hero-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 14px;
}

.mode-hero-eyebrow {
  margin: 0;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}

.mode-hero-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.85rem, 4.5vw, 2.75rem);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -0.03em;
  color: var(--text);
}

.mode-hero-lead {
  margin: 0 0 10px;
  max-width: 34rem;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--text-dim);
}

.mode-hero-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  width: 100%;
  margin-top: 8px;
}

.mode-hero-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  padding: 28px 24px 22px;
  text-align: left;
  text-decoration: none;
  color: inherit;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--accent) 10%, var(--glass)) 0%, var(--surface) 58%),
    var(--surface);
  box-shadow: var(--shadow-md);
  cursor: pointer;
  overflow: hidden;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease,
    border-color 0.25s ease;
  font: inherit;
  appearance: none;
  -webkit-appearance: none;
}
.mode-hero-card::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    120deg,
    transparent 35%,
    color-mix(in srgb, #fff 22%, transparent) 48%,
    transparent 62%
  );
  transform: translateX(-120%);
  transition: transform 0.7s ease;
}
.mode-hero-card:hover::after,
.mode-hero-card:focus-visible::after {
  transform: translateX(120%);
}
/* BorderGlow owns ::after — never slide it out of the card */
.mode-hero-card.border-glow-card::after,
.mode-hero-card.border-glow-card:hover::after,
.mode-hero-card.border-glow-card:focus-visible::after {
  transform: none !important;
  transition: opacity 0.25s ease-out !important;
}

.mode-hero-card:hover,
.mode-hero-card:focus-visible {
  transform: translateY(-8px) scale(1.01);
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  box-shadow: var(--shadow-lg), 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent);
  outline: none;
}

.mode-hero-card-local {
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--success) 10%, var(--surface)) 0%, var(--surface) 55%),
    var(--surface);
}

.mode-hero-card-local:hover,
.mode-hero-card-local:focus-visible {
  border-color: color-mix(in srgb, var(--success) 40%, var(--border));
}

.mode-hero-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  font-size: 1.25rem;
  color: var(--on-accent);
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  box-shadow: 0 8px 18px -10px rgba(var(--accent-rgb), 0.75);
}

.mode-hero-card-local .mode-hero-card-icon {
  background: linear-gradient(180deg, #6FCF97, var(--success));
  box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--success) 70%, transparent);
}

.mode-hero-card-badge {
  position: absolute;
  top: 18px;
  right: 18px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--accent-deep);
  background: var(--accent-wash);
  border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);
}

.mode-hero-card-badge-accent {
  color: color-mix(in srgb, var(--success) 35%, var(--text));
  background: color-mix(in srgb, var(--success) 14%, transparent);
  border-color: color-mix(in srgb, var(--success) 28%, transparent);
}

.mode-hero-card h2 {
  margin: 6px 0 0;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
}

.mode-hero-card p {
  margin: 0;
  flex: 1;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--text-dim);
}

.mode-hero-card-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--accent);
}

.mode-hero-card-local .mode-hero-card-cta { color: var(--success); }

.mode-hero-card-cta i {
  transition: transform 0.2s ease;
}

.mode-hero-card:hover .mode-hero-card-cta i,
.mode-hero-card:focus-visible .mode-hero-card-cta i {
  transform: translateX(4px);
}

.mode-hero-skip {
  margin-top: 18px;
  padding: 8px 14px;
  border: none;
  background: transparent;
  color: var(--text-faint);
  font-size: 0.85rem;
  font-weight: 500;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 0.15s ease;
}

.mode-hero-skip:hover { color: var(--text-dim); }

/* ---------- Path switcher (Cloud <-> Local WiFi) ---------- */
.path-switcher {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 14px;
  padding: 6px;
  border-radius: var(--radius-md);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--accent) 6%, var(--surface)), var(--surface)),
    var(--surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
}

.path-switch {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 12px 11px;
  border: 1px solid transparent;
  border-radius: 14px;
  background: transparent;
  color: var(--text-dim);
  text-decoration: none;
  text-align: left;
  cursor: pointer;
  font: inherit;
  appearance: none;
  -webkit-appearance: none;
  transition:
    background 0.18s ease,
    border-color 0.18s ease,
    color 0.18s ease,
    box-shadow 0.18s ease;
}

.path-switch:hover {
  color: var(--text);
  background: var(--surface-raised);
}

.path-switch.is-active {
  color: var(--text);
  background: var(--surface);
  border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
  box-shadow: var(--shadow-sm);
}

.path-switch-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  margin-top: 1px;
  border-radius: 10px;
  font-size: 0.9rem;
  color: var(--text-dim);
  background: var(--surface-raised);
  transition: background 0.18s ease, color 0.18s ease;
}

.path-switch.is-active .path-switch-icon {
  color: var(--on-accent);
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
}

.path-switch-copy {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.path-switch-copy strong {
  font-family: var(--font-display);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.2;
  color: inherit;
}

.path-switch-copy em {
  font-style: normal;
  font-size: 0.68rem;
  line-height: 1.35;
  color: var(--text-faint);
  font-weight: 500;
}

.path-switch.is-active .path-switch-copy em {
  color: var(--text-dim);
}

@media (max-width: 720px) {
  .mode-hero { padding: 18px 16px 40px; }
  .mode-hero-cards { grid-template-columns: 1fr; gap: 12px; }
  .mode-hero-card { padding: 22px 18px 18px; }
  .path-switcher { gap: 6px; padding: 5px; }
  .path-switch { padding: 10px 8px; gap: 8px; }
  .path-switch-copy em { display: none; }
  .path-switch-copy strong { font-size: 0.76rem; }
}

@media (prefers-reduced-motion: reduce) {
  .mode-hero { animation: none; }
  .mode-hero-card,
  .mode-hero-card-cta i { transition: none; }
}

/* ---------- Sélecteur de mode Local / Distance ---------- */
.mode-switcher {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 5px;
  margin-bottom: 12px;
  border-radius: var(--radius-md);
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-sm);
}
.mode-switch-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 10px 8px;
  border: none;
  border-radius: 12px;
  background: transparent;
  color: var(--text-dim);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.16s ease, color 0.16s ease, box-shadow 0.16s ease;
}
.mode-switch-btn:hover { color: var(--text); background: var(--surface-raised); }
.mode-switch-btn.active {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  box-shadow: 0 6px 16px -8px rgba(var(--accent-rgb), 0.7);
}
.mode-switch-btn .btn-icon { font-size: 0.85rem; }

.connection-status {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  background: var(--surface-raised);
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--text-dim);
}
.connection-status-dot {
  flex: none;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 22%, transparent);
  animation: connection-dot-pulse 2.4s ease-in-out infinite;
}
.connection-status.is-remote {
  border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%),
    var(--surface-raised);
  color: var(--text);
}
.connection-status.is-remote .connection-status-dot {
  background: var(--accent-bright);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.22);
}
@keyframes connection-dot-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.65; transform: scale(0.86); }
}

#newRoomBtn {
  width: 100%;
  margin-top: 12px;
}
#newRoomBtn[hidden] { display: none !important; }

.card {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 20px;
  box-shadow: var(--shadow-sm);
  transition:
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s ease,
    border-color 0.2s ease,
    background 0.2s ease;
}
.card.tk-glass-hover:hover,
.card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
  border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
}
.card-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 4px; }
.card h2 { font-family: var(--font-display); font-size: 1rem; margin: 0 0 6px; }
.device-name { font-size: 0.82rem; color: var(--text-dim); }
.device-name-wrap { display: flex; align-items: center; gap: 6px; }
.edit-name-btn {
  background: transparent;
  border: none;
  color: var(--text-faint);
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  font-size: 0.75rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: color 0.15s ease, background 0.15s ease;
}
.edit-name-btn:hover { color: var(--accent-bright); background: var(--surface-raised); }
.device-meta {
  margin: -6px 0 0;
  font-size: 0.72rem;
  font-family: var(--font-mono);
  color: var(--text-faint);
}
.device-meta:empty { display: none; }
.hint { color: var(--text-dim); font-size: 0.85rem; margin: 0 0 14px; }

/* ---------- QR ---------- */
.qr-wrap {
  background: var(--surface-raised);
  border-radius: var(--radius-md);
  padding: 14px;
  display: flex;
  justify-content: center;
  margin-bottom: 10px;
}
.qr-wrap canvas {
  width: 100% !important;
  max-width: 180px;
  height: auto !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: contain;
  display: block;
  border-radius: 8px;
}

/* ---------- Buttons ---------- */
.primary-btn {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  border: none;
  padding: 12px 22px;
  border-radius: var(--radius-sm);
  font-size: 0.92rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, var(--shadow-md);
  transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.2s ease, filter 0.15s ease;
}
.primary-btn:hover {
  filter: brightness(1.06);
  transform: translateY(-2px);
  box-shadow: 0 10px 24px -10px rgba(var(--accent-rgb), 0.55);
}
.primary-btn:active { transform: translateY(1px) scale(0.99); }
.primary-btn:disabled {
  background: var(--surface-raised);
  color: var(--text-faint);
  box-shadow: none;
  cursor: not-allowed;
  filter: none;
}
.primary-btn.small { padding: 10px 16px; font-size: 0.85rem; white-space: nowrap; }

.ghost-btn {
  width: 100%;
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text);
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: 0.88rem;
  cursor: pointer;
  transition:
    border-color 0.2s ease,
    color 0.2s ease,
    background 0.2s ease,
    transform 0.2s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.2s ease;
}
.ghost-btn:hover {
  border-color: var(--accent);
  color: var(--accent-bright);
  background: var(--accent-wash);
  transform: translateY(-1px);
}

.icon-btn {
  background: var(--surface-raised);
  border: 1px solid var(--border);
  color: var(--text-dim);
  width: 38px;
  height: 38px;
  border-radius: var(--radius-sm);
  font-size: 1rem;
  cursor: pointer;
  flex-shrink: 0;
}
.icon-btn:hover { color: var(--accent-bright); border-color: var(--accent); }

/* ---------- IcÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´nes + libellÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©s (se replient en icÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´nes seules sur mobile) ---------- */
.btn-icon { line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.btn-icon i, .icon-btn i, .theme-toggle i, .peer-icon i, .transfer-glyph i,
.cancel-btn i, .view-btn i, .text-btn i, .lightbox-close i, .lightbox-nav i,
.lightbox-download i, .thumb-play i { line-height: 1; }
.btn-text { display: inline; }
.ghost-btn .btn-icon, .primary-btn .btn-icon, .text-btn .btn-icon,
.filter-chip .btn-icon, .peer-connect-btn .btn-icon { margin-right: 6px; }

/* Infobulle lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©gÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¨re pour les contrÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´les rÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©duits ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ  une icÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´ne sur mobile */
[data-tooltip] { position: relative; }
[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  background: var(--text);
  color: var(--bg);
  font-size: 0.72rem;
  font-weight: 500;
  white-space: nowrap;
  padding: 5px 9px;
  border-radius: 6px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.12s ease, transform 0.12s ease;
  z-index: 20;
  box-shadow: var(--shadow-sm);
}
[data-tooltip]:hover::after,
[data-tooltip]:focus-visible::after {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ---------- Code de connexion ---------- */
.code-display {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 12px 14px;
  margin-bottom: 16px;
}
.code-value {
  font-family: var(--font-mono);
  font-size: 1.35rem;
  letter-spacing: 0.18em;
  flex: 1;
  color: var(--accent-deep);
}

.code-form-label { display: block; font-size: 0.8rem; color: var(--text-dim); margin-bottom: 8px; }
.code-form-row { display: flex; gap: 8px; }
#codeInput {
  flex: 1;
  min-width: 0;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  font-family: var(--font-mono);
  letter-spacing: 0.12em;
  font-size: 0.95rem;
  text-transform: uppercase;
}
#codeInput::placeholder { color: var(--text-faint); letter-spacing: 0.05em; }
#codeInput:focus { border-color: var(--accent); }

/* ---------- Peer list ---------- */
.peer-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.empty-state { color: var(--text-faint); font-size: 0.86rem; }

.peer-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 10px 12px;
  position: relative;
  transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
}
.peer-item.connected { border-color: rgba(79, 174, 122, 0.4); background: rgba(79, 174, 122, 0.08); }
.peer-item.pending { border-color: rgba(var(--accent-rgb), 0.4); }
/* Appareil connectÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© : la carte entiÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¨re est cliquable pour basculer sa
   sÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lection ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ utile pour composer rapidement un groupe multicast ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ curseur
   pointer et lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©ger effet au survol. */
.peer-item.connected { cursor: pointer; }
.peer-item.connected:hover { border-color: rgba(var(--accent-rgb), 0.5); transform: translateY(-1px); }

/* Carte cochÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e = fait partie des destinataires du prochain envoi / message :
   fond teintÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©, bordure lumineuse et halo pour que la sÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lection multicast
   (ou broadcast si tous sont cochÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©s) soit visuellement ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©vidente. */
.peer-item.selected {
  border-color: var(--accent);
  background: rgba(var(--accent-rgb), 0.1);
  box-shadow: 0 0 0 1px rgba(var(--accent-rgb), 0.35), 0 0 18px -4px rgba(var(--accent-rgb), 0.55);
}
.peer-item.selected:hover { transform: none; }

/* Zone de dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©pÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´t active sur une carte appareil connectÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© */
.peer-item.connected.drag-over {
  border-color: var(--accent);
  border-style: dashed;
  background: var(--accent-wash);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), 0.35), var(--shadow-md);
  transform: scale(1.015);
}
.peer-item.connected.drag-over::after {
  content: 'DÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©poser pour envoyer';
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: inherit;
  background: color-mix(in srgb, var(--surface) 72%, transparent);
  color: var(--accent-deep);
  font-family: var(--font-display);
  font-size: 0.82rem;
  font-weight: 600;
  pointer-events: none;
  z-index: 1;
}

.peer-icon { font-size: 1.1rem; }
.peer-info { flex: 1; min-width: 0; }
.peer-name { font-size: 0.92rem; display: block; }
.peer-type { color: var(--text-faint); font-size: 0.76rem; }
.peer-state { font-size: 0.76rem; color: var(--text-dim); white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }
.peer-state.connected { color: var(--success); }
.peer-state.pending { color: var(--accent-bright); }
.peer-state.selected { color: var(--accent-bright); font-weight: 600; }

.peer-connect-btn {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text);
  padding: 6px 12px;
  font-size: 0.8rem;
  border-radius: 999px;
  cursor: pointer;
  flex-shrink: 0;
}
.peer-connect-btn:hover { border-color: var(--accent); color: var(--accent-bright); }
.peer-connect-btn:disabled { opacity: 0.55; cursor: default; }

/* ---------- SÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lection multicast (case ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ  cocher stylÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e) ---------- */
.peer-checkbox-wrap {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
  cursor: pointer;
}
.peer-checkbox {
  position: absolute;
  inset: 0;
  opacity: 0;
  margin: 0;
  cursor: pointer;
}
.peer-checkbox-custom {
  width: 19px;
  height: 19px;
  border-radius: 6px;
  border: 2px solid var(--border);
  background: var(--surface);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease;
}
.peer-checkbox-custom::after {
  content: '';
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) scale(0);
  transition: transform 0.14s ease;
  margin-top: -2px;
}
.peer-checkbox:checked + .peer-checkbox-custom {
  border-color: var(--accent);
  background: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.18);
}
.peer-checkbox:checked + .peer-checkbox-custom::after { transform: rotate(45deg) scale(1); }
.peer-checkbox:focus-visible + .peer-checkbox-custom {
  outline: 2px solid var(--accent-bright);
  outline-offset: 2px;
}

/* ---------- Dropzone ---------- */
.dropzone {
  border: 2px dashed var(--border);
  border-radius: var(--radius-lg);
  min-height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 30px;
  cursor: pointer;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
  position: relative;
}
.dropzone.ready { border-color: var(--border); cursor: pointer; }
.dropzone.drag-over {
  border-color: var(--accent);
  background: var(--accent-wash);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.2), var(--shadow-md);
  transform: scale(1.01);
}
.dropzone.drag-over .dz-title { color: var(--accent-deep); }
.dropzone.locked { cursor: default; }

/* Surbrillance globale pendant un glisser-dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©poser fichiers */
body.is-dragging-files .dropzone:not(.locked) {
  border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
  background: color-mix(in srgb, var(--accent-wash) 55%, var(--surface));
}
body.is-dragging-files .peer-item.connected {
  border-style: dashed;
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
}

.dz-title { font-family: var(--font-display); font-size: 1.15rem; margin: 0 0 6px; }
.dz-sub { color: var(--text-dim); font-size: 0.88rem; margin: 0 0 18px; }
.dz-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  align-items: center;
}
.dz-actions .primary-btn,
.dz-actions .ghost-btn {
  width: auto;
  min-width: 160px;
}
.dz-actions .ghost-btn:disabled {
  opacity: 0.5;
  cursor: default;
  pointer-events: none;
}

/* ---------- Discussion (chat) ---------- */
.chat-section { margin-top: 20px; display: flex; flex-direction: column; }
.chat-section .transfers-head { margin-bottom: 12px; }
.chat-section h2 { font-family: var(--font-display); font-size: 1.05rem; margin: 0; }

.chat-mode-toggle { display: flex; border: 1px solid var(--border); border-radius: 999px; overflow: hidden; flex-shrink: 0; }
.chat-mode-btn {
  background: transparent;
  border: none;
  color: var(--text-dim);
  padding: 6px 14px;
  font-size: 0.78rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.chat-mode-btn + .chat-mode-btn { border-left: 1px solid var(--border); }
.chat-mode-btn:hover { color: var(--accent-deep); }
.chat-mode-btn.active { background: var(--accent-wash); color: var(--accent-deep); font-weight: 600; }

.chat-messages {
  list-style: none;
  margin: 0 0 12px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 260px;
  min-height: 90px;
  overflow-y: auto;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
}
.chat-messages .empty-state { margin: auto; }

.chat-message { display: flex; }
.chat-message.self { justify-content: flex-end; }
.chat-bubble {
  max-width: 80%;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 8px 12px;
  box-shadow: var(--shadow-sm);
}
.chat-message.self .chat-bubble {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  border-color: transparent;
  color: #fff;
}
.chat-bubble-scope {
  display: block;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin-bottom: 2px;
}
.chat-message.self .chat-bubble-scope { color: rgba(255, 255, 255, 0.85); }
.chat-bubble-text { margin: 0; font-size: 0.88rem; line-height: 1.4; overflow-wrap: anywhere; }
.chat-bubble-time {
  display: block;
  margin-top: 3px;
  font-size: 0.68rem;
  font-family: var(--font-mono);
  color: var(--text-faint);
}
.chat-message.self .chat-bubble-time { color: rgba(255, 255, 255, 0.7); }

.chat-form { display: flex; gap: 8px; }
.chat-form input {
  flex: 1;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 10px 16px;
  color: var(--text);
  font-size: 0.88rem;
  font-family: var(--font-body);
}
.chat-form input:focus { border-color: var(--accent); }
.chat-form input:disabled { opacity: 0.6; cursor: not-allowed; }
.chat-form .primary-btn.small { width: 42px; height: 42px; border-radius: 50%; padding: 0; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.chat-form .primary-btn.small .btn-icon { margin: 0; }

/* ---------- Transfers ---------- */
.transfers { margin-top: 24px; }
.transfers-head { display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; margin-bottom: 12px; flex-wrap: wrap; }
.transfers h2 { font-family: var(--font-display); font-size: 1.05rem; margin: 0; }

.transfers-tools { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

.filter-group { display: flex; gap: 6px; flex-wrap: wrap; }
.filter-chip {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-dim);
  padding: 5px 12px;
  font-size: 0.78rem;
  border-radius: 999px;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}
.filter-chip:hover { border-color: var(--accent); color: var(--accent-deep); }
.filter-chip.active { background: var(--accent-wash); border-color: var(--accent); color: var(--accent-deep); }

.view-toggle { display: flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }
.view-btn {
  background: var(--surface-raised);
  border: none;
  color: var(--text-dim);
  width: 34px;
  height: 30px;
  font-size: 0.9rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s ease, background-color 0.15s ease;
}
.view-btn + .view-btn { border-left: 1px solid var(--border); }
.view-btn:hover { color: var(--accent-deep); }
.view-btn.active { background: var(--accent-wash); color: var(--accent-deep); }

.text-btn {
  background: none;
  border: none;
  color: var(--text-dim);
  font-size: 0.82rem;
  cursor: pointer;
  padding: 4px 2px;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.text-btn:hover { color: var(--accent-deep); }
.transfer-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }

/* Vue grille */
.transfer-list.grid-view {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 12px;
}
.transfer-list.grid-view .transfer-item { display: flex; flex-direction: column; align-items: flex-start; }
.transfer-list.grid-view .transfer-glyph { margin-bottom: 4px; }
.transfer-list.grid-view .transfer-body { width: 100%; }
.transfer-list.grid-view .transfer-name { font-size: 0.85rem; }
.transfer-list.grid-view .transfer-meta { font-size: 0.72rem; }
.transfer-list.grid-view .transfer-status { font-size: 0.72rem; }
.transfer-list.grid-view .empty-state,
.transfer-list.grid-view .filter-empty-state { grid-column: 1 / -1; }

/* Filtre par catÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©gorie : une classe dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©diÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e (plutÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´t que l'attribut [hidden])
   garantit que l'ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©ment reste masquÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© dans les DEUX vues. En Grid View,
   la rÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¨gle ci-dessus (.transfer-list.grid-view .transfer-item { display:flex })
   a une spÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©cificitÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© CSS plus forte que le [hidden]{display:none} par dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©faut du
   navigateur, ce qui annulait silencieusement le masquage. `!important` ici
   garantit que le filtre l'emporte quelle que soit la vue active, sans jamais
   retirer l'ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©ment du DOM. */
.transfer-item.is-filtered-out { display: none !important; }

/* ---------- Carte de transfert (style Xender) ---------- */
.transfer-item {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 12px 14px;
  box-shadow: var(--shadow-sm);
  display: flex;
  align-items: center;
  gap: 12px;
}
.transfer-list.grid-view .transfer-item { align-items: stretch; }

/* IcÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ´ne de type de fichier ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ pastille carrÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e faÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ§on Xender */
.transfer-glyph {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  background: var(--accent-wash);
  color: var(--accent-deep);
}
.transfer-item.done .transfer-glyph { background: color-mix(in srgb, var(--success) 16%, transparent); color: var(--success); }
.transfer-item.error .transfer-glyph,
.transfer-item.cancelled .transfer-glyph { background: color-mix(in srgb, var(--danger) 14%, transparent); color: var(--danger); }

.transfer-body { flex: 1 1 auto; min-width: 0; }

.transfer-top { display: flex; justify-content: space-between; gap: 10px; font-size: 0.9rem; margin-bottom: 6px; align-items: flex-start; }
.transfer-name-row { display: flex; align-items: center; gap: 6px; min-width: 0; }
.transfer-name { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.transfer-icon { margin-right: 5px; }

/* ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ°tiquette d'extension faÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ§on Xender (ex: .MP4, .PDF) */
.ext-tag {
  flex: none;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  padding: 2px 6px;
  border-radius: 6px;
  background: var(--surface-raised);
  color: var(--text-dim);
  border: 1px solid var(--border);
  text-transform: uppercase;
}

.transfer-meta { color: var(--text-dim); font-size: 0.8rem; white-space: nowrap; display: flex; align-items: center; gap: 8px; flex: none; }
.transfer-size { color: var(--text-faint); }

/* Badge de statut colorÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© (En cours / TerminÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© / AnnulÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© / Erreur) */
.status-badge {
  font-size: 0.68rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  white-space: nowrap;
  background: var(--accent-wash);
  color: var(--accent-deep);
}
.transfer-item.done .status-badge { background: color-mix(in srgb, var(--success) 16%, transparent); color: var(--success); }
.transfer-item.error .status-badge,
.transfer-item.cancelled .status-badge { background: color-mix(in srgb, var(--danger) 14%, transparent); color: var(--danger); }

.cancel-btn {
  background: none;
  border: none;
  color: var(--text-faint);
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  padding: 2px 4px;
}
.cancel-btn:hover { color: var(--danger); }

.progress-row { display: flex; align-items: center; gap: 8px; }
.progress-track { flex: 1 1 auto; height: 6px; border-radius: 999px; background: var(--surface-raised); overflow: hidden; }
.progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-bright)); width: 0%; transition: width 0.12s linear; position: relative; }
.transfer-item.done .progress-fill { background: var(--success); }
.transfer-item.error .progress-fill, .transfer-item.cancelled .progress-fill { background: var(--danger); }
.progress-pct {
  flex: none;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--accent-deep);
  min-width: 2.6em;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.transfer-status { font-size: 0.78rem; color: var(--text-dim); margin-top: 6px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.transfer-stats {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.transfer-stats:empty { display: none; }
.transfer-status .speed {
  color: var(--accent-deep);
  background: var(--accent-wash);
  padding: 2px 8px;
  border-radius: 999px;
}
.transfer-status .eta {
  color: var(--text-dim);
  background: var(--surface-raised);
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--border-soft);
}
.transfer-status .speed:empty,
.transfer-status .eta:empty { display: none; }

.preview { margin-top: 8px; display: flex; align-items: center; gap: 10px; }
.preview:empty { margin-top: 0; }
.preview audio { width: 100%; height: 32px; }
.preview a.download-link {
  display: inline-block;
  color: var(--accent-deep);
  font-size: 0.78rem;
  text-decoration: none;
  border-bottom: 1px solid var(--accent);
  white-space: nowrap;
}

/* Miniature compacte cliquable (image / vidÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©o) ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ ouvre la galerie modale */
.thumb-btn {
  position: relative;
  display: block;
  flex: none;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--surface-raised);
  cursor: pointer;
  transition: border-color 0.15s ease, transform 0.1s ease;
}
.thumb-btn:hover { border-color: var(--accent); transform: translateY(-1px) scale(1.03); }
.thumb-btn img, .thumb-btn video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
}
.thumb-play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  color: #fff;
  background: rgba(43, 33, 27, 0.32);
  pointer-events: none;
}
.transfer-list.grid-view .thumb-btn { width: 100%; height: 110px; }
.transfer-list.grid-view .preview { flex-direction: column; align-items: stretch; }

/* ---------- Galerie modale plein ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©cran (aperÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ§u agrandi, style Xender) ---------- */
.lightbox-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 11, 8, 0.94);
  backdrop-filter: blur(6px);
  z-index: 300;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 74px 20px 60px;
}
.lightbox-overlay[hidden] { display: none; }

/* Barre supÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©rieure : ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©tiquette d'extension, compteur, tÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©charger, fermer */
.lightbox-topbar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 20px;
}
.lightbox-ext-tag {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--on-accent, #fff);
  background: var(--accent);
  padding: 3px 9px;
  border-radius: 999px;
}
.lightbox-count {
  color: #E7DCD2;
  font-size: 0.78rem;
  font-family: var(--font-mono);
}
.lightbox-topbar-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 10px;
}
.lightbox-download {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  font-size: 1rem;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.15s ease, color 0.15s ease;
}
.lightbox-download:hover { border-color: var(--accent); color: var(--accent-deep); }
.lightbox-download[hidden] { display: none; }

.lightbox-stage {
  max-width: min(90vw, 1000px);
  max-height: 76vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox-stage img, .lightbox-stage video {
  max-width: 100%;
  max-height: 76vh;
  border-radius: var(--radius-md);
  display: block;
  box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.6);
}
.lightbox-caption {
  color: #E7DCD2;
  font-size: 0.85rem;
  margin: 16px 0 0;
  text-align: center;
  max-width: 82vw;
  word-break: break-all;
}
.lightbox-close,
.lightbox-nav {
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.15s ease, color 0.15s ease;
}
.lightbox-close:hover, .lightbox-nav:hover { border-color: var(--accent); color: var(--accent-deep); }
.lightbox-close {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  font-size: 1.1rem;
  flex: none;
}
.lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  font-size: 1.5rem;
  z-index: 2;
}
.lightbox-nav.prev { left: 24px; }
.lightbox-nav.next { right: 24px; }
.lightbox-nav[hidden] { display: none; }
@media (max-width: 640px) {
  .lightbox-overlay { padding: 64px 12px 40px; }
  .lightbox-topbar { padding: 12px; }
  .lightbox-nav { width: 38px; height: 38px; font-size: 1.2rem; }
  .lightbox-nav.prev { left: 8px; }
  .lightbox-nav.next { right: 8px; }
}

/* ---------- Interface compacte mobile : icônes + tooltips ---------- */
@media (max-width: 640px) {
  /* Keep primary CTAs readable — only chrome / tools go icon-only */
  .btn-text {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
  .wt-cta .btn-text,
  .primary-btn:not(.small):not(.install-btn) .btn-text,
  .mode-hero-card-cta .btn-text {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
    border: 0;
  }
  .ghost-btn .btn-icon, .primary-btn .btn-icon, .text-btn .btn-icon,
  .filter-chip .btn-icon, .peer-connect-btn .btn-icon, .mobile-tab .btn-icon { margin-right: 0; }

  .dz-actions .primary-btn,
  .dz-actions .ghost-btn {
    min-width: 0;
    width: 44px;
    height: 44px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
  }

  /* Bouton "Copier le lien" -> icône seule */
  #copyUrlBtn.ghost-btn {
    width: 44px;
    height: 44px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.05rem;
  }

  /* Bouton "Installer l'app" -> icône seule */
  .install-btn {
    width: 38px;
    height: 38px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    font-size: 1.05rem;
  }

  /* Bouton "Se connecter" du formulaire de code -> icône seule */
  .code-form-row .primary-btn.small {
    width: 44px;
    height: 44px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    flex-shrink: 0;
  }

  /* Bouton "Se connecter" par appareil détecté -> icône seule */
  .peer-connect-btn {
    width: 34px;
    height: 34px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95rem;
  }

  /* "Effacer l'historique" -> icône seule */
  .text-btn#clearHistoryBtn {
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 50%;
    border: 1px solid var(--border);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95rem;
  }
  .text-btn#clearHistoryBtn:hover { border-color: var(--danger); color: var(--danger); }

  /* Puces de filtre -> icônes seules */
  .filter-chip {
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.92rem;
  }

  .transfers-tools { gap: 8px; }

  .path-switch-copy { display: none; }
  .path-switch {
    justify-content: center;
    min-height: 48px;
    padding: 10px;
  }
  .path-switch-icon { font-size: 1.15rem; }

  #langSwitcherLabel { display: none; }
}

/* ---------- Footer ---------- */
.site-footer {
  position: relative; /* document flow — never fixed/sticky */
  margin-top: 56px;
  padding-top: 64px;
  background: var(--surface);
  border-top: 1px solid var(--border);
}

/* Scroll-reveal: hidden until scrolled into view (JS adds .is-in) */
.site-footer.tk-footer-reveal:not(.is-in) .footer-security,
.site-footer.tk-footer-reveal:not(.is-in) .footer-col,
.site-footer.tk-footer-reveal:not(.is-in) .footer-security-chips li,
.site-footer.tk-footer-reveal:not(.is-in) .footer-trust-badge,
.site-footer.tk-footer-reveal:not(.is-in) .footer-social-link,
.site-footer.tk-footer-reveal:not(.is-in) .footer-wave svg {
  opacity: 0;
  transform: translateY(28px);
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  .site-footer.tk-footer-reveal:not(.is-in) .footer-security,
  .site-footer.tk-footer-reveal:not(.is-in) .footer-col,
  .site-footer.tk-footer-reveal:not(.is-in) .footer-security-chips li,
  .site-footer.tk-footer-reveal:not(.is-in) .footer-trust-badge,
  .site-footer.tk-footer-reveal:not(.is-in) .footer-social-link,
  .site-footer.tk-footer-reveal:not(.is-in) .footer-wave svg {
    opacity: 1;
    transform: none;
    will-change: auto;
  }
}

.footer-wave {
  position: absolute;
  top: -1px;
  left: 0;
  width: 100%;
  height: 64px;
  line-height: 0;
  overflow: hidden;
  transform: translateY(-99%);
  pointer-events: none;
}
.footer-wave svg {
  display: block;
  width: 100%;
  height: 100%;
}
.footer-wave-path { transition: fill 0.25s ease; }
.footer-wave-back { fill: var(--surface-raised); opacity: 0.7; }
.footer-wave-front { fill: var(--surface); }

.footer-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 24px 32px;
}

/* ---------- Bandeau sÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©curitÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© dans le footer ---------- */
.footer-security {
  position: relative;
  overflow: hidden;
  margin: 0 0 28px;
  padding: 22px 24px;
  border-radius: var(--radius-lg);
  border: 1px solid color-mix(in srgb, var(--success) 32%, var(--border));
  background:
    linear-gradient(135deg,
      color-mix(in srgb, var(--success) 14%, transparent) 0%,
      transparent 42%,
      color-mix(in srgb, var(--accent) 8%, transparent) 100%),
    var(--surface-raised);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--success) 10%, transparent),
    var(--shadow-md);
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.footer-security-glow {
  position: absolute;
  width: 220px;
  height: 220px;
  right: -60px;
  top: -90px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--success) 28%, transparent), transparent 68%);
  pointer-events: none;
  filter: blur(2px);
  animation: footer-security-pulse 7s ease-in-out infinite;
}
@keyframes footer-security-pulse {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50% { opacity: 0.95; transform: scale(1.08); }
}
.footer-security-main {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.footer-security-icon {
  flex: none;
  width: 48px;
  height: 48px;
  border-radius: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  color: var(--success);
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--success) 22%, transparent), transparent 70%),
    var(--surface);
  border: 1px solid color-mix(in srgb, var(--success) 35%, var(--border));
  box-shadow: 0 8px 20px -10px color-mix(in srgb, var(--success) 55%, transparent);
}
.footer-security-copy { min-width: 0; }
.footer-security-eyebrow {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--success);
}
.footer-security-text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.5;
  font-weight: 500;
  color: var(--text);
  max-width: 62ch;
}
.footer-security-chips {
  position: relative;
  z-index: 1;
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.footer-security-chips li {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 12px;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--text-dim);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
  border: 1px solid color-mix(in srgb, var(--success) 22%, var(--border));
  backdrop-filter: blur(6px);
}
.footer-security-chips li i {
  color: var(--success);
  font-size: 0.78rem;
}

@media (max-width: 640px) {
  .footer-security {
    padding: 18px 16px;
    gap: 14px;
  }
  .footer-security-main { gap: 12px; }
  .footer-security-icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    font-size: 1.05rem;
  }
  .footer-security-text { font-size: 0.84rem; }
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1.2fr 1.1fr;
  gap: 36px;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--border-soft);
}

.footer-col { min-width: 0; }

.footer-brand { margin-bottom: 12px; }
.footer-brand .wordmark-img { max-width: 160px; height: auto; display: block; }

.footer-tagline {
  margin: 0 0 18px;
  color: var(--text-dim);
  font-size: 0.88rem;
  line-height: 1.55;
  max-width: 34ch;
}

.footer-social { display: flex; gap: 10px; }
.footer-social-link {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  color: var(--text-dim);
  font-size: 0.88rem;
  transition: color 0.15s ease, border-color 0.15s ease, transform 0.15s ease, background 0.15s ease;
}
.footer-social-link:hover {
  color: var(--on-accent);
  background: var(--accent);
  border-color: var(--accent);
  transform: translateY(-2px);
}

.footer-heading {
  margin: 0 0 16px;
  font-family: var(--font-display);
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--text);
}

.footer-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer-link {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  font-size: 0.86rem;
  color: var(--text-dim);
  cursor: pointer;
  text-align: left;
  text-decoration: none;
  transition: color 0.15s ease;
  display: inline;
}
.footer-link:hover { color: var(--accent); }
.footer-link[aria-current="page"] { color: var(--accent-deep); font-weight: 600; }

.footer-trust {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.footer-trust-badge {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.footer-trust-icon {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--accent-wash);
  color: var(--accent-deep);
  font-size: 0.82rem;
}
:root[data-theme="dark"] .footer-trust-icon { color: var(--accent-bright); }
.footer-trust-title {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text);
}
.footer-trust-sub {
  display: block;
  font-size: 0.74rem;
  color: var(--text-faint);
  margin-top: 2px;
}

.footer-contact-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.86rem;
  color: var(--text-dim);
  margin-bottom: 10px;
  transition: color 0.15s ease;
}
.footer-contact-link:hover { color: var(--accent); }
.footer-location {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.82rem;
  color: var(--text-faint);
  margin: 0 0 18px;
}
.footer-copyright {
  font-size: 0.78rem;
  color: var(--text-faint);
  margin: 0;
}

@media (max-width: 900px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    row-gap: 32px;
  }
}

@media (max-width: 560px) {
  .footer-grid { grid-template-columns: 1fr; }
  .footer-inner { padding: 0 20px 28px; }
  .site-footer { margin-top: 40px; padding-top: 48px; }
  .footer-wave { height: 44px; }
}

/* ---------- Modal ---------- */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(20, 15, 11, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  z-index: 100;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: tk-overlay-in 0.28s ease-out both;
}
.modal-overlay[hidden] {
  display: none;
}
.modal {
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  padding: 26px;
  max-width: 380px;
  width: 100%;
  box-shadow: var(--shadow-lg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  animation: modal-in 0.32s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 12px;
  flex: none;
}
.modal-head h2,
.modal-head h3 {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  font-family: var(--font-display);
  color: var(--text);
  line-height: 1.2;
}
.modal-head .icon-btn {
  margin-left: auto;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
@keyframes modal-in {
  from { opacity: 0; transform: translateY(14px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes tk-overlay-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.modal-eyebrow { margin: 0 0 6px; font-size: 0.8rem; color: var(--accent-deep); }
.modal-device {
  margin: -4px 0 14px;
  font-size: 0.76rem;
  font-family: var(--font-mono);
  color: var(--text-dim);
}
.modal-device[hidden] { display: none; }
.modal h3 { font-family: var(--font-display); font-size: 1.2rem; margin: 0 0 10px; }
.modal-body { color: var(--text-dim); font-size: 0.9rem; margin: 0 0 22px; }
.modal-actions { display: flex; gap: 10px; justify-content: flex-end; }
.modal-actions .ghost-btn, .modal-actions .primary-btn { width: auto; }

#textShareInput {
  width: 100%;
  box-sizing: border-box;
  resize: vertical;
  min-height: 120px;
  max-height: 280px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  font-family: var(--font-body);
  font-size: 0.92rem;
  line-height: 1.45;
  margin-bottom: 16px;
}
#textShareInput::placeholder { color: var(--text-faint); }
#textShareInput:focus { border-color: var(--accent); outline: none; }
.text-share-actions { flex-wrap: wrap; }
.text-share-actions #textSharePasteBtn { margin-right: auto; }

.text-receive-body {
  margin: 0 0 18px;
  padding: 12px 14px;
  max-height: 240px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
  font-size: 0.84rem;
  line-height: 1.5;
  color: var(--text);
}

.transfer-item.is-history .progress-row,
.transfer-item.is-history .cancel-btn { display: none; }
.transfer-item.is-text .transfer-glyph {
  background: color-mix(in srgb, var(--accent) 14%, transparent);
}
.transfer-text-preview {
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  border: 1px solid var(--border-soft);
  font-size: 0.78rem;
  color: var(--text-dim);
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 72px;
  overflow: hidden;
}
.transfer-item .copy-text-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 8px;
  background: none;
  border: none;
  color: var(--accent-deep);
  font-size: 0.78rem;
  cursor: pointer;
  padding: 0;
  border-bottom: 1px solid var(--accent);
}
.transfer-item .copy-text-btn:hover { color: var(--accent); }

.sw-update-toast {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.sw-update-toast button {
  background: var(--on-accent);
  color: var(--accent-deep);
  border: none;
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
}

/* ---------- Modales de pages lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©gales / info (ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ propos, CGU, ConfidentialitÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©) ---------- */
.page-modal-overlay {
  align-items: center;
  backdrop-filter: blur(2px);
}
.page-modal {
  position: relative;
  max-width: 560px;
  max-height: min(82vh, 640px);
  display: flex;
  flex-direction: column;
  animation: modal-in 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.modal-close-btn {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--surface-raised);
  color: var(--text-dim);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 0.9rem;
  transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.modal-close-btn:hover {
  background: var(--accent);
  color: var(--on-accent);
  transform: rotate(90deg);
}
.page-modal-body {
  overflow-y: auto;
  padding-right: 6px;
  margin-bottom: 0;
}
.page-modal-body p {
  margin: 0 0 14px;
  line-height: 1.65;
  font-size: 0.9rem;
}
.page-modal-body p:last-child { margin-bottom: 0; }
.page-modal-body strong { color: var(--text); }

/* Fermeture / ouverture animÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©es des modales dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©clenchÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©es en JS */
.modal-overlay.is-closing { animation: modal-overlay-out 0.16s ease forwards; }
.modal-overlay.is-closing .modal { animation: modal-out 0.16s ease forwards; }
@keyframes modal-overlay-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes modal-out {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(8px) scale(0.98); }
}

@media (max-width: 560px) {
  .page-modal { max-height: 88vh; padding: 22px; }
}

/* ---------- Liste de fichiers dans la modale de confirmation d'envoi ---------- */
.send-confirm-preview {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: -6px 0 18px;
  justify-content: center;
}
.send-confirm-preview:not([hidden]) { display: flex; }
.send-confirm-thumb {
  position: relative;
  width: 88px;
  height: 88px;
  border-radius: var(--radius-sm);
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--surface-raised);
  flex: none;
  box-shadow: var(--shadow-sm);
}
.send-confirm-thumb img,
.send-confirm-thumb video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.send-confirm-thumb .thumb-play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.28);
  color: #fff;
  font-size: 1.1rem;
  pointer-events: none;
}
.send-confirm-thumb-meta {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 4px 6px;
  font-size: 0.62rem;
  color: #fff;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.65));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.send-confirm-files {
  list-style: none;
  margin: -10px 0 22px;
  padding: 4px;
  max-height: 160px;
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-raised);
}
.send-confirm-files li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  font-size: 0.8rem;
  border-bottom: 1px solid var(--border);
}
.send-confirm-files li:last-child { border-bottom: none; }
.send-confirm-file-thumb {
  flex: none;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--surface);
  position: relative;
}
.send-confirm-file-thumb img,
.send-confirm-file-thumb video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.send-confirm-file-thumb .thumb-play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.3);
  color: #fff;
  font-size: 0.65rem;
  pointer-events: none;
}
.send-confirm-file-thumb.is-file {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-faint);
  font-size: 0.85rem;
}
.send-confirm-file-info {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.send-confirm-file-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}
.send-confirm-file-size {
  flex-shrink: 0;
  color: var(--text-faint);
  font-family: var(--font-mono);
  font-size: 0.74rem;
}

#nameInput {
  width: 100%;
  box-sizing: border-box;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 11px 13px;
  font-size: 0.95rem;
  margin-bottom: 18px;
}
#nameInput::placeholder { color: var(--text-faint); }
#nameInput:focus { border-color: var(--accent); }

/* ---------- Toasts (global Transfereko) ---------- */
.toast-stack {
  position: fixed;
  top: max(16px, env(safe-area-inset-top));
  left: 50%;
  right: auto;
  bottom: auto;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  z-index: 100100;
  width: min(400px, calc(100vw - 24px));
  max-width: min(400px, calc(100vw - 24px));
  pointer-events: none;
}
.toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  border-left: 0;
  color: var(--text);
  padding: 12px 14px;
  border-radius: 12px;
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 500;
  line-height: 1.4;
  box-shadow:
    0 12px 32px -16px rgba(0, 0, 0, 0.45),
    0 4px 12px -6px rgba(0, 0, 0, 0.25);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  animation: toast-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);
  cursor: default;
}
.toast-icon {
  flex: 0 0 auto;
  width: 1.35rem;
  height: 1.35rem;
  display: inline-grid;
  place-items: center;
  margin-top: 1px;
  border-radius: 999px;
  font-size: 0.72rem;
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent-bright, var(--accent));
}
.toast-msg {
  flex: 1;
  min-width: 0;
}
.toast.success .toast-icon,
.toast.ok .toast-icon,
.toast--success .toast-icon {
  background: color-mix(in srgb, var(--lime) 18%, transparent);
  color: var(--lime);
}
.toast.error .toast-icon,
.toast.danger .toast-icon,
.toast--error .toast-icon {
  background: color-mix(in srgb, var(--danger) 16%, transparent);
  color: var(--danger);
}
.toast.warning .toast-icon,
.toast--warning .toast-icon {
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent-bright, var(--accent));
}
.toast.success,
.toast.ok,
.toast--success,
.toast.error,
.toast.danger,
.toast--error,
.toast.warning,
.toast--warning {
  border-left: 0;
}
.toast--out {
  animation: toast-out 0.2s ease forwards;
}
@keyframes toast-in {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: none; }
}
@keyframes toast-out {
  from { opacity: 1; transform: none; }
  to { opacity: 0; transform: translateY(-6px); }
}

/* ---------- Transfereko Dialog (remplace alert / confirm) ---------- */
html.tk-dialog-open { overflow: hidden; }
.tk-dialog-host { position: relative; z-index: 100050; }
.tk-dialog-overlay {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  padding: max(16px, env(safe-area-inset-top)) 18px max(16px, env(safe-area-inset-bottom));
  background: color-mix(in srgb, #000000 62%, transparent);
  backdrop-filter: blur(10px) saturate(1.1);
  -webkit-backdrop-filter: blur(10px) saturate(1.1);
  animation: tk-dialog-overlay-in 0.22s ease-out both;
}
.tk-dialog-overlay.is-out {
  animation: tk-dialog-overlay-out 0.2s ease-in both;
}
.tk-dialog-overlay.is-out .tk-dialog {
  animation: tk-dialog-out 0.2s ease-in both;
}
@keyframes tk-dialog-overlay-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes tk-dialog-overlay-out {
  from { opacity: 1; }
  to { opacity: 0; }
}
.tk-dialog {
  position: relative;
  width: min(400px, 100%);
  padding: 22px 22px 18px;
  border-radius: var(--radius-lg);
  border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border-soft));
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 12%, transparent),
    0 24px 56px -20px rgba(var(--accent-rgb), 0.55),
    var(--shadow-lg);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
  overflow: hidden;
  isolation: isolate;
  animation: tk-dialog-in 0.34s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes tk-dialog-in {
  from { opacity: 0; transform: translateY(16px) scale(0.96); }
  to { opacity: 1; transform: none; }
}
@keyframes tk-dialog-out {
  from { opacity: 1; transform: none; }
  to { opacity: 0; transform: translateY(10px) scale(0.97); }
}
.tk-dialog-glow {
  position: absolute;
  inset: -40% auto auto -20%;
  width: 70%;
  height: 70%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(var(--accent-rgb), 0.28), transparent 68%);
  pointer-events: none;
  z-index: 0;
}
.tk-dialog-head {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 12px;
}
.tk-dialog-icon {
  flex: none;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: var(--accent-wash);
  color: var(--accent);
  font-size: 1.1rem;
  border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
}
.tk-dialog--success .tk-dialog-icon,
.tk-dialog--ok .tk-dialog-icon {
  background: color-mix(in srgb, var(--lime) 18%, transparent);
  color: var(--lime);
  border-color: color-mix(in srgb, var(--lime) 35%, transparent);
}
.tk-dialog--error .tk-dialog-icon,
.tk-dialog--danger .tk-dialog-icon {
  background: color-mix(in srgb, var(--danger) 16%, transparent);
  color: var(--danger);
  border-color: color-mix(in srgb, var(--danger) 30%, transparent);
}
.tk-dialog--warning .tk-dialog-icon {
  background: var(--accent-wash);
  color: var(--accent-bright);
}
.tk-dialog-copy { flex: 1; min-width: 0; padding-top: 2px; }
.tk-dialog-brand {
  margin: 0 0 2px;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.tk-dialog-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
  line-height: 1.25;
}
.tk-dialog-x {
  flex: none;
  width: 34px;
  height: 34px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--text-faint);
  cursor: pointer;
  display: grid;
  place-items: center;
}
.tk-dialog-x:hover {
  background: var(--surface-raised);
  color: var(--text);
}
.tk-dialog-body {
  position: relative;
  z-index: 1;
  margin: 0 0 20px;
  font-family: var(--font-body);
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--text-dim);
}
.tk-dialog-actions {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}
.tk-dialog-btn {
  min-height: 44px;
  padding: 0 18px;
  border-radius: 999px;
  font-family: var(--font-display);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  border: none;
  transition: filter 0.15s ease, transform 0.15s ease, background 0.15s ease;
}
.tk-dialog-btn--ghost {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-dim);
}
.tk-dialog-btn--ghost:hover {
  background: var(--surface-raised);
  color: var(--text);
}
.tk-dialog-btn--primary {
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #fff;
  box-shadow: 0 10px 24px -12px rgba(var(--accent-rgb), 0.85);
}
.tk-dialog-btn--primary:hover {
  filter: brightness(1.06);
  transform: translateY(-1px);
}
.tk-dialog--error .tk-dialog-btn--primary,
.tk-dialog--danger .tk-dialog-btn--primary {
  background: linear-gradient(135deg, #ff7a8e, var(--danger));
}
.tk-dialog--success .tk-dialog-btn--primary {
  background: linear-gradient(135deg, var(--lime), color-mix(in srgb, var(--lime) 70%, var(--accent)));
  color: var(--on-lime);
  box-shadow: 0 10px 24px -12px rgba(var(--lime-rgb), 0.55);
}
@media (max-width: 480px) {
  .tk-dialog { padding: 18px 16px 16px; }
  .tk-dialog-actions { flex-direction: column-reverse; }
  .tk-dialog-btn { width: 100%; }
}

/* ---------- Bandeau de demande de permission de notifications ---------- */
.notif-permission-banner {
  position: fixed;
  left: 50%;
  bottom: 20px;
  transform: translate(-50%, 16px);
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: min(92vw, 480px);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md);
  padding: 12px 14px;
  font-size: 0.86rem;
  color: var(--text);
  z-index: 210;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.notif-permission-banner.shown { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.notif-permission-banner > i { color: var(--accent); flex-shrink: 0; }
.notif-permission-banner span { flex: 1; }
.notif-permission-actions { display: flex; gap: 8px; flex-shrink: 0; }
.notif-permission-actions button {
  border: none;
  border-radius: var(--radius-sm);
  padding: 7px 12px;
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
}
.notif-allow-btn { background: var(--accent); color: var(--accent-contrast, #fff); }
.notif-dismiss-btn { background: transparent; color: var(--text-faint); }
.notif-dismiss-btn:hover { color: var(--text); }
@media (max-width: 560px) {
  .notif-permission-banner { flex-wrap: wrap; }
  .notif-permission-actions { width: 100%; justify-content: flex-end; }
}

/* ---------- Transition douce entre thÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¨mes ---------- */
.card, .transfer-item, .peer-item, .modal, .toast, .qr-wrap,
.code-display, #codeInput, #nameInput, .dropzone, .progress-track,
.filter-chip, .view-btn, .thumb-btn, .logo-wrap, .lang-switcher-btn, .lang-switcher-menu, .theme-toggle {
  transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
}
/* =========================================================================
   ---------- Facebook Messenger UI (Part 2) ----------
   Header icon + badge, floating "Discussions" dropdown, and the bottom-right
   docked chat window. Class names assumed from the Part 1 markup:
   .messenger-header-btn / .messenger-badge / .messenger-dropdown /
   .messenger-chat-dock. Rename selectors below to match your actual HTML
   if Part 1 used different names.
   ========================================================================= */

/* ---------- Top header Messenger icon button + unread badge ---------- */
.messenger-header-btn {
  position: relative;
  width: 40px;
  height: 40px;
  min-width: 40px;
  min-height: 40px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--border);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  font-size: 1.05rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  padding: 0;
  box-sizing: border-box;
  transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease, color 0.15s ease;
}
.messenger-header-btn:hover { background: var(--accent-wash); border-color: var(--accent); color: var(--accent-deep); }
.messenger-header-btn:active { transform: scale(0.96); }
.messenger-header-btn[aria-expanded="true"] {
  background: var(--accent-wash);
  border-color: var(--accent);
  color: var(--accent-deep);
}
.messenger-header-btn i { line-height: 1; }

.messenger-badge {
  position: absolute;
  top: -3px;
  right: -3px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--danger);
  color: #fff;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  border: 2px solid var(--bg);
  box-shadow: var(--shadow-sm);
  transition: background-color 0.25s ease, border-color 0.25s ease;
}
.messenger-badge:empty,
.messenger-badge[hidden],
.messenger-badge[data-count="0"] { display: none; }
.messenger-badge.dot {
  min-width: 10px;
  width: 10px;
  height: 10px;
  padding: 0;
  top: 0;
  right: 0;
}

/* ---------- Top-right floating "Discussions" dropdown ---------- */
.messenger-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 340px;
  max-width: calc(100vw - 24px);
  max-height: 480px;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: 60;
  overflow: hidden;
  animation: modal-in 0.15s ease-out;
}
.messenger-dropdown[hidden] { display: none; }

.messenger-dropdown-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px 10px;
  flex-shrink: 0;
}
.messenger-dropdown-head h3 {
  font-family: var(--font-display);
  font-size: 1rem;
  margin: 0;
}
.messenger-dropdown-actions { display: flex; align-items: center; gap: 6px; }

.messenger-icon-btn {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-dim);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}
.messenger-icon-btn:hover { border-color: var(--accent); color: var(--accent-deep); background: var(--accent-wash); }

/* Search + "new message" row */
.messenger-dropdown-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 16px 12px;
  flex-shrink: 0;
}
.messenger-search-input-wrap {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 8px 12px;
  transition: border-color 0.15s ease;
}
.messenger-search-input-wrap:focus-within { border-color: var(--accent); }
.messenger-search-input-wrap i { color: var(--text-faint); font-size: 0.8rem; flex-shrink: 0; }
.messenger-search-input {
  flex: 1;
  min-width: 0;
  border: none;
  background: transparent;
  color: var(--text);
  font-size: 0.85rem;
  font-family: var(--font-body);
  outline: none;
}
.messenger-search-input::placeholder { color: var(--text-faint); }

.messenger-new-btn {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  border: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
  cursor: pointer;
  flex-shrink: 0;
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, var(--shadow-sm);
  transition: filter 0.15s ease, transform 0.08s ease;
}
.messenger-new-btn:hover { filter: brightness(1.06); }
.messenger-new-btn:active { transform: scale(0.95); }

/* Conversation list */
.messenger-conversation-list {
  list-style: none;
  margin: 0;
  padding: 4px 6px 10px;
  overflow-y: auto;
  flex: 1 1 auto;
}
.messenger-conversation-list .empty-state { padding: 24px 16px; text-align: center; }

.messenger-conversation-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  padding: 9px 10px;
  cursor: pointer;
  text-align: left;
  transition: background-color 0.14s ease;
}
.messenger-conversation-item:hover,
.messenger-conversation-item:focus-visible { background: var(--surface-raised); }
.messenger-conversation-item.unread .messenger-convo-name { font-weight: 700; }
.messenger-conversation-item.unread .messenger-convo-preview { color: var(--text); font-weight: 500; }
.messenger-conversation-item.active { background: var(--accent-wash); }

.messenger-avatar-wrap { position: relative; flex-shrink: 0; }
.messenger-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  background: var(--surface-raised);
  border: 1px solid var(--border);
}
.messenger-avatar-fallback {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--accent-wash);
  color: var(--accent-deep);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* Online presence dot, Messenger-style: green ring cut into the avatar */
.online-dot {
  position: absolute;
  bottom: -1px;
  right: -1px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--success);
  border: 2.5px solid var(--surface);
  transition: background-color 0.25s ease, border-color 0.25s ease;
}
.online-dot.offline { background: var(--text-faint); }
.online-dot.away { background: #F0B93D; }

.messenger-convo-body { flex: 1; min-width: 0; }
.messenger-convo-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.messenger-convo-name {
  font-size: 0.88rem;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.messenger-convo-time {
  flex-shrink: 0;
  font-size: 0.68rem;
  font-family: var(--font-mono);
  color: var(--text-faint);
}
.messenger-convo-preview {
  margin: 2px 0 0;
  font-size: 0.8rem;
  color: var(--text-dim);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 4px;
}
.messenger-convo-preview .btn-icon { font-size: 0.7rem; }

.messenger-unread-count {
  flex-shrink: 0;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--accent);
  color: var(--on-accent);
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  font-family: var(--font-mono);
}

/* ---------- Bottom-right docked chat window ---------- */
.messenger-dock-container {
  position: fixed;
  right: 20px;
  bottom: 0;
  display: flex;
  align-items: flex-end;
  gap: 12px;
  z-index: 90;
  pointer-events: none;
}
.messenger-dock-container > * { pointer-events: auto; }

.messenger-chat-dock {
  width: 328px;
  max-width: calc(100vw - 24px);
  height: 420px;
  max-height: 70vh;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md) var(--radius-md) 0 0;
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  animation: dock-in 0.2s ease-out;
}
.messenger-chat-dock[hidden] { display: none; }
.messenger-chat-dock.minimized {
  height: 52px;
  max-height: 52px;
}
.messenger-chat-dock.minimized .messenger-dock-body,
.messenger-chat-dock.minimized .messenger-dock-input { display: none; }

@keyframes dock-in {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Docked header: avatar, name, status, minimize/close */
.messenger-dock-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  flex-shrink: 0;
  background: var(--surface);
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
}
.messenger-chat-dock.minimized .messenger-dock-head { border-bottom: none; }
.messenger-dock-head .messenger-avatar,
.messenger-dock-head .messenger-avatar-fallback { width: 32px; height: 32px; font-size: 0.72rem; }
.messenger-dock-head .online-dot { width: 10px; height: 10px; border-width: 2px; }

.messenger-dock-identity { flex: 1; min-width: 0; }
.messenger-dock-name {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.messenger-dock-status {
  font-size: 0.7rem;
  color: var(--text-faint);
  display: block;
}
.messenger-dock-status.online { color: var(--success); }

.messenger-dock-actions { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.messenger-dock-actions button {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: transparent;
  border: none;
  color: var(--text-dim);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
  transition: background-color 0.14s ease, color 0.14s ease;
}
.messenger-dock-actions button:hover { background: var(--surface-raised); color: var(--accent-deep); }

/* Docked body: scrollable message list */
.messenger-dock-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--bg);
}

/* Custom scrollbar handled globally (thin + transparent track) */

.messenger-dock-body .empty-state { margin: auto; text-align: center; }

/* Chat bubbles: sent (mine, right, accent gradient) / received (theirs, left, neutral) */
.messenger-msg-row { display: flex; margin: 1px 0; }
.messenger-msg-row.sent { justify-content: flex-end; }
.messenger-msg-row.received { justify-content: flex-start; align-items: flex-end; gap: 6px; }

.messenger-msg-row.received .messenger-avatar,
.messenger-msg-row.received .messenger-avatar-fallback {
  width: 22px;
  height: 22px;
  font-size: 0.6rem;
  flex-shrink: 0;
  margin-bottom: 2px;
}

.messenger-bubble {
  max-width: 75%;
  padding: 8px 12px;
  border-radius: 18px;
  font-size: 0.86rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
  box-shadow: var(--shadow-sm);
}
.messenger-msg-row.sent .messenger-bubble {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: #fff;
  border-bottom-right-radius: 5px;
}
.messenger-msg-row.received .messenger-bubble {
  background: var(--surface-raised);
  color: var(--text);
  border: 1px solid var(--border);
  border-bottom-left-radius: 5px;
}
/* Group consecutive bubbles from the same sender more tightly, Messenger-style */
.messenger-msg-row + .messenger-msg-row.sent { margin-top: 2px; }
.messenger-msg-row.sent + .messenger-msg-row.sent .messenger-bubble { border-top-right-radius: 5px; }
.messenger-msg-row.received + .messenger-msg-row.received .messenger-bubble { border-top-left-radius: 5px; }

.messenger-bubble-time {
  display: block;
  margin-top: 3px;
  font-size: 0.64rem;
  font-family: var(--font-mono);
  color: var(--text-faint);
}
.messenger-msg-row.sent .messenger-bubble-time { text-align: right; color: rgba(255,255,255,0.75); }

.messenger-typing {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 10px 14px;
  border-radius: 18px;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  width: fit-content;
}
.messenger-typing span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text-faint);
  animation: messenger-typing-bounce 1.1s ease-in-out infinite;
}
.messenger-typing span:nth-child(2) { animation-delay: 0.15s; }
.messenger-typing span:nth-child(3) { animation-delay: 0.3s; }
@keyframes messenger-typing-bounce {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.5; }
  30% { transform: translateY(-4px); opacity: 1; }
}

/* Docked input row */
.messenger-dock-input {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px;
  border-top: 1px solid var(--border-soft);
  background: var(--surface);
  flex-shrink: 0;
}
.messenger-dock-input .messenger-icon-btn { width: 30px; height: 30px; font-size: 0.85rem; flex-shrink: 0; }
.messenger-dock-input input {
  flex: 1;
  min-width: 0;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 8px 14px;
  color: var(--text);
  font-size: 0.84rem;
  font-family: var(--font-body);
  outline: none;
  transition: border-color 0.15s ease;
}
.messenger-dock-input input:focus { border-color: var(--accent); }
.messenger-dock-input input::placeholder { color: var(--text-faint); }
.messenger-dock-input input:disabled { opacity: 0.6; cursor: not-allowed; }

.messenger-dock-send {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
  cursor: pointer;
  flex-shrink: 0;
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, var(--shadow-sm);
  transition: filter 0.15s ease, transform 0.08s ease;
}
.messenger-dock-send:hover { filter: brightness(1.06); }
.messenger-dock-send:active { transform: scale(0.95); }
.messenger-dock-send:disabled {
  background: var(--surface-raised);
  color: var(--text-faint);
  box-shadow: none;
  cursor: not-allowed;
  filter: none;
}

/* ---------- Responsive: dropdown + dock adapt to small screens ---------- */
@media (max-width: 640px) {
  .messenger-dropdown {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    width: auto;
    max-width: none;
    max-height: none;
    border-radius: 0;
    animation: none;
  }
  .messenger-dropdown-head { padding: 16px; }

  .messenger-dock-container {
    right: 0;
    left: 0;
    bottom: 0;
    justify-content: flex-end;
    padding-right: 12px;
    gap: 8px;
  }
  .messenger-chat-dock {
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
    border-radius: 0;
    padding-bottom: env(safe-area-inset-bottom);
  }
  .messenger-chat-dock.minimized {
    width: 200px;
    height: 48px;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    margin-right: 4px;
  }
  .messenger-bubble { max-width: 85%; }
}

@media (max-width: 400px) {
  .messenger-chat-dock.minimized { width: 160px; }
  .messenger-dock-name { font-size: 0.8rem; }
}

/* Smooth theme transitions for the new Messenger elements */
.messenger-header-btn, .messenger-badge, .messenger-dropdown, .messenger-icon-btn,
.messenger-search-input-wrap, .messenger-conversation-item, .messenger-avatar,
.messenger-avatar-fallback, .online-dot, .messenger-chat-dock, .messenger-dock-head,
.messenger-bubble, .messenger-dock-input, .messenger-dock-input input, .messenger-typing {
  transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
}

/* =========================================================================
   ---------- Facebook Messenger UI (Part 3 ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ real selectors) ----------
   The block above was written against class names that don't exist in the
   actual markup (index.html / app.js use .discussions-dropdown,
   .messenger-chatbox, .discussion-item, .chat-message, etc.), so none of it
   ever applied ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ¢ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ¬ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂ the dropdown and chatbox rendered unstyled in normal page
   flow instead of floating in place. This block targets the real classes.
   ========================================================================= */

/* Header icon button needs relative positioning so the unread badge anchors to it */
.messenger-btn { position: relative; color: var(--text); }
.messenger-btn:hover,
.messenger-btn:focus-visible {
  color: #0084FF;
  border-color: #0084FF;
  background: rgba(0, 132, 255, 0.08);
}

/* ---------- "Discussions" panel: docked sidebar on the right edge ----------
   Anchored to the viewport's right edge (never overflows off-screen no
   matter the window size), inset from the header above and from the
   bottom of the screen, with only its left corners rounded so it reads as
   flush-docked against the edge. Slides in/out with a transform+opacity
   transition driven by the `.is-open` class (see openDiscussionsPopup /
   closeDiscussionsPopup in app.js) rather than the abrupt `hidden` jump
   cut, so both the opening and closing feel smooth. */
.discussions-dropdown {
  position: fixed;
  /* Toujours sous le header sticky (hauteur dynamique via --header-offset) */
  top: calc(var(--header-offset, 120px) + 12px);
  right: 0;
  bottom: 20px;
  width: 340px;
  max-width: calc(100vw - 16px);
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-right: none;
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: 70;
  overflow: hidden;
  transform: translateX(100%);
  opacity: 0;
  pointer-events: none;
  transition:
    transform 0.32s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.22s ease,
    top 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.25s ease,
    border-color 0.25s ease,
    box-shadow 0.25s ease;
}
.discussions-dropdown.is-open {
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
}
.discussions-dropdown[hidden] { display: none; }

.discussions-dropdown-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px 10px;
  flex-shrink: 0;
}
.discussions-dropdown-head h3 {
  font-family: var(--font-display);
  font-size: 1rem;
  margin: 0;
}

.discussions-list {
  list-style: none;
  margin: 0;
  padding: 4px 6px 10px;
  overflow-y: auto;
  flex: 1 1 auto;
}
.discussions-list .empty-state { padding: 24px 16px; text-align: center; }

.discussion-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  padding: 9px 10px;
  cursor: pointer;
  text-align: left;
  transition: background-color 0.14s ease;
}
.discussion-item.connected:hover { background: var(--surface-raised); }
.discussion-item.disabled { opacity: 0.55; cursor: default; }

.discussion-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--accent-wash);
  color: var(--accent-deep);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
  flex-shrink: 0;
}
.discussion-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.discussion-name {
  font-size: 0.88rem;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.discussion-status {
  margin-top: 2px;
  font-size: 0.76rem;
  color: var(--text-faint);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.discussion-unread-badge {
  flex-shrink: 0;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--accent);
  color: var(--on-accent);
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  font-family: var(--font-mono);
}

/* Custom scrollbar handled globally (thin + transparent track) */

/* ---------- Bottom-right docked chat window ---------- */
.messenger-chatbox {
  position: fixed;
  right: 20px;
  bottom: 14px;
  width: 328px;
  max-width: calc(100vw - 24px);
  height: 420px;
  max-height: 70vh;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  /* Au-dessus des toasts et du dropdown "Discussions" : la discussion en
     cours ne doit jamais se retrouver masquÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e ou cliquÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©e par erreur. */
  z-index: 210;
  overflow: hidden;
  animation: dock-in 0.2s ease-out;
}
.messenger-chatbox[hidden] { display: none; }
.messenger-chatbox.minimized {
  height: 52px;
  max-height: 52px;
}
.messenger-chatbox.minimized .messenger-chatbox-mode,
.messenger-chatbox.minimized .messenger-chatbox-body,
.messenger-chatbox.minimized .messenger-chatbox-input { display: none; }

.messenger-chatbox-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  flex-shrink: 0;
  background: var(--surface);
  border-bottom: 1px solid var(--border-soft);
  cursor: pointer;
}
.messenger-chatbox.minimized .messenger-chatbox-header { border-bottom: none; }

.messenger-chatbox-peer { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.messenger-chatbox-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent-wash);
  color: var(--accent-deep);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  flex-shrink: 0;
}
.messenger-chatbox-peer-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.messenger-chatbox-name {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.messenger-chatbox-status {
  font-size: 0.7rem;
  color: var(--text-faint);
  display: block;
}
.messenger-chatbox-actions { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.messenger-chatbox-actions .icon-btn {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: none;
  background: transparent;
}

.messenger-chatbox-mode {
  display: flex;
  border-bottom: 1px solid var(--border-soft);
  flex-shrink: 0;
}
.messenger-chatbox-mode .chat-mode-btn { flex: 1; justify-content: center; padding: 8px 6px; }
.messenger-chatbox-mode .chat-mode-btn + .chat-mode-btn { border-left: 1px solid var(--border-soft); }

.messenger-chatbox-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  list-style: none;
  margin: 0;
  padding: 12px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--bg);
}
.messenger-chatbox-body .empty-state { margin: auto; text-align: center; }
/* chatbox body scrollbar: global thin/transparent styles apply */

.messenger-chatbox-input {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px;
  border-top: 1px solid var(--border-soft);
  background: var(--surface);
  flex-shrink: 0;
}
.messenger-chatbox-input input {
  flex: 1;
  min-width: 0;
  background: var(--surface-raised);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 8px 14px;
  color: var(--text);
  font-size: 0.84rem;
  font-family: var(--font-body);
  outline: none;
  transition: border-color 0.15s ease;
}
.messenger-chatbox-input input:focus { border-color: var(--accent); }
.messenger-chatbox-input input::placeholder { color: var(--text-faint); }
.messenger-chatbox-input input:disabled { opacity: 0.6; cursor: not-allowed; }
.messenger-chatbox-input .primary-btn.small {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.messenger-chatbox-input .primary-btn.small:disabled {
  background: var(--surface-raised);
  color: var(--text-faint);
  box-shadow: none;
  cursor: not-allowed;
}

/* ---------- Emoji picker (sÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©lecteur d'emoji du chatbox) ---------- */
.emoji-picker-wrap { position: relative; flex-shrink: 0; }
.messenger-chatbox-input .emoji-toggle-btn {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-dim);
}
.messenger-chatbox-input .emoji-toggle-btn:hover,
.messenger-chatbox-input .emoji-toggle-btn[aria-expanded="true"] {
  color: var(--accent-bright);
  background: var(--accent-wash);
  border-color: transparent;
}
.emoji-picker-popover {
  position: absolute;
  left: 0;
  bottom: calc(100% + 8px);
  z-index: 20;
  width: 300px;
  max-width: calc(100vw - 40px);
  height: 340px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  --background: var(--surface);
  --border-color: var(--border-soft);
  --indicator-color: var(--accent);
  --input-border-color: var(--border);
  --input-font-color: var(--text);
  --input-placeholder-color: var(--text-faint);
  --outline-color: var(--accent);
  --category-font-color: var(--text-dim);
  --button-active-background: var(--accent-wash);
  --button-hover-background: var(--surface-raised);
}
.emoji-picker-popover[hidden] { display: none; }

/* ---------- Animation d'apparition des messages (style Messenger) ---------- */
.chat-message.msg-pop-in {
  animation: msg-pop-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
  transform-origin: bottom center;
}
.chat-message.self.msg-pop-in { transform-origin: bottom right; }
.chat-message:not(.self).msg-pop-in { transform-origin: bottom left; }
@keyframes msg-pop-in {
  from { opacity: 0; transform: translateY(10px) scale(0.85); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* ---------- Indicateur "en train d'ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©crire" : 3 points qui rebondissent ---------- */
.typing-indicator-row { animation: msg-pop-in 0.2s ease-out; }
.typing-bubble {
  display: inline-flex;
  align-items: center;
  padding: 10px 14px !important;
}
.typing-dots { display: inline-flex; align-items: center; gap: 3px; }
.typing-dots span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text-faint);
  animation: messenger-typing-bounce 1.1s ease-in-out infinite;
}
.messenger-chatbox .chat-message:not(.self) .typing-dots span { background: var(--text-dim); }
.typing-dots span:nth-child(2) { animation-delay: 0.15s; }
.typing-dots span:nth-child(3) { animation-delay: 0.3s; }

/* ---------- Notification flottante quand un message arrive ---------- */
.chat-notify-stack {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  z-index: 260;
  width: min(360px, calc(100vw - 32px));
  pointer-events: none;
}
.chat-notify {
  pointer-events: auto;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 999px;
  padding: 8px 10px;
  box-shadow: var(--shadow-lg);
  cursor: pointer;
  animation: chat-notify-in 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.chat-notify:hover { border-color: var(--accent); }
.chat-notify.chat-notify-out { animation: chat-notify-out 0.18s ease-in forwards; }
.chat-notify-icon {
  width: 36px;
  height: 36px;
  min-width: 36px;
  border-radius: 50%;
  background: var(--accent-wash);
  color: var(--accent-deep);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
}
.chat-notify-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.chat-notify-name { font-size: 0.82rem; font-weight: 700; color: var(--text); }
.chat-notify-text {
  font-size: 0.8rem;
  color: var(--text-dim);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.chat-notify-close {
  width: 26px;
  height: 26px;
  min-width: 26px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-faint);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.chat-notify-close:hover { background: var(--surface-raised); color: var(--text); }
@keyframes chat-notify-in {
  from { opacity: 0; transform: translateY(14px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes chat-notify-out {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(8px) scale(0.95); }
}
@media (max-width: 640px) {
  .chat-notify-stack { bottom: 84px; }
}

/* ---------- Responsive: dropdown + chatbox adapt to small screens ---------- */
@media (max-width: 640px) {
  .discussions-dropdown {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    width: auto;
    max-width: none;
    max-height: none;
    border-radius: 0;
    border-right: 1px solid var(--border-soft);
    /* Mode mobile inchangÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© : pas de glissement de panneau, juste
       l'affichage plein ÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©cran instantanÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ© dÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©jÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ  en place. */
    transform: none;
    opacity: 1;
    pointer-events: auto;
    transition: none;
  }
  .discussions-dropdown-head { padding: 16px; }

  .messenger-chatbox {
    right: 0;
    left: 0;
    bottom: 0;
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
    border-radius: 0;
    padding-bottom: env(safe-area-inset-bottom);
  }
  .messenger-chatbox.minimized {
    left: auto;
    bottom: 0;
    width: 200px;
    height: 48px;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    margin-right: 4px;
  }
}

/* Smooth theme transitions for the real Messenger elements */
.discussion-item, .discussion-icon, .discussion-unread-badge,
.messenger-chatbox, .messenger-chatbox-header, .messenger-chatbox-avatar,
.messenger-chatbox-mode, .messenger-chatbox-body, .messenger-chatbox-input,
.messenger-chatbox-input input {
  transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
}
/* ============================================================
   Pages lÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂÃÂÃ¢ÂÂÃÂÃ¢ÂÂÃÂÃÂ©gales / info (about, privacy, terms)
   ============================================================ */
.legal-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.legal-page > main { flex: 1; }

.legal-nav {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 28px;
  background: color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--border-soft);
}
.legal-nav-brand {
  display: flex;
  align-items: center;
  height: 36px;
  flex-shrink: 0;
}
.legal-nav-brand .wordmark-img {
  height: 100%;
  width: auto;
  max-width: 180px;
}
.legal-nav-links {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}
.legal-nav-links a {
  padding: 8px 12px;
  border-radius: 999px;
  font-size: 0.84rem;
  font-weight: 500;
  color: var(--text-dim);
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.legal-nav-links a:hover { color: var(--text); background: var(--surface); }
.legal-nav-links a[aria-current="page"] {
  color: var(--accent-deep);
  background: var(--accent-wash);
  font-weight: 600;
}
.legal-nav-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.legal-back-cta { text-decoration: none; }

.legal-eyebrow {
  margin: 0 0 10px;
  font-family: var(--font-display);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.gradient-text {
  background: linear-gradient(120deg, var(--accent-deep), var(--accent-bright) 55%, var(--accent));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.legal-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
  font-size: 0.8rem;
  color: var(--text-faint);
}
.legal-breadcrumb a {
  color: var(--text-dim);
  text-decoration: none;
}
.legal-breadcrumb a:hover { color: var(--accent); }

.legal-hero {
  padding: 56px 28px 40px;
  max-width: 980px;
  margin: 0 auto;
}
.legal-hero-inner { max-width: 720px; }
.legal-hero-title {
  margin: 0 0 16px;
  font-family: var(--font-display);
  font-size: clamp(2.1rem, 4.5vw, 3.2rem);
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--text);
}
.legal-hero-subline {
  display: block;
  margin-top: 10px;
  font-size: clamp(1.15rem, 2.4vw, 1.45rem);
  font-weight: 500;
  color: var(--text-dim);
  letter-spacing: 0;
}
.legal-hero-lead {
  margin: 0 0 28px;
  font-size: 1.05rem;
  line-height: 1.65;
  color: var(--text-dim);
  max-width: 54ch;
}
.legal-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.legal-hero-actions .primary-btn,
.legal-hero-actions .ghost-btn {
  width: auto;
  text-decoration: none;
}

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
.reveal.ac-mounted {
  /* GSAP AnimatedContent owns motion — avoid CSS fighting transforms */
  transition: none;
}

/* Founder */
.founder-spotlight {
  padding: 10px 28px 48px;
  max-width: 980px;
  margin: 0 auto;
}
.founder-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 28px;
  padding: 28px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--accent) 8%, transparent), transparent 50%),
    var(--surface);
  box-shadow: var(--shadow-md);
  align-items: start;
}
.founder-badge { position: relative; width: 96px; height: 96px; flex-shrink: 0; }
.founder-avatar {
  width: 96px;
  height: 96px;
  border-radius: 28px;
  display: block;
  object-fit: cover;
  object-position: center 18%;
  background: linear-gradient(160deg, var(--accent-bright), var(--accent-deep));
  box-shadow: 0 12px 28px -12px rgba(var(--accent-rgb), 0.55);
  position: relative;
  z-index: 1;
}
img.founder-avatar {
  border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
}
.founder-pulse {
  position: absolute;
  inset: -6px;
  border-radius: 32px;
  border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
  animation: founder-pulse 3.2s ease-in-out infinite;
}
@keyframes founder-pulse {
  0%, 100% { opacity: 0.35; transform: scale(1); }
  50% { opacity: 0.9; transform: scale(1.04); }
}
.founder-body h2,
.founder-body .founder-name {
  margin: 0;
}
.founder-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px 24px;
  flex-wrap: wrap;
  margin: 0 0 14px;
  width: 100%;
}
.founder-meta .founder-eyebrow,
.founder-meta .legal-eyebrow {
  margin: 0;
  flex: 0 1 auto;
}
.founder-role {
  margin: 0;
  margin-left: auto;
  color: var(--text-faint);
  font-size: 0.88rem;
  letter-spacing: 0.01em;
  text-align: right;
  flex: 1 1 auto;
  min-width: min(100%, 12rem);
}
.founder-name,
.founder-body .founder-name.tk-split-parent,
.founder-body .founder-name.split-parent {
  display: block;
  width: 100%;
  max-width: 100%;
  margin: 0 0 18px;
  padding-top: 2px;
  font-family: var(--font-display);
  font-size: clamp(1.85rem, 4.2vw, 2.55rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1.05;
  background: linear-gradient(
    115deg,
    var(--text) 0%,
    var(--text) 28%,
    var(--accent-bright) 58%,
    var(--lime) 100%
  );
  background-size: 160% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
  text-wrap: balance;
}
.founder-quote {
  margin: 0 0 18px;
  padding: 0 0 0 16px;
  border-left: 3px solid var(--accent);
  color: var(--text-dim);
  font-size: 1rem;
  line-height: 1.6;
  font-style: italic;
}
.founder-creds {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.founder-creds li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-dim);
  background: var(--surface-raised);
  border: 1px solid var(--border);
}
.founder-creds li i { color: var(--accent); }

.about-intro {
  padding: 20px 28px 48px;
  max-width: 980px;
  margin: 0 auto;
}
.about-intro-grid {
  display: grid;
  grid-template-columns: 0.9fr 1.3fr;
  gap: 32px;
  align-items: start;
}
.about-intro h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.8rem;
  line-height: 1.2;
}
.about-intro-copy p {
  margin: 0 0 14px;
  color: var(--text-dim);
  line-height: 1.65;
  font-size: 0.98rem;
}

.section-head {
  margin-bottom: 22px;
}
.section-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.55rem;
}

.bento-section,
.stats-section,
.stack-section,
.timeline-section {
  padding: 12px 28px 56px;
  max-width: 980px;
  margin: 0 auto;
}

.bento-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.bento-card {
  padding: 22px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.bento-card:hover {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
  box-shadow: var(--shadow-md);
}
.bento-wide { grid-column: span 2; }
.bento-accent {
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--accent) 14%, transparent), transparent 60%),
    var(--surface);
}
.bento-icon {
  display: inline-flex;
  width: 40px;
  height: 40px;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  margin-bottom: 14px;
  background: var(--accent-wash);
  color: var(--accent-deep);
  font-size: 1rem;
}
.bento-card h3 {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 1.05rem;
}
.bento-card p {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.9rem;
  line-height: 1.55;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
.stat-card {
  padding: 20px 16px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  background: var(--surface-raised);
  text-align: center;
}
.stat-value {
  display: block;
  font-family: var(--font-display);
  font-size: 1.7rem;
  font-weight: 700;
  color: var(--accent-deep);
  margin-bottom: 6px;
}
.stat-label {
  font-size: 0.78rem;
  color: var(--text-dim);
  line-height: 1.4;
}

.stack-icons {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.stack-icons li {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  background: var(--surface);
  border: 1px solid var(--border);
  font-weight: 600;
  font-size: 0.88rem;
  color: var(--text);
}
.stack-icons i {
  font-size: 1.2rem;
  color: var(--accent);
}

.timeline {
  list-style: none;
  margin: 0;
  padding: 0 0 0 8px;
  border-left: 2px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.timeline li {
  position: relative;
  padding-left: 24px;
}
.timeline-dot {
  position: absolute;
  left: -9px;
  top: 6px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent);
}
.timeline h3 {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-size: 1.02rem;
}
.timeline p {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.9rem;
  line-height: 1.55;
}

.legal-cta-band {
  padding: 20px 28px 72px;
  max-width: 980px;
  margin: 0 auto;
}
.legal-cta-inner {
  padding: 36px 28px;
  border-radius: var(--radius-lg);
  text-align: center;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--accent) 16%, transparent), transparent 55%),
    var(--surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-md);
}
.legal-cta-inner h2 {
  margin: 0 0 10px;
  font-family: var(--font-display);
  font-size: 1.45rem;
}
.legal-cta-inner p {
  margin: 0 0 20px;
  color: var(--text-dim);
}
.legal-cta-inner .primary-btn {
  display: inline-flex;
  width: auto;
  text-decoration: none;
}

/* Document layout (privacy / terms) */
.legal-doc-shell {
  max-width: 1100px;
  margin: 0 auto;
  padding: 40px 28px 72px;
}
.legal-doc-hero { margin-bottom: 36px; max-width: 720px; }
.legal-doc-layout {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 36px;
  align-items: start;
}
.legal-toc {
  position: sticky;
  top: 88px;
  padding: 16px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.legal-toc-title {
  margin: 0 0 12px;
  font-family: var(--font-display);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.legal-toc nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.legal-toc a {
  display: block;
  padding: 8px 10px;
  border-radius: 10px;
  font-size: 0.84rem;
  color: var(--text-dim);
  text-decoration: none;
  border-left: 2px solid transparent;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.legal-toc a:hover { color: var(--text); background: var(--surface-raised); }
.legal-toc a.is-active,
.legal-toc a[aria-current="true"] {
  color: var(--accent-deep);
  background: var(--accent-wash);
  border-left-color: var(--accent);
  font-weight: 600;
}

.legal-doc section {
  scroll-margin-top: 96px;
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--border-soft);
}
.legal-doc section:last-child { border-bottom: none; margin-bottom: 0; }
.legal-doc h2 {
  margin: 0 0 14px;
  font-family: var(--font-display);
  font-size: 1.35rem;
  color: var(--text);
}
.legal-doc p,
.legal-doc li {
  color: var(--text-dim);
  font-size: 0.95rem;
  line-height: 1.7;
}
.legal-doc p { margin: 0 0 12px; }
.legal-doc ul,
.legal-doc ol {
  margin: 0 0 12px;
  padding-left: 1.25rem;
}
.legal-doc a { color: var(--accent-deep); }
.legal-doc strong { color: var(--text); }

.legal-footer-inner .footer-grid {
  grid-template-columns: 1.4fr 1fr 1.1fr;
}

@media (max-width: 900px) {
  .about-intro-grid { grid-template-columns: 1fr; gap: 16px; }
  .bento-grid { grid-template-columns: 1fr 1fr; }
  .bento-wide { grid-column: span 2; }
  .stats-grid { grid-template-columns: 1fr 1fr; }
  .legal-doc-layout { grid-template-columns: 1fr; }
  .legal-toc {
    position: relative;
    top: 0;
    display: flex;
    flex-direction: column;
  }
  .legal-toc nav {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px;
  }
  .legal-toc a { border-left: none; }
}

@media (max-width: 720px) {
  .legal-nav {
    flex-wrap: wrap;
    padding: 12px 16px;
    gap: 10px;
  }
  .legal-nav-links { order: 3; width: 100%; justify-content: flex-start; }
  .legal-back-cta .btn-text { display: none; }
  .founder-card { grid-template-columns: 1fr; }
  .founder-meta {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
  }
  .founder-role {
    margin-left: 0;
    text-align: right;
    width: 100%;
  }
  .bento-grid { grid-template-columns: 1fr; }
  .bento-wide { grid-column: auto; }
  .stats-grid { grid-template-columns: 1fr; }
  .legal-hero,
  .founder-spotlight,
  .about-intro,
  .bento-section,
  .stats-section,
  .stack-section,
  .timeline-section,
  .legal-cta-band,
  .legal-doc-shell {
    padding-left: 16px;
    padding-right: 16px;
  }
  .legal-footer-inner .footer-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .founder-pulse { animation: none; }
}


/* =========================================================================
   Cloud Upload â layout WeTransfer + charte Transfereko
   ========================================================================= */

.cloud-page.wt-app {
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  overflow-x: hidden;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  --wt-rail-w: 84px;
  --wt-chrome-top: 64px;
  --wt-stage-pad-top: calc(var(--wt-chrome-top) + 40px);
  --wt-stage-pad-bottom: 32px;
  --wt-stage-pad-left: calc(var(--wt-rail-w) + 24px);
  --wt-panel-max-h: calc(100dvh - var(--wt-stage-pad-top) - var(--wt-stage-pad-bottom));
}

.wt-wallpaper {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  background: var(--bg);
}
.wt-wallpaper-gradient {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 80% 60% at 72% 38%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 60%),
    radial-gradient(ellipse 50% 40% at 18% 82%, color-mix(in srgb, var(--accent-bright) 14%, transparent), transparent 55%);
}
.wt-wallpaper-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(42px);
  opacity: 0.5;
}
.wt-orb-a {
  width: 42vw; height: 42vw;
  right: -8vw; top: -10vw;
  background: color-mix(in srgb, var(--accent) 35%, transparent);
  animation: wt-float 18s ease-in-out infinite;
}
.wt-orb-b {
  width: 28vw; height: 28vw;
  left: 18vw; bottom: -8vw;
  background: color-mix(in srgb, var(--accent-bright) 28%, transparent);
  animation: wt-float 22s ease-in-out infinite reverse;
}
.wt-wallpaper-mesh {
  position: absolute;
  inset: 0;
  opacity: 0.28;
  background-image:
    linear-gradient(color-mix(in srgb, var(--text) 8%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--text) 8%, transparent) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(ellipse at 60% 40%, black 20%, transparent 70%);
}
@keyframes wt-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(-2%, 3%) scale(1.05); }
}

.wt-rail {
  position: fixed;
  left: 0; top: 0; bottom: 0;
  width: var(--wt-rail-w, 84px);
  z-index: 40;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 8px;
  padding-top: max(16px, env(safe-area-inset-top));
  padding-bottom: max(16px, env(safe-area-inset-bottom));
  gap: 10px;
  background: color-mix(in srgb, var(--text) 92%, var(--accent-deep));
  color: var(--on-accent);
  backdrop-filter: blur(12px);
}
:root[data-theme="dark"] .wt-rail {
  background: color-mix(in srgb, var(--surface) 92%, #000);
  color: var(--text);
}
.wt-rail-logo {
  width: 48px; height: 48px;
  border-radius: 14px;
  display: grid; place-items: center;
  background: linear-gradient(145deg, var(--accent-bright), var(--accent));
  text-decoration: none;
  margin-bottom: 8px;
  box-shadow: 0 8px 20px -10px rgba(var(--accent-rgb), 0.8);
}
.wt-rail-mark { width: 26px; height: 26px; display: block; }
.wt-rail-word { display: none; }
.wt-rail-nav, .wt-rail-foot {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
}
.wt-rail-foot { margin-top: auto; }
.wt-rail-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  width: 100%;
  padding: 10px 4px;
  border: none;
  border-radius: 12px;
  background: transparent;
  color: color-mix(in srgb, var(--on-accent) 72%, transparent);
  font-family: var(--font-body);
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease;
}
:root[data-theme="dark"] .wt-rail-item {
  color: color-mix(in srgb, var(--text) 70%, transparent);
}
.wt-rail-item i { font-size: 1.05rem; }
.wt-rail-item:hover:not(:disabled) {
  background: color-mix(in srgb, var(--on-accent) 10%, transparent);
  color: var(--on-accent);
}
:root[data-theme="dark"] .wt-rail-item:hover:not(:disabled) {
  background: var(--surface-raised);
  color: var(--text);
}
.wt-rail-item.is-active {
  background: color-mix(in srgb, var(--accent) 28%, transparent);
  color: var(--on-accent);
}
:root[data-theme="dark"] .wt-rail-item.is-active {
  background: var(--accent-wash);
  color: var(--accent-bright);
}
.wt-rail-item:disabled { opacity: 0.38; cursor: not-allowed; }

.wt-chrome {
  position: fixed;
  top: 14px;
  left: calc(var(--wt-rail-w, 84px) + 16px);
  right: max(16px, env(safe-area-inset-right, 0px));
  z-index: 35;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-width: 0;
  max-width: calc(100vw - var(--wt-rail-w, 84px) - 32px);
  box-sizing: border-box;
  pointer-events: none;
  container-type: inline-size;
  container-name: wt-chrome;
  /* keep bar in viewport; dropdown is position:fixed so not clipped */
  overflow: visible;
}
.wt-chrome > * {
  pointer-events: auto;
}

.wt-top-pill {
  position: relative;
  top: auto;
  right: auto;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  padding: 8px 10px 8px 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-md);
  backdrop-filter: blur(16px) saturate(1.15);
  /* Hug content — do not stretch across the chrome (avoids empty gap when guest) */
  flex: 0 1 auto;
  width: max-content;
  min-width: 0;
  margin-left: auto;
  max-width: 100%;
  overflow: visible;
  box-sizing: border-box;
}
.wt-top-pill.is-guest .wt-top-tab--extra {
  display: none;
}
.wt-top-tabs {
  display: flex;
  align-items: center;
  gap: 2px;
  flex: 0 1 auto;
  min-width: 0;
}
.wt-top-tab {
  border: none;
  background: transparent;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  padding: 8px 12px;
  border-radius: 999px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.wt-top-tab > i { font-size: 0.85rem; opacity: 0.9; }
.wt-top-tab:hover:not(:disabled) {
  background: var(--surface-raised);
  color: var(--text);
}
.wt-top-tab.is-active {
  background: var(--text);
  color: var(--bg);
}
:root[data-theme="dark"] .wt-top-tab.is-active {
  background: var(--accent);
  color: var(--on-accent);
}
.wt-top-tab:disabled { opacity: 0.4; cursor: not-allowed; }

.wt-account {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 8px;
  border-left: 1px solid var(--border-soft);
  position: relative;
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
}
.wt-account[hidden],
.wt-auth-guest[hidden] {
  display: none !important;
}
.wt-auth-guest {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 10px;
  border-left: 1px solid var(--border-soft);
}
.wt-login-link {
  border: none;
  border-radius: 999px;
  padding: 9px 16px;
  font-family: var(--font-body);
  font-size: 0.84rem;
  font-weight: 700;
  cursor: pointer;
  background: var(--accent);
  color: var(--on-accent);
  white-space: nowrap;
  box-shadow: 0 4px 14px -4px rgba(var(--accent-rgb), 0.45);
  transition: filter 0.15s ease, transform 0.15s ease;
}
.wt-login-link:hover {
  filter: brightness(1.08);
  background: var(--accent);
  color: var(--on-accent);
}
.wt-login-link:active {
  transform: translateY(1px);
}
.wt-signup-btn {
  border: none;
  border-radius: 999px;
  padding: 9px 16px;
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  background: var(--text);
  color: var(--bg);
  white-space: nowrap;
}
:root[data-theme="dark"] .wt-signup-btn {
  background: var(--accent);
  color: var(--on-accent);
}
.wt-signup-btn:hover { filter: brightness(1.08); }
.wt-auth-modal { max-width: 420px; }
.wt-auth-lead {
  margin: 0 0 14px;
  color: var(--text-dim);
  font-size: 0.92rem;
  line-height: 1.5;
}
.wt-auth-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.wt-auth-form[hidden] { display: none !important; }
.wt-account-flyout {
  position: relative;
}
.wt-account-badge {
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(220px, 36vw);
  min-width: 0;
  padding: 4px 10px 4px 4px;
  border: none;
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
  color: inherit;
  font: inherit;
  text-align: left;
}
.wt-account-badge:hover,
.wt-account-flyout.is-open .wt-account-badge,
.wt-account-flyout:hover .wt-account-badge {
  background: var(--surface-raised);
}
.wt-account-avatar {
  flex: none;
  position: relative;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: linear-gradient(145deg, var(--accent-bright), var(--accent-deep));
  box-shadow: 0 4px 12px -6px rgba(var(--accent-rgb), 0.7);
}
.wt-account-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  background: transparent;
}
.wt-account-avatar img[hidden] {
  display: none !important;
}
.wt-avatar-initials {
  font-family: var(--font-display);
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--on-accent);
  letter-spacing: 0.02em;
  line-height: 1;
}
.wt-avatar-initials[hidden] { display: none !important; }
.wt-am-avatar { width: 40px; height: 40px; border-radius: 12px; }
.wt-am-avatar .wt-avatar-initials { font-size: 0.85rem; }
.wt-account-caret {
  font-size: 0.65rem;
  color: var(--text-faint);
  transition: transform 0.18s ease;
}
.wt-account-flyout.is-open .wt-account-caret,
.wt-account-flyout:hover .wt-account-caret {
  transform: rotate(180deg);
}
.wt-account-info {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
  max-width: 150px;
  min-width: 0;
  overflow: hidden;
}
.wt-account-email {
  font-size: 0.75rem;
  font-weight: 600;
  font-family: var(--font-body);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  max-width: 100%;
}
.wt-account-plan {
  font-size: 0.68rem;
  color: var(--text-faint);
}
.wt-team-badge {
  display: block;
  margin-top: 2px;
  font-size: 0.62rem;
  font-weight: 650;
  line-height: 1.25;
  color: var(--accent-deep);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}
:root[data-theme="dark"] .wt-team-badge {
  color: var(--lime);
}
.wt-team-badge[hidden] {
  display: none !important;
}

/* Account dropdown: fixed to viewport so it never clips off-screen */
.wt-account-menu {
  position: fixed;
  top: var(--wt-am-top, 64px);
  right: var(--wt-am-right, 16px);
  left: auto;
  width: min(300px, calc(100vw - 24px));
  max-height: min(78vh, calc(100dvh - var(--wt-am-top, 64px) - 16px));
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0;
  border-radius: 16px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow:
    0 22px 48px -20px rgba(var(--accent-rgb), 0.35),
    var(--shadow-lg);
  z-index: 80;
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-10px) scale(0.96);
  transform-origin: top right;
  filter: blur(2px);
  transition:
    opacity 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.32s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s ease;
  will-change: transform, opacity, filter;
  box-sizing: border-box;
}
.wt-account-flyout:hover .wt-account-menu,
.wt-account-flyout:focus-within .wt-account-menu,
.wt-account-flyout.is-open .wt-account-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0) scale(1);
  filter: blur(0);
}
.wt-account-flyout:hover .wt-am-head,
.wt-account-flyout:focus-within .wt-am-head,
.wt-account-flyout.is-open .wt-am-head {
  animation: wt-am-rise 0.38s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.wt-account-flyout:hover .wt-am-plan,
.wt-account-flyout:focus-within .wt-am-plan,
.wt-account-flyout.is-open .wt-am-plan {
  animation: wt-am-rise 0.4s cubic-bezier(0.22, 1, 0.36, 1) 0.05s both;
}
.wt-account-flyout:hover .wt-am-nav,
.wt-account-flyout:focus-within .wt-am-nav,
.wt-account-flyout.is-open .wt-am-nav {
  animation: wt-am-rise 0.42s cubic-bezier(0.22, 1, 0.36, 1) 0.09s both;
}
.wt-account-flyout:hover .wt-am-logout,
.wt-account-flyout:focus-within .wt-am-logout,
.wt-account-flyout.is-open .wt-am-logout {
  animation: wt-am-rise 0.44s cubic-bezier(0.22, 1, 0.36, 1) 0.14s both;
}
@keyframes wt-am-rise {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
/* Bridge hover gap so menu doesn't close when moving cursor down */
.wt-account-flyout::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 14px;
}

.wt-am-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 16px 14px;
}
.wt-am-head-copy { min-width: 0; flex: 1; }
.wt-am-email {
  margin: 0;
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.wt-am-meta {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--text-faint);
}

.wt-am-plan {
  padding: 0 16px 14px;
  border-bottom: 1px solid var(--border-soft);
}
.wt-am-plan-name {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
}
.wt-am-upgrade {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: none;
  background: transparent;
  padding: 0;
  margin: 0 0 10px;
  color: var(--accent);
  font-family: var(--font-body);
  font-size: 0.84rem;
  font-weight: 700;
  cursor: pointer;
}
.wt-am-upgrade:hover { text-decoration: underline; }
.wt-am-tiers {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.wt-account-tier {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
}
.wt-account-tier:hover:not(:disabled) {
  background: var(--surface-raised);
  color: var(--text);
}
.wt-account-tier.is-active {
  background: var(--accent-wash);
  border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
  color: var(--accent-deep);
}
:root[data-theme="dark"] .wt-account-tier.is-active { color: var(--accent-bright); }
.wt-account-tier.is-locked,
.wt-account-tier:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.wt-am-nav {
  display: flex;
  flex-direction: column;
  padding: 8px 0;
  border-bottom: 1px solid var(--border-soft);
}
.wt-am-link {
  display: block;
  width: 100%;
  padding: 10px 16px;
  border: none;
  background: transparent;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.wt-am-link[hidden] {
  display: none !important;
}
.wt-am-link:hover {
  background: var(--surface-raised);
}

.wt-am-lang {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-soft);
  font-family: var(--font-body);
  font-size: 0.9rem;
  color: var(--text);
}
.wt-am-lang-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: none;
  background: transparent;
  color: var(--text-dim);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
.wt-am-lang-btn:hover { color: var(--text); }
.wt-am-lang-menu {
  position: absolute;
  right: 12px;
  top: calc(100% - 4px);
  margin: 0;
  padding: 6px;
  list-style: none;
  min-width: 140px;
  border-radius: 12px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-md);
  z-index: 5;
}
.wt-am-lang-menu[hidden] { display: none !important; }
.wt-am-lang-menu button {
  width: 100%;
  border: none;
  background: transparent;
  text-align: left;
  padding: 8px 10px;
  border-radius: 8px;
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--text);
  cursor: pointer;
}
.wt-am-lang-menu button:hover {
  background: var(--accent-wash);
  color: var(--accent-deep);
}

.wt-am-logout {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  border: none;
  border-top: 1px solid color-mix(in srgb, var(--danger) 18%, var(--border-soft));
  background:
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--danger) 6%, var(--surface)) 0%,
      var(--surface) 100%
    );
  padding: 12px 14px 14px;
  text-align: left;
  font-family: var(--font-body);
  color: var(--text);
  cursor: pointer;
  border-radius: 0 0 16px 16px;
  position: sticky;
  bottom: 0;
  z-index: 1;
  transition:
    background 0.2s ease,
    color 0.2s ease,
    transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.wt-am-logout-icon {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 11px;
  background: color-mix(in srgb, var(--danger) 14%, transparent);
  color: var(--danger);
  font-size: 0.92rem;
  transition: background 0.2s ease, transform 0.2s ease;
}
.wt-am-logout-copy {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.wt-am-logout-label {
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--danger);
}
.wt-am-logout-hint {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--text-faint);
}
.wt-am-logout:hover {
  background: color-mix(in srgb, var(--danger) 12%, var(--surface));
}
.wt-am-logout:hover .wt-am-logout-icon {
  background: color-mix(in srgb, var(--danger) 22%, transparent);
  transform: translateX(2px);
}
.wt-am-logout:active {
  transform: scale(0.985);
}
.wt-am-logout:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--danger) 55%, transparent);
  outline-offset: -2px;
}

.wt-upgrade-btn {
  border: none;
  border-radius: 999px;
  padding: 8px 12px;
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  box-shadow: 0 6px 16px -8px rgba(var(--accent-rgb), 0.75);
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.wt-upgrade-btn:hover { filter: brightness(1.05); }

.wt-mode-chips {
  position: relative;
  top: auto;
  left: auto;
  z-index: 1;
  display: flex;
  gap: 6px;
  flex: 0 0 auto;
  min-width: 0;
}
.wt-mode-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 80%, transparent);
  border: 1px solid var(--border-soft);
  color: var(--text-dim);
  text-decoration: none;
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  backdrop-filter: blur(10px);
  box-shadow: var(--shadow-sm);
  white-space: nowrap;
}
.wt-mode-chip.is-active {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  border-color: transparent;
  color: var(--on-accent);
}

/* Shrink the RIGHT pill only when chrome is tight — chips keep their labels */
@container wt-chrome (max-width: 1180px) {
  .wt-top-tab--extra { display: none; }
}
@container wt-chrome (max-width: 1100px) {
  .wt-account-email {
    max-width: 110px;
  }
}
@container wt-chrome (max-width: 980px) {
  .wt-top-tabs .wt-top-tab:nth-child(n+3) { display: none; }
  .wt-account-info { display: none; }
  .wt-upgrade-label { display: none; }
  .wt-upgrade-btn {
    width: 36px;
    height: 36px;
    padding: 0;
    justify-content: center;
    border-radius: 50%;
  }
  .wt-top-tab {
    padding: 7px 10px;
    font-size: 0.78rem;
  }
  .wt-account-badge {
    max-width: none;
  }
}
@container wt-chrome (max-width: 720px) {
  .wt-top-tabs .wt-top-tab:nth-child(n+2) { display: none; }
  .wt-mode-chip {
    padding: 7px 10px;
    font-size: 0.7rem;
  }
}

.wt-stage {
  position: relative;
  z-index: 5;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  padding: var(--wt-stage-pad-top, 88px) 24px var(--wt-stage-pad-bottom, 32px) var(--wt-stage-pad-left, 108px);
  box-sizing: border-box;
  overflow-x: hidden;
  overflow-y: auto;
}

/* Desktop: optically center the upload card in the stage */
@media (min-width: 901px) {
  .wt-stage {
    align-items: center;
    padding-top: max(var(--wt-stage-pad-top, 88px), 72px);
    padding-bottom: max(var(--wt-stage-pad-bottom, 32px), 48px);
  }
}

.wt-panel {
  position: relative;
  width: min(392px, calc(100vw - var(--wt-stage-pad-left, 108px) - 24px));
  max-height: var(--wt-panel-max-h, calc(100dvh - 120px));
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-lg);
  overflow: visible;
  display: flex;
  flex-direction: column;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  animation: wt-panel-in 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.2s ease;
}
.wt-panel:hover {
  box-shadow: var(--shadow-lg), 0 0 0 1px color-mix(in srgb, var(--accent) 16%, transparent);
}
.wt-panel.is-xfer {
  width: min(400px, calc(100vw - var(--wt-stage-pad-left, 108px) - 24px));
}
@keyframes wt-panel-in {
  from { opacity: 0; transform: translateY(12px) scale(0.98); }
  to { opacity: 1; transform: none; }
}

.wt-panel-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px 18px 16px;
  min-height: 0;
  flex: 1 1 auto;
  max-height: var(--wt-panel-max-h, calc(100dvh - 120px));
  overflow: hidden;
  border-radius: inherit;
}

.wt-compose {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* When files are listed: hide upsell / primary add row */
.wt-panel-form.has-files .wt-upsell,
.wt-panel-form:has(#fileStack:not([hidden])) .wt-upsell {
  display: none;
}
.wt-panel-form.has-files .wt-add-row,
.wt-panel-form:has(#fileStack:not([hidden])) .wt-add-row {
  display: none;
}
.wt-panel-form.has-files .wt-fields-underline .wt-field textarea,
.wt-panel-form:has(#fileStack:not([hidden])) .wt-fields-underline .wt-field textarea {
  min-height: 44px;
  max-height: 72px;
}
.wt-panel-form.has-files .wt-fields-underline .wt-field input,
.wt-panel-form.has-files .wt-fields-underline .wt-field textarea,
.wt-panel-form:has(#fileStack:not([hidden])) .wt-fields-underline .wt-field input,
.wt-panel-form:has(#fileStack:not([hidden])) .wt-fields-underline .wt-field textarea {
  padding-top: 10px;
  padding-bottom: 10px;
}

#uploadFooter {
  flex: 0 0 auto;
  position: relative;
  z-index: 2;
  margin-top: 0;
  padding-top: 4px;
  background: color-mix(in srgb, var(--surface) 92%, transparent);
}

.wt-compose .wt-turnstile-wrap:not(.wt-turnstile-wrap--invisible) {
  flex: 0 0 auto;
  margin-top: 4px;
}

.wt-add-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.wt-add-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 44px;
  padding: 0 10px;
  border-radius: var(--radius-sm);
  border: 1.5px dashed color-mix(in srgb, var(--accent) 35%, var(--border));
  background: color-mix(in srgb, var(--accent-wash) 55%, var(--surface));
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.18s ease, background 0.18s ease, transform 0.18s ease;
}
.wt-add-btn:hover {
  border-color: var(--accent);
  background: var(--accent-wash);
  transform: translateY(-1px);
}
.wt-add-btn i { color: var(--accent); font-size: 0.85rem; }

.wt-upsell {
  margin-top: 10px;
  width: 100%;
  border: none;
  background: transparent;
  text-align: left;
  font-family: var(--font-body);
  font-size: 0.78rem;
  color: var(--text-dim);
  cursor: pointer;
  padding: 4px 2px 10px;
}
.wt-upsell strong { color: var(--accent-deep); }
:root[data-theme="dark"] .wt-upsell strong { color: var(--accent-bright); }
.wt-upsell:hover strong { text-decoration: underline; }

.wt-dropzone-box {
  margin: 0 0 10px;
  border-radius: var(--radius-md);
  border: 1.5px dashed color-mix(in srgb, var(--accent) 28%, var(--border));
  background: color-mix(in srgb, var(--accent-wash) 40%, var(--surface));
  min-height: 88px;
  cursor: pointer;
  transition: border-color 0.18s ease, background 0.18s ease;
}
.wt-dropzone-box:hover {
  border-color: var(--accent);
  background: var(--accent-wash);
}
.wt-drop-hint {
  margin: 0;
  padding: 22px 16px;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.84rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.wt-drop-hint p { margin: 0; line-height: 1.4; }
.wt-drop-icon {
  font-size: 1.35rem;
  color: var(--accent);
  opacity: 0.9;
}

.wt-file-stack {
  display: flex;
  flex-direction: column;
  gap: 0;
  min-width: 0;
  margin: 0 0 4px;
  border-radius: 16px;
  border: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--surface-raised) 88%, var(--bg));
  overflow: hidden;
}
.wt-file-stack[hidden] { display: none !important; }

.wt-file-list {
  list-style: none;
  margin: 0;
  padding: 4px 0;
  max-height: min(42vh, 280px);
  height: auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  display: flex;
  flex-direction: column;
  gap: 0;
  -webkit-overflow-scrolling: touch;
}
.wt-file-list[hidden] { display: none !important; }

.wt-file-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 0;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border-soft);
}
.wt-file-item:last-child {
  border-bottom: none;
}
.wt-file-icon {
  display: none;
}
.wt-file-meta {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.wt-file-name {
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}
.wt-file-size {
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--text-dim);
}
.wt-file-remove {
  border: none;
  background: transparent;
  color: var(--text-faint);
  width: 32px;
  height: 32px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s ease, color 0.15s ease;
}
.wt-file-remove:hover {
  background: var(--accent-wash);
  color: var(--accent);
}

.wt-file-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: color-mix(in srgb, var(--accent-wash) 70%, var(--surface));
  border-top: 1px solid color-mix(in srgb, var(--accent) 18%, var(--border-soft));
}
.wt-file-count {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--accent);
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 700;
}
.wt-file-count i {
  font-size: 0.85rem;
}
.wt-file-add-more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  background: transparent;
  color: var(--accent);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  padding: 0;
}
.wt-file-add-more:hover {
  color: var(--accent-deep);
}
:root[data-theme="dark"] .wt-file-add-more:hover {
  color: var(--accent-bright);
}
.wt-file-add-more-icon {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--accent);
  color: #fff;
  font-size: 0.75rem;
}
.wt-file-quota {
  margin: 0;
  padding: 8px 14px 10px;
  text-align: center;
  font-size: 0.8rem;
  color: var(--text-dim);
  background: color-mix(in srgb, var(--surface) 80%, transparent);
}
.wt-file-quota[hidden] { display: none !important; }
.wt-file-quota-link {
  border: none;
  background: none;
  padding: 0;
  color: var(--accent);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.wt-compose[hidden] { display: none !important; }
#uploadFooter[hidden] { display: none !important; }
#uploadTurnstile[hidden] { display: none !important; }

.wt-progress { margin: 4px 0 12px; }
.wt-progress-bar {
  height: 6px;
  border-radius: 999px;
  background: var(--surface-raised);
  border: 1px solid var(--border-soft);
  overflow: hidden;
}
.wt-progress-bar span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--accent), var(--accent-bright));
  transition: width 0.2s ease;
}
.wt-progress-stats {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  font-size: 0.72rem;
  color: var(--text-faint);
  font-family: var(--font-mono);
}

/* —— Upload transfer card (SVG liquid waves + success) —— */
.wt-xfer,
.wt-xfer-done {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 6px 2px 2px;
  animation: wt-panel-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
.wt-xfer[hidden],
.wt-xfer-done[hidden] { display: none !important; }

.wt-xfer-eyebrow {
  margin: 0 0 2px;
  font-family: var(--font-display);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* Hourglass flat vector — silhouette like reference, sand via --p (0–100) */
.wt-hourglass-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  margin: 6px 0 14px;
  flex: none;
}
.wt-hourglass,
.wt-gauge,
.wt-liquid {
  --p: 0;
  --top-fill: calc((100 - var(--p)) / 100);
  --bot-fill: calc(var(--p) / 100);
  position: relative;
  width: 148px;
  height: 178px;
  margin: 0;
  flex: none;
  perspective: 600px;
}
.wt-hourglass-svg {
  width: 100%;
  height: 100%;
  display: block;
}
.wt-hg-body {
  fill: #3C3C3B;
}
:root[data-theme="light"] .wt-hg-body {
  fill: #2A2A2C;
}
.wt-hg-cap-top {
  fill: #3C3C3B;
}
.wt-hg-cap-bot {
  fill: #7D39EB;
}
:root[data-theme="dark"] .wt-hg-cap-bot {
  fill: #9B5FFF;
}

/* Top sand drains (origin = neck) — plein au départ, s’amenuise avec --p */
.wt-hg-sand-top {
  transform-box: fill-box;
  transform-origin: 50% 100%;
  transform: scaleY(var(--top-fill));
  transition: transform 0.18s ease-out;
}
/* Bottom sand rises (origin = floor) */
.wt-hg-sand-bot {
  transform-box: fill-box;
  transform-origin: 50% 100%;
  transform: scaleY(var(--bot-fill));
  transition: transform 0.18s ease-out;
}
.wt-hourglass.is-running .wt-hg-sand-fill {
  filter: drop-shadow(0 0 0.5px rgba(155, 95, 255, 0.35));
}
@media (prefers-reduced-motion: reduce) {
  .wt-hg-sand-fill animate { display: none; }
}

.wt-hg-stream {
  opacity: 0;
  transform-box: fill-box;
  transform-origin: 50% 0%;
}
.wt-hourglass.is-running .wt-hg-stream {
  opacity: 1;
  animation: wt-hg-stream 0.9s linear infinite;
}
.wt-hourglass.is-complete .wt-hg-stream,
.wt-hourglass:not(.is-running) .wt-hg-stream {
  opacity: 0;
  animation: none;
}
@keyframes wt-hg-stream {
  0% { transform: translateY(-4px) scaleY(0.6); opacity: 0.25; }
  40% { opacity: 1; }
  100% { transform: translateY(8px) scaleY(1.1); opacity: 0.1; }
}

.wt-hourglass.is-slow .wt-hg-body {
  animation: wt-ring-pulse 1.4s ease-in-out infinite;
}

.wt-hourglass.is-complete {
  animation: wt-hg-complete 0.72s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes wt-hg-complete {
  0% { transform: rotateY(0deg) scale(1); filter: brightness(1); }
  40% { transform: rotateY(100deg) scale(1.06); filter: brightness(1.15); }
  100% { transform: rotateY(180deg) scale(1); filter: brightness(1.05); }
}

/* Percentage beside the hourglass */
.wt-hourglass-row > .wt-liquid-pct {
  position: static;
  inset: auto;
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  gap: 2px;
  margin: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(2.4rem, 8vw, 3.1rem);
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--text);
  pointer-events: none;
  text-shadow: none;
  min-width: 4.2ch;
}
.wt-hourglass-row > .wt-liquid-pct .wt-liquid-pct-sign {
  font-size: 1.15rem;
  font-weight: 600;
  top: -0.55em;
  opacity: 0.8;
  position: relative;
}

.wt-xfer-metrics {
  width: 100%;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--surface-raised) 70%, transparent);
  text-align: center;
}
.wt-xfer-metrics-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  justify-content: center;
  margin-top: 4px;
}
.wt-xfer-metrics .wt-xfer-bytes {
  margin: 0;
  font-family: var(--font-mono);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text);
}
.wt-xfer-metrics .wt-xfer-eta,
.wt-xfer-metrics .wt-xfer-speed {
  margin: 0;
  font-size: 0.75rem;
  color: var(--text-dim);
}
.wt-xfer-metrics .wt-xfer-speed {
  color: var(--accent);
  font-family: var(--font-mono);
  font-weight: 600;
}

@media (prefers-reduced-motion: reduce) {
  .wt-hg-sand-top,
  .wt-hg-sand-bot { transition: none; }
  .wt-hourglass.is-running .wt-hg-stream { animation: none; opacity: 0.85; }
  .wt-hourglass.is-complete { animation: none; }
}

/* Legacy gauge bits (kept for safety if referenced) */
.wt-gauge-svg,
.wt-liquid-svg {
  width: 100%;
  height: 100%;
  display: block;
}
.wt-gauge-track {
  fill: none;
  stroke: color-mix(in srgb, var(--border) 80%, var(--text-faint));
  stroke-width: 8;
  stroke-linecap: round;
}
.wt-gauge-arc {
  fill: none;
  stroke: var(--accent);
  stroke-width: 8;
  stroke-linecap: round;
  transition: none;
}
.wt-gauge.is-slow .wt-gauge-track {
  stroke: color-mix(in srgb, var(--accent) 35%, var(--border));
  animation: wt-ring-pulse 1.4s ease-in-out infinite;
}
@keyframes wt-ring-pulse {
  0%, 100% { opacity: 0.55; }
  50% { opacity: 1; }
}

.wt-liquid-pct {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1px;
  z-index: 2;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 2.5rem;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--text);
  pointer-events: none;
  transition: color 0.25s ease;
}
.wt-gauge.is-high .wt-liquid-pct,
.wt-liquid.is-high .wt-liquid-pct {
  color: var(--text);
}
.wt-liquid-pct-sign {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  margin: 0;
  margin-left: 2px;
  position: relative;
  top: -0.55em;
  opacity: 0.85;
  align-self: center;
}

/* legacy liquid wave rules neutralized if leftover markup appears */
.wt-liquid-ring-bg,
.wt-liquid-bowl,
.wt-liquid-sea,
.wt-wave { display: none; }

.wt-xfer-status { width: 100%; }
.wt-xfer-title {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 1.28rem;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.02em;
}
.wt-xfer-title-slow {
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.wt-xfer-help {
  width: 22px;
  height: 22px;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--text-faint);
  cursor: pointer;
  padding: 0;
  font-size: 0.95rem;
}
.wt-xfer-help:hover { color: var(--accent); }
.wt-xfer-settings {
  display: block;
  width: 100%;
  margin: 0 0 14px;
  padding: 0;
  border: none;
  background: none;
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--accent-deep);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
:root[data-theme="dark"] .wt-xfer-settings { color: var(--accent-bright); }
.wt-xfer-settings:hover { color: var(--accent); }
.wt-xfer-bytes,
.wt-xfer-eta,
.wt-xfer-slow-msg,
.wt-xfer-speed {
  margin: 0 0 4px;
  font-size: 0.9rem;
  color: var(--text-dim);
  line-height: 1.45;
}
.wt-xfer-bytes {
  color: var(--text);
  font-weight: 600;
}
.wt-xfer-speed {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--text-faint);
}
.wt-xfer-speed[hidden] { display: none !important; }
.wt-xfer-slow-msg { color: var(--text); margin-bottom: 10px; }
.wt-xfer-foot {
  width: 100%;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border-soft);
}
.wt-xfer-cancel {
  width: 100%;
  height: 48px;
  border-radius: 999px;
  border: 1.5px solid var(--accent);
  background: var(--surface);
  color: var(--accent-deep);
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
:root[data-theme="dark"] .wt-xfer-cancel { color: var(--accent-bright); }
.wt-xfer-cancel:hover {
  background: var(--accent-wash);
  border-color: var(--accent-deep);
  transform: translateY(-1px);
}

/* Success */
.wt-done-preview {
  width: 100%;
  height: 120px;
  margin-bottom: 18px;
  border-radius: var(--radius-md);
  background:
    radial-gradient(circle at 30% 40%, color-mix(in srgb, var(--accent) 28%, transparent), transparent 55%),
    linear-gradient(145deg, color-mix(in srgb, var(--accent-bright) 22%, var(--surface-raised)), var(--surface-raised));
  display: grid;
  place-items: center;
  border: 1px solid var(--border-soft);
}
.wt-done-voir-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 16px;
  border-radius: 999px;
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 700;
  text-decoration: none;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-soft);
}
.wt-done-voir-pill:hover { border-color: var(--accent); color: var(--accent-deep); }
.wt-done-title {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 1.45rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
}
.wt-done-sub {
  margin: 0 0 16px;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--text-dim);
}
.wt-done-link {
  display: inline;
  padding: 0;
  border: none;
  background: none;
  color: var(--accent-deep);
  font: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
:root[data-theme="dark"] .wt-done-link { color: var(--accent-bright); }
.wt-done-link:hover { color: var(--accent); }
.wt-done-name {
  margin: 0 0 6px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
}
.wt-done-linkrow {
  width: 100%;
  display: flex;
  align-items: stretch;
  margin-bottom: 12px;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  background: var(--surface);
}
.wt-done-linkrow input {
  flex: 1;
  min-width: 0;
  border: none;
  padding: 12px 14px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--text-dim);
  background: transparent;
  outline: none;
}
.wt-done-copy-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: none;
  padding: 0 14px;
  border: none;
  border-left: 1px solid var(--border);
  background: transparent;
  color: var(--accent-deep);
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
}
:root[data-theme="dark"] .wt-done-copy-inline { color: var(--accent-bright); }
.wt-done-copy-inline:hover { background: var(--accent-wash); }
.wt-done-primary {
  width: 100%;
  height: 48px;
  margin-bottom: 8px;
  border: none;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #fff;
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 24px -12px rgba(var(--accent-rgb), 0.8);
}
.wt-done-primary:hover { filter: brightness(1.05); }
.wt-done-secondary {
  display: grid;
  place-items: center;
  width: 100%;
  height: 46px;
  margin-bottom: 8px;
  border-radius: 999px;
  border: 1.5px solid var(--accent);
  background: var(--surface);
  color: var(--accent-deep);
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  text-decoration: none;
}
:root[data-theme="dark"] .wt-done-secondary { color: var(--accent-bright); }
.wt-done-secondary:hover { background: var(--accent-wash); }
.wt-done-new {
  margin-top: 4px;
  border: none;
  background: none;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.wt-done-new:hover { color: var(--accent); }

.wt-qr-modal { max-width: 320px; text-align: center; }
.wt-qr-lead { margin: 0 0 14px; color: var(--text-dim); font-size: 0.9rem; }
.wt-qr-canvas-wrap {
  display: grid;
  place-items: center;
  padding: 12px;
  border-radius: var(--radius-md);
  background: #fff;
  border: 1px solid var(--border-soft);
}
.wt-qr-canvas-wrap canvas { display: block; width: 220px; height: 220px; }

@media (prefers-reduced-motion: reduce) {
  .wt-gauge.is-slow .wt-gauge-track { animation: none; }
  .wt-hourglass.is-slow .wt-hourglass-glow { animation: none; }
}

.wt-fields {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-bottom: 0;
}
.wt-fields-underline .wt-field {
  display: block;
  margin: 0;
}
.wt-fields-underline .wt-field input,
.wt-fields-underline .wt-field textarea {
  width: 100%;
  border: none;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.95rem;
  padding: 14px 4px 12px;
  outline: none;
  box-shadow: none;
  transition: border-color 0.16s ease;
}
.wt-fields-underline .wt-field textarea {
  resize: none;
  min-height: 56px;
}
.wt-fields-underline .wt-field input:focus,
.wt-fields-underline .wt-field textarea:focus {
  border-bottom-color: var(--accent);
  box-shadow: none;
}
.wt-fields-underline .wt-field-control { position: relative; }
.wt-fields-underline .wt-field-control input { padding-right: 64px; }
.wt-drop-limit[hidden] { display: none !important; }

.wt-bottom-stack {
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
}
.wt-bottom-tools {
  display: flex;
  align-items: center;
  gap: 8px;
}
.wt-expiry {
  position: relative;
  flex: 1;
  min-width: 0;
}
.wt-expiry-chip {
  width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 44px;
  padding: 0 14px;
  border-radius: 14px;
  border: 1.5px solid var(--text);
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}
.wt-expiry-chip:hover,
.wt-expiry.is-open .wt-expiry-chip {
  border-color: var(--text);
  box-shadow: var(--shadow-sm);
  background: var(--surface-raised);
}
.wt-expiry-chip i.fa-calendar,
.wt-expiry-chip .fa-regular {
  color: var(--text-dim);
}
.wt-expiry-value {
  flex: 1;
  text-align: left;
  color: var(--accent);
  font-weight: 700;
}
.wt-expiry-caret {
  font-size: 0.7rem;
  color: var(--text-faint);
  transition: transform 0.18s ease;
}
.wt-expiry.is-open .wt-expiry-caret { transform: rotate(180deg); }

.wt-expiry-menu {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% + 8px);
  padding: 8px;
  border-radius: var(--radius-md);
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
  z-index: 45;
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-height: min(340px, 55vh);
  overflow-y: auto;
  animation: wt-panel-in 0.18s cubic-bezier(0.22, 1, 0.36, 1);
}
.wt-expiry-menu[hidden] { display: none !important; }

.wt-expiry-option {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 11px 12px;
  border: none;
  border-radius: 12px;
  background: transparent;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
}
.wt-expiry-option span { flex: 1; }
.wt-expiry-option:hover { background: var(--surface-raised); }
.wt-expiry-option.is-selected {
  color: var(--accent);
  font-weight: 700;
  background: var(--accent-wash);
}
.wt-expiry-free {
  font-style: normal;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--accent);
}
.wt-expiry-check {
  display: none;
  color: var(--accent);
  font-size: 0.85rem;
}
.wt-expiry-option.is-selected .wt-expiry-check { display: inline-block; }

/* Expiry upgrade modal — must beat generic .modal { max-width: 380px } */
.modal.wt-expiry-upgrade {
  position: relative;
  width: min(880px, calc(100vw - 28px));
  max-width: min(880px, calc(100vw - 28px));
  max-height: min(90vh, 560px);
  height: auto;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr);
  grid-template-rows: minmax(0, 1fr);
  grid-template-areas: "media copy";
  align-items: stretch;
  overflow: hidden;
  border-radius: var(--radius-lg);
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
}
.wt-expiry-upgrade-media {
  grid-area: media;
  background: var(--accent);
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  padding: 0;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}
.wt-expiry-upgrade-media img {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: center;
  display: block;
  margin: 0;
  filter: none;
}
.wt-expiry-upgrade-copy {
  grid-area: copy;
  position: relative;
  padding: 36px 40px 28px 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: 0;
  min-width: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.wt-expiry-upgrade-close {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 3;
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 80%, transparent);
  color: var(--text-dim);
  cursor: pointer;
}
.wt-expiry-upgrade-close:hover {
  background: var(--surface-raised);
  color: var(--text);
}
.wt-expiry-upgrade-copy h2 {
  margin: 0 0 4px;
  padding-right: 28px;
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2.2vw, 1.65rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--text);
  flex-shrink: 0;
}
.wt-expiry-upgrade-copy p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--text-dim);
}
.wt-expiry-upgrade-copy strong { color: var(--text); }
.wt-expiry-upgrade-primary {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  height: 48px;
  flex-shrink: 0;
  border: none;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #fff;
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 24px -12px rgba(var(--accent-rgb), 0.8);
}
.wt-expiry-upgrade-primary:hover { filter: brightness(1.05); }
.wt-expiry-upgrade-secondary {
  width: 100%;
  height: 46px;
  flex-shrink: 0;
  border-radius: 999px;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--accent-deep);
  font-family: var(--font-body);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
}
:root[data-theme="dark"] .wt-expiry-upgrade-secondary { color: var(--accent-bright); }
.wt-expiry-upgrade-secondary:hover {
  border-color: var(--accent);
  background: var(--accent-wash);
}

/* PRO offer modal — 16:9 image, no scroll, no letterboxing */
.modal.wt-pro-offer {
  position: relative;
  width: min(720px, calc(100vw - 24px));
  max-width: min(720px, calc(100vw - 24px));
  max-height: 92vh;
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border-radius: var(--radius-lg);
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
}
.wt-pro-offer-close {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 999px;
  background: color-mix(in srgb, #1B1512 55%, transparent);
  color: #fff;
  cursor: pointer;
  backdrop-filter: blur(8px);
}
.wt-pro-offer-close:hover {
  background: color-mix(in srgb, #1B1512 75%, transparent);
}
.wt-pro-offer-media {
  flex: 0 1 auto;
  min-height: 0;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: calc(92vh - 168px);
  line-height: 0;
  background: transparent;
  overflow: hidden;
}
.wt-pro-offer-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.wt-pro-offer-actions {
  flex: none;
  padding: 12px 18px 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
  border-top: 1px solid var(--border-soft);
  background: var(--surface);
}
.wt-pro-offer-hint {
  margin: 0;
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--text-dim);
  max-width: 36em;
}
.wt-pro-offer-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  max-width: 360px;
  height: 44px;
  border: none;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #fff;
  font-family: var(--font-display);
  font-size: 0.92rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 10px 24px -12px rgba(var(--accent-rgb), 0.8);
}
.wt-pro-offer-primary:hover { filter: brightness(1.05); }
.wt-pro-offer-secondary {
  width: 100%;
  max-width: 360px;
  height: 40px;
  border-radius: 999px;
  border: 1.5px solid var(--border);
  background: transparent;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
}
.wt-pro-offer-secondary:hover {
  border-color: var(--accent);
  color: var(--accent-deep);
  background: var(--accent-wash);
}
:root[data-theme="dark"] .wt-pro-offer-secondary:hover { color: var(--accent-bright); }

/* Profile settings upsell (free accounts) */
.modal.wt-profile-upsell {
  width: min(440px, 100%);
  padding: 28px 26px 24px;
  border-radius: 18px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  box-shadow:
    0 24px 48px -28px rgba(0, 0, 0, 0.55),
    0 8px 20px -12px rgba(0, 0, 0, 0.35);
  position: relative;
}
.wt-profile-upsell-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border-soft, var(--glass-border));
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 88%, var(--text) 6%);
  color: var(--text);
  cursor: pointer;
}
.wt-profile-upsell-close:hover {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--accent-bright, var(--accent));
}
.wt-profile-upsell-eyebrow {
  margin: 0 0 6px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-dim);
}
.wt-profile-upsell h2 {
  margin: 0 0 10px;
  padding-right: 36px;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
.wt-profile-upsell-lead {
  margin: 0 0 18px;
  color: var(--text-dim);
  font-size: 0.92rem;
  line-height: 1.5;
}
.wt-profile-upsell-list {
  list-style: none;
  margin: 0 0 22px;
  padding: 0;
  display: grid;
  gap: 12px;
}
.wt-profile-upsell-list li {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 70%, var(--surface));
  font-size: 0.88rem;
  line-height: 1.4;
  color: var(--text);
}
.wt-profile-upsell-list i {
  margin-top: 2px;
  color: var(--accent-bright, var(--accent));
  width: 1.1em;
  flex: 0 0 auto;
}
.wt-profile-upsell-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.wt-profile-upsell-actions .primary-btn {
  margin-left: auto;
}
.wt-top-tab[hidden] {
  display: none !important;
}

/* Price ticker: vertical slide AR ↔ USD */
.price-flip {
  margin: 0;
  height: 1.45em;
  overflow: hidden;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--accent-deep);
  line-height: 1.45em;
}
:root[data-theme="dark"] .price-flip { color: var(--accent-bright); }
.price-flip-track {
  display: flex;
  flex-direction: column;
  align-items: center;
  animation: price-ticker 4.5s cubic-bezier(0.45, 0.05, 0.25, 1) infinite;
}
.price-flip-track > span {
  display: block;
  height: 1.45em;
  line-height: 1.45em;
  white-space: nowrap;
}
@keyframes price-ticker {
  0%, 38% { transform: translateY(0); }
  48%, 88% { transform: translateY(-50%); }
  100% { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .price-flip-track { animation: none; }
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.plan-price.price-flip {
  margin: 0 0 12px;
  width: max-content;
  max-width: 100%;
  font-size: 1.4rem;
}
.plan-price .price-flip-track { align-items: flex-start; }

@media (max-width: 560px) {
  .modal.wt-pro-offer {
    width: min(100vw - 16px, 560px);
    max-width: min(100vw - 16px, 560px);
  }
  .wt-pro-offer-media { max-height: calc(92vh - 156px); }
  .wt-pro-offer-actions { padding: 10px 14px 12px; gap: 6px; }
  .price-flip { font-size: 1.2rem; }
}

@media (max-width: 720px) {
  .modal.wt-expiry-upgrade {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(0, 1fr);
    grid-template-areas:
      "media"
      "copy";
    max-height: min(92vh, 760px);
    width: min(480px, calc(100vw - 24px));
    max-width: min(480px, calc(100vw - 24px));
  }
  .wt-expiry-upgrade-media {
    padding: 0;
    max-height: 220px;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  }
  .wt-expiry-upgrade-media img {
    max-width: none;
    max-height: none;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .wt-expiry-upgrade-copy { padding: 16px 20px 22px; }
}
.wt-options-btn {
  width: 44px;
  height: 44px;
  border-radius: 999px;
}
.wt-cta {
  width: 100%;
  flex: none;
  height: 52px;
  border: none;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #FFFFFF;
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  cursor: pointer;
  box-shadow: 0 12px 28px -12px rgba(var(--accent-rgb), 0.85);
  transition: filter 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.wt-cta > i { font-size: 0.95rem; }
.wt-cta .btn-text { color: inherit; position: static; width: auto; height: auto; margin: 0; clip: auto; overflow: visible; }
.wt-cta:hover:not(:disabled) {
  filter: brightness(1.06);
  transform: translateY(-1px);
  box-shadow: 0 14px 32px -12px rgba(var(--accent-rgb), 0.95);
}
.wt-cta:disabled {
  opacity: 1;
  cursor: not-allowed;
  background: linear-gradient(135deg, color-mix(in srgb, var(--accent-bright) 55%, #8a6a5a), color-mix(in srgb, var(--accent) 55%, #6a4a3a));
  color: rgba(255, 255, 255, 0.72);
  box-shadow: none;
  filter: none;
  transform: none;
}
:root[data-theme="dark"] .wt-cta:disabled {
  background: linear-gradient(135deg, color-mix(in srgb, var(--accent-bright) 45%, #3a2a22), color-mix(in srgb, var(--accent) 50%, #2a1a14));
  color: rgba(255, 255, 255, 0.65);
}
.wt-field { display: flex; flex-direction: column; gap: 4px; }
.wt-field-label {
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-faint);
}
.wt-field input,
.wt-field textarea,
.wt-retention select {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
  padding: 11px 12px;
  outline: none;
  transition: border-color 0.16s ease, box-shadow 0.16s ease;
}
.wt-field input:focus,
.wt-field textarea:focus,
.wt-retention select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-wash);
}
.wt-field textarea { resize: vertical; min-height: 72px; }
.wt-field-control { position: relative; }
.wt-field-control input { padding-right: 36px; }
.wt-email-check {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--success);
  font-size: 1rem;
  pointer-events: none;
  transition: color 0.15s ease, opacity 0.15s ease;
}
.wt-email-check.is-invalid {
  color: var(--danger);
}
.wt-email-check[hidden] {
  display: none !important;
}
.wt-field-email {
  position: relative;
}
.wt-field-control input.is-team-sender {
  cursor: default;
  color: var(--text);
  font-size: 0.92rem;
}
.wt-email-picker-btn {
  position: absolute;
  right: 36px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--accent);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}
.wt-field-email:not(:has(.wt-email-check)) .wt-email-picker-btn {
  right: 8px;
}
.wt-fields-underline .wt-field-email:not(:has(.wt-email-check)) .wt-field-control input {
  padding-right: 40px;
}
.wt-email-picker-btn[hidden] { display: none !important; }
.wt-email-picker-btn:hover {
  background: var(--accent-wash);
}
.wt-email-suggest {
  list-style: none;
  margin: 6px 0 0;
  padding: 6px;
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 2px);
  z-index: 40;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  max-height: 220px;
  overflow-y: auto;
}
.wt-email-suggest[hidden] { display: none !important; }
.wt-email-suggest-item {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  border: none;
  background: transparent;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 500;
  text-align: left;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  cursor: pointer;
}
.wt-email-suggest-item i {
  color: var(--accent);
  width: 1em;
  text-align: center;
}
.wt-email-suggest-item:hover,
.wt-email-suggest-item:focus-visible {
  background: var(--accent-wash);
  outline: none;
}
.wt-field-control input.is-email-invalid {
  border-color: color-mix(in srgb, var(--danger) 55%, var(--border));
}
.wt-field-control input.is-email-valid {
  border-color: color-mix(in srgb, var(--success) 45%, var(--border));
}

.wt-result {
  margin-bottom: 12px;
  padding: 12px;
  border-radius: var(--radius-md);
  background: var(--accent-wash);
  border: 1px solid color-mix(in srgb, var(--accent) 25%, var(--border));
}
.wt-result-label {
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--accent-deep);
}
:root[data-theme="dark"] .wt-result-label { color: var(--accent-bright); }
.wt-result-name {
  margin: 0 0 8px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
}
.wt-link-row { display: flex; gap: 6px; }
.wt-link-row input {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  font-size: 0.75rem;
  font-family: var(--font-mono);
  background: var(--surface);
  color: var(--text);
}
.wt-copy-btn {
  width: 38px; height: 38px;
  border: none;
  border-radius: var(--radius-sm);
  background: var(--accent);
  color: var(--on-accent);
  cursor: pointer;
}
.wt-result-meta {
  margin: 8px 0 0;
  font-size: 0.75rem;
  color: var(--text-dim);
  font-family: var(--font-body);
}
.wt-preview-link {
  display: inline-block;
  margin-top: 8px;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--accent-deep);
}
:root[data-theme="dark"] .wt-preview-link { color: var(--accent-bright); }

.wt-bottom {
  display: flex;
  align-items: stretch;
  gap: 10px;
  padding-top: 4px;
}
.wt-options-wrap {
  position: relative;
  flex: none;
}
.wt-options-btn {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-dim);
  cursor: pointer;
  font-size: 1.1rem;
}
.wt-options-btn:hover,
.wt-options-btn[aria-expanded="true"] {
  color: var(--text);
  border-color: var(--accent);
  background: var(--accent-wash);
}

/* Side dock (WeTransfer-like): to the RIGHT of the main panel, not over it */
.wt-options-menu {
  position: absolute;
  left: calc(100% + 16px);
  bottom: 0;
  width: min(300px, calc(100vw - 140px));
  max-height: min(78vh, 640px);
  overflow-x: hidden;
  overflow-y: auto;
  padding: 14px;
  border-radius: var(--radius-md);
  background: var(--surface);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
  z-index: 40;
  flex-direction: column;
  gap: 14px;
  animation: wt-panel-in 0.22s cubic-bezier(0.22, 1, 0.36, 1);
}
.wt-options-menu:not([hidden]) {
  display: flex;
}
.wt-options-menu[hidden] {
  display: none !important;
}
.wt-options-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: -2px 0 0;
}
.wt-options-head strong {
  font-family: var(--font-display);
  font-size: 0.9rem;
  color: var(--text);
}
.wt-options-close {
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text-faint);
  cursor: pointer;
}
.wt-options-close:hover {
  background: var(--surface-raised);
  color: var(--text);
}
.wt-opt-hint {
  margin: 0;
  font-size: 0.72rem;
  line-height: 1.4;
  color: var(--text-faint);
}
.wt-pro-lock[hidden] {
  display: none !important;
}
#brandingBlock[hidden],
#passwordField[hidden],
#recipientField[hidden] {
  display: none !important;
}
.wt-opt-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.wt-opt-label {
  margin: 0;
  font-family: var(--font-display);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.wt-opt-segment {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 4px;
  border-radius: 12px;
  background: var(--surface-raised);
  border: 1px solid var(--border-soft);
}
.wt-opt-seg {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 10px 6px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.25;
  cursor: pointer;
  text-align: center;
}
.wt-opt-seg i { font-size: 0.95rem; }
.wt-opt-seg:hover { color: var(--text); background: color-mix(in srgb, var(--surface) 70%, transparent); }
.wt-opt-seg.is-active {
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
  box-shadow: 0 6px 14px -8px rgba(var(--accent-rgb), 0.7);
}
.wt-opt-select {
  width: 100%;
  height: 40px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 600;
  outline: none;
}
.wt-opt-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-wash);
}
.wt-opt-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-family: var(--font-body);
  font-size: 0.84rem;
  font-weight: 500;
  color: var(--text);
  cursor: pointer;
}
.wt-opt-toggle input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--accent);
  cursor: pointer;
}
.wt-pro-lock {
  margin-left: 6px;
  font-size: 0.7rem;
  color: var(--text-faint);
}
.wt-opt-password input {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.88rem;
  padding: 10px 12px;
  outline: none;
}
.wt-opt-password input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-wash);
}
.wt-opt-row-stack {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.8rem;
  color: var(--text-dim);
}
.wt-opt-plans {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 6px;
}
.wt-opt-plan {
  padding: 9px 6px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
}
.wt-opt-plan.is-active {
  border-color: transparent;
  background: linear-gradient(180deg, var(--accent-bright), var(--accent));
  color: var(--on-accent);
}
.wt-opt-plan.is-locked,
.wt-opt-plan:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.wt-otp-modal { max-width: 420px; }
.wt-otp-lead {
  margin: 0 0 12px;
  color: var(--text-dim);
  font-size: 0.92rem;
  line-height: 1.5;
}
.wt-otp-dev {
  margin: 0 0 12px;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  background: var(--accent-wash);
  border: 1px dashed color-mix(in srgb, var(--accent) 35%, var(--border));
  font-family: var(--font-mono);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--accent-deep);
}
:root[data-theme="dark"] .wt-otp-dev { color: var(--accent-bright); }
.wt-otp-error {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--danger) 12%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--danger) 35%, var(--border));
  color: var(--danger);
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 600;
  line-height: 1.4;
}
.wt-otp-error[hidden] { display: none !important; }
.wt-otp-form { display: flex; flex-direction: column; gap: 14px; }
.wt-otp-form input {
  letter-spacing: 0.35em;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 1.25rem;
  font-weight: 600;
}
.wt-otp-form input[aria-invalid="true"] {
  border-color: var(--danger);
}
.wt-otp-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.wt-bg-row { display: flex; gap: 8px; align-items: center; }

.wt-drop-overlay {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  background: color-mix(in srgb, var(--accent) 28%, transparent);
  backdrop-filter: blur(4px);
  border: 3px dashed var(--accent);
  color: var(--on-accent);
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 700;
  pointer-events: none;
}
.wt-drop-overlay[hidden] { display: none !important; }

.wt-premium-chip {
  position: fixed;
  bottom: 18px;
  right: 22px;
  z-index: 20;
  padding: 8px 12px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 90%, transparent);
  border: 1px solid var(--border-soft);
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  box-shadow: var(--shadow-sm);
}
.wt-premium-chip.is-pulse { animation: premium-lock-shake 0.55s ease; }

.cloud-file-input-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.plans-modal {
  width: min(1240px, 96vw);
  max-width: min(1240px, 96vw);
  max-height: min(88vh, 760px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: color-mix(in srgb, var(--surface) 82%, transparent);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
  border: 1px solid color-mix(in srgb, var(--border-soft) 70%, transparent);
}
.plans-modal .modal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px;
  flex: none;
}
.plans-modal .modal-head h2 {
  margin: 0;
  font-family: var(--font-display);
  color: var(--text);
}
.plans-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.plans-grid-4 {
  flex: 1 1 auto;
  min-height: 0;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
  overflow: hidden;
}
.plan-card {
  position: relative;
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  padding: 14px 12px 12px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--surface-raised) 88%, transparent);
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow: hidden;
}
.plan-card h3 {
  margin: 0 0 6px;
  padding-right: 72px;
  font-family: var(--font-display);
  font-size: 1.05rem;
  color: var(--text);
  flex: none;
}
.plan-price {
  margin: 0 0 12px;
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--accent-deep);
}
:root[data-theme="dark"] .plan-price { color: var(--accent-bright); }
.plan-price-stack {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0 0 6px;
  flex: none;
}
.plan-price-ar {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--accent-deep);
  line-height: 1.2;
}
:root[data-theme="dark"] .plan-price-ar { color: var(--accent-bright); }
.plan-price-usd {
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-faint);
}
.plan-price-note {
  margin: -2px 0 8px;
  font-size: 0.72rem;
  color: var(--text-dim);
  flex: none;
}
.plan-card-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  margin: 0 0 10px;
  padding-right: 4px;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--accent) 45%, transparent) transparent;
}
.plan-card-body::-webkit-scrollbar {
  width: 5px;
}
.plan-card-body::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--accent) 40%, var(--border));
  border-radius: 999px;
}
.plan-card ul {
  margin: 0;
  padding-left: 1.05rem;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.8rem;
  line-height: 1.45;
}
.plan-card-featured {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  box-shadow: var(--shadow-md);
  background: color-mix(in srgb, var(--accent-wash) 45%, var(--surface));
}
.plan-ribbon {
  position: absolute; top: 10px; right: 10px;
  font-size: 0.68rem; font-weight: 700;
  padding: 3px 8px; border-radius: 999px;
  background: var(--accent); color: var(--on-accent);
  font-family: var(--font-body);
  z-index: 1;
}
.plan-ribbon.muted { background: var(--text-faint); }
.plan-card-locked { opacity: 0.78; }
.plan-cta {
  width: 100%;
  justify-content: center;
  margin-top: auto;
  flex: none;
  min-height: 42px;
  font-size: 0.86rem;
}

/* FiveOnePay inline checkout modal */
.checkout-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 13000;
  display: grid;
  place-items: center;
  padding: max(12px, env(safe-area-inset-top)) 14px max(12px, env(safe-area-inset-bottom));
  background: color-mix(in srgb, #000 62%, transparent);
  backdrop-filter: blur(10px) saturate(1.1);
  -webkit-backdrop-filter: blur(10px) saturate(1.1);
  animation: checkout-overlay-in 0.28s ease-out;
}
.checkout-modal-overlay[hidden] { display: none !important; }
@keyframes checkout-overlay-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.checkout-modal {
  width: min(560px, 100%);
  max-height: min(920px, 96dvh);
  display: flex;
  flex-direction: column;
  border-radius: 22px;
  overflow: hidden;
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--accent) 14%, var(--glass)) 0%, var(--surface) 52%),
    var(--surface);
  border: 1px solid var(--glass-border, var(--border-soft));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent),
    0 28px 64px -20px rgba(0, 0, 0, 0.55),
    var(--shadow-lg);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
  animation: checkout-modal-in 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes checkout-modal-in {
  from { opacity: 0; transform: translateY(18px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.checkout-modal-security {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 14px;
  font-size: 0.78rem;
  font-weight: 650;
  letter-spacing: 0.01em;
  color: var(--on-lime, #0A0A0A);
  background: linear-gradient(90deg, var(--lime), color-mix(in srgb, var(--lime) 75%, #fff));
  text-align: center;
}
.checkout-modal-security i { font-size: 0.9rem; }
.checkout-modal-security--bottom {
  margin-top: 10px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--lime) 18%, var(--surface-raised));
  color: var(--text);
  border: 1px solid color-mix(in srgb, var(--lime) 35%, var(--border));
}

.checkout-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 18px 8px;
}
.checkout-modal-eyebrow {
  margin: 0 0 2px;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-faint);
}
.checkout-modal-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--text);
}
.checkout-modal-close {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 12px;
}

.checkout-modal-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0 18px 12px;
}
.checkout-pay-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--text);
  background: color-mix(in srgb, var(--surface-raised) 88%, transparent);
  border: 1px solid var(--border-soft);
}
.checkout-pay-badge--card {
  font-size: 1rem;
  padding: 2px 8px;
  color: var(--accent-bright);
}

.checkout-modal-body {
  position: relative;
  flex: 1 1 auto;
  min-height: 280px;
  margin: 0 14px 4px;
  border-radius: 16px;
  overflow: hidden;
  background: color-mix(in srgb, var(--bg) 70%, var(--surface));
  border: 1px solid var(--border-soft);
}
.checkout-modal-waiting {
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 12px;
  text-align: center;
  padding: 36px 24px;
  color: var(--text-dim);
}
.checkout-modal-waiting[hidden] { display: none !important; }
.checkout-modal-waiting h3 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
}
.checkout-modal-waiting p {
  margin: 0;
  max-width: 34ch;
  font-size: 0.9rem;
  line-height: 1.45;
}
.checkout-popup-blocked {
  color: var(--accent-bright) !important;
  font-weight: 600;
  font-size: 0.82rem !important;
}
.checkout-open-pay-btn {
  margin-top: 6px;
  min-height: 44px;
  padding-inline: 18px;
  gap: 8px;
}
.checkout-skeleton-spinner {
  width: 40px;
  height: 40px;
  margin: 0 auto;
  border-radius: 50%;
  border: 3px solid color-mix(in srgb, var(--accent) 25%, transparent);
  border-top-color: var(--accent-bright);
  animation: checkout-spin 0.8s linear infinite;
}
@keyframes checkout-spin {
  to { transform: rotate(360deg); }
}

.checkout-modal-success {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: grid;
  place-content: center;
  gap: 8px;
  text-align: center;
  padding: 24px;
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  backdrop-filter: blur(8px);
}
.checkout-modal-success[hidden] { display: none !important; }
.checkout-modal-success h3 {
  margin: 8px 0 0;
  font-family: var(--font-display);
  font-size: 1.15rem;
  color: var(--text);
}
.checkout-modal-success p {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.92rem;
}
.checkout-success-check {
  width: 72px;
  height: 72px;
  margin: 0 auto;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 1.8rem;
  color: var(--on-lime, #0A0A0A);
  background: var(--lime);
  box-shadow: 0 0 0 8px color-mix(in srgb, var(--lime) 22%, transparent);
  animation: checkout-success-pop 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.checkout-success-burst {
  position: absolute;
  inset: 20% 18%;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lime) 28%, transparent), transparent 70%);
  animation: checkout-success-burst 0.7s ease-out;
  pointer-events: none;
}
@keyframes checkout-success-pop {
  from { transform: scale(0.5); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
@keyframes checkout-success-burst {
  from { transform: scale(0.4); opacity: 0.8; }
  to { transform: scale(1.4); opacity: 0; }
}

.checkout-modal-foot {
  padding: 12px 18px 16px;
}
.checkout-modal-privacy {
  margin: 0 0 8px;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 8px;
  text-align: center;
  font-size: 0.75rem;
  line-height: 1.4;
  color: var(--text-dim);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 640px) {
  .checkout-modal {
    width: 100%;
    max-height: 100dvh;
    border-radius: 18px;
  }
  .checkout-modal-body {
    min-height: 240px;
  }
  .checkout-modal-security {
    font-size: 0.7rem;
    padding: 9px 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .checkout-modal-overlay,
  .checkout-modal,
  .checkout-skeleton-spinner,
  .checkout-success-check,
  .checkout-success-burst {
    animation: none !important;
  }
}

.plan-card-sub {
  margin: -2px 0 8px;
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--text-dim);
  flex: none;
}

/* PREMIUM — lime accent */
.plan-card-premium {
  border-color: color-mix(in srgb, var(--lime) 45%, var(--border));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 22%, transparent),
    0 14px 32px -16px rgba(var(--lime-rgb), 0.35),
    var(--shadow-md);
  background:
    linear-gradient(
      165deg,
      color-mix(in srgb, var(--lime) 10%, var(--surface)) 0%,
      color-mix(in srgb, var(--surface-raised) 92%, transparent) 48%,
      var(--surface) 100%
    );
}
.plan-ribbon-gold {
  background: linear-gradient(135deg, var(--lime), #A8E000);
  color: var(--on-lime);
}
.plan-billing-toggle-gold .plan-billing-btn.is-active {
  background: linear-gradient(135deg, var(--lime), #A8E000);
  color: var(--on-lime);
}
.plan-card-premium .plan-price-ar {
  color: color-mix(in srgb, var(--lime) 70%, var(--text));
}
:root[data-theme="dark"] .plan-card-premium .plan-price-ar {
  color: var(--lime);
}
.plan-cta-premium {
  background: linear-gradient(135deg, var(--lime), #A8E000) !important;
  color: var(--on-lime) !important;
  box-shadow: 0 10px 22px -12px rgba(var(--lime-rgb), 0.65) !important;
}
.plan-cta-secondary {
  width: 100%;
  margin-top: 8px;
  justify-content: center;
}
.plan-seats {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 14px;
  padding: 12px;
  border-radius: 14px;
  border: 1px solid color-mix(in srgb, var(--lime) 28%, var(--border));
  background: color-mix(in srgb, var(--lime) 8%, transparent);
}
.plan-seats-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.plan-seats-counter {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.plan-seats-btn {
  width: 36px;
  height: 36px;
  border-radius: 11px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  font-size: 1.15rem;
  font-weight: 700;
  cursor: pointer;
  line-height: 1;
}
.plan-seats-btn:hover:not(:disabled) {
  border-color: var(--accent);
  color: var(--accent-deep);
}
.plan-seats-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.plan-seats-value {
  min-width: 2.2ch;
  text-align: center;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text);
}
.plan-seats-hint {
  margin: 0;
  font-size: 0.75rem;
  color: var(--text-dim);
  line-height: 1.35;
}
.wt-free-ad {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px dashed color-mix(in srgb, var(--accent) 35%, var(--border));
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}
.wt-free-ad[hidden] {
  display: none !important;
}
.wt-free-ad-badge {
  flex: none;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: var(--accent);
  color: var(--on-accent);
}
.wt-free-ad-copy {
  margin: 0;
  flex: 1;
  min-width: 12ch;
  font-size: 0.78rem;
  line-height: 1.4;
  color: var(--text-dim);
}
.wt-free-ad-cta {
  appearance: none;
  border: none;
  background: transparent;
  color: var(--accent-deep);
  font-family: var(--font-display);
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
  padding: 0;
}
:root[data-theme="dark"] .wt-free-ad-cta {
  color: var(--accent-bright);
}
.plan-cta-premium:hover {
  filter: brightness(1.05);
}

/* PREMIUM inquiry form */
.premium-inquiry-modal {
  width: min(480px, 94vw);
  max-width: min(480px, 94vw);
  max-height: min(90vh, 720px);
  overflow-x: hidden;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0;
  padding-bottom: 22px;
  position: relative;
}
.premium-inquiry-modal .modal-head {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  margin: 0 0 10px;
}
.premium-inquiry-modal .modal-head h2 {
  margin: 0;
  font-size: 1.25rem;
}
.premium-inquiry-modal .modal-head .icon-btn {
  margin-left: auto;
}
.premium-inquiry-lead {
  margin: 0 0 14px;
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--text-dim);
  flex: none;
}
.premium-inquiry-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}
.premium-inquiry-form textarea {
  width: 100%;
  min-height: 88px;
  height: 88px;
  max-height: 88px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.9rem;
  resize: none;
  outline: none;
  box-sizing: border-box;
}
.premium-inquiry-form textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-wash);
}
.premium-inquiry-hint {
  margin: 0;
  font-size: 0.78rem;
  color: var(--text-faint);
  line-height: 1.4;
}
.premium-inquiry-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: nowrap;
  margin-top: 6px;
  padding-top: 4px;
}
/* ghost-btn is width:100% globally — keep both CTAs on one row inside the card */
.premium-inquiry-actions .ghost-btn,
.premium-inquiry-actions .primary-btn {
  width: auto;
  min-height: 44px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  white-space: nowrap;
}
.premium-inquiry-actions .primary-btn {
  flex: 1 1 auto;
  max-width: 100%;
}

/* PRO billing toggle */
.plan-billing-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0 0 8px;
  padding: 3px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 70%, transparent);
  flex: none;
}
.plan-billing-btn {
  border: none;
  background: transparent;
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  padding: 7px 12px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.plan-billing-btn.is-active {
  background: linear-gradient(135deg, var(--accent-bright), var(--accent));
  color: #fff;
}
.plan-billing-save {
  margin-left: 4px;
  font-size: 0.68rem;
  font-weight: 700;
  opacity: 0.9;
}

/* Pay-as-you-go calculator */
.plan-card-payg {
  border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
}
.plan-payg-lead {
  margin: 0 0 14px;
  font-size: 0.82rem;
  line-height: 1.4;
  color: var(--text-dim);
}
.plan-payg-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 14px;
}
.plan-payg-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text);
}
.plan-payg-label strong {
  font-family: var(--font-display);
  color: var(--accent-deep);
}
:root[data-theme="dark"] .plan-payg-label strong { color: var(--accent-bright); }
.plan-payg-field input[type="range"] {
  width: 100%;
  accent-color: var(--accent);
  cursor: pointer;
}
.plan-payg-hint {
  font-size: 0.72rem;
  color: var(--text-faint);
}
.plan-payg-hint-usd { opacity: 0.85; }
.plan-payg-total {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 4px 0 14px;
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border));
  background: var(--accent-wash);
}
.plan-payg-total-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.plan-payg-total .plan-price-ar { font-size: 1.4rem; }
.plan-payg-total .plan-price-usd { font-size: 0.85rem; }

/* ---------- Cloud: mild shrink on smaller PC screens (keep chip labels) ---------- */
@media (min-width: 901px) and (max-width: 1360px) {
  .cloud-page.wt-app {
    --wt-rail-w: 76px;
    --wt-chrome-top: 58px;
    --wt-stage-pad-top: calc(var(--wt-chrome-top) + 32px);
    --wt-stage-pad-bottom: 20px;
    --wt-stage-pad-left: calc(var(--wt-rail-w) + 18px);
  }

  .wt-chrome {
    top: 12px;
    left: calc(var(--wt-rail-w) + 12px);
    right: 12px;
    gap: 12px;
  }

  .wt-rail {
    width: var(--wt-rail-w);
    padding: 14px 6px;
    gap: 8px;
  }
  .wt-rail-logo {
    width: 44px;
    height: 44px;
  }
  .wt-rail-item {
    padding: 8px 2px;
    font-size: 0.58rem;
  }

  .wt-mode-chip {
    padding: 6px 10px;
    font-size: 0.7rem;
    gap: 5px;
  }

  .wt-top-pill {
    gap: 6px;
    padding: 6px 8px 6px 6px;
  }
  .wt-top-tab {
    padding: 6px 10px;
    font-size: 0.75rem;
    gap: 5px;
  }
  .wt-upgrade-btn {
    padding: 6px 10px;
    font-size: 0.7rem;
  }

  .wt-stage {
    padding: var(--wt-stage-pad-top) 18px var(--wt-stage-pad-bottom) var(--wt-stage-pad-left);
  }

  .wt-panel,
  .wt-panel.is-xfer {
    width: min(370px, calc(100vw - var(--wt-stage-pad-left) - 18px));
  }

  .wt-panel-form {
    padding: 14px;
    gap: 8px;
  }
}

/* Short laptop height — tighter chrome, keep card centered */
@media (min-width: 901px) and (max-height: 860px) {
  .cloud-page.wt-app {
    --wt-chrome-top: 54px;
    --wt-stage-pad-top: calc(var(--wt-chrome-top) + 20px);
    --wt-stage-pad-bottom: 24px;
  }

  .wt-chrome { top: 10px; }

  .wt-stage {
    align-items: center !important;
  }

  .wt-panel-form {
    padding: 14px 16px 12px;
    gap: 8px;
  }
}

@media (max-width: 900px) {
  .plans-modal {
    max-height: min(92vh, 92dvh);
    overflow-y: auto;
    overflow-x: hidden;
  }
  .plans-grid,
  .plans-grid-4 {
    grid-template-columns: 1fr;
    overflow: visible;
    flex: none;
  }
  .plan-card {
    max-height: min(70vh, 70dvh, 520px);
  }
  .wt-top-tabs .wt-top-tab:nth-child(n+3) { display: none; }
  .wt-account-info { display: none; }
  .wt-mode-chips { display: none; }

  .wt-chrome {
    top: max(10px, env(safe-area-inset-top));
    left: calc(var(--wt-rail-w, 64px) + 8px);
    right: max(10px, env(safe-area-inset-right));
    gap: 0;
    z-index: 40;
  }

  /* No animated backgrounds on mobile — lock viewport so CTA never clips */
  html:has(body.cloud-page.wt-app) {
    height: 100%;
    overflow: hidden;
  }
  body.cloud-page.wt-app {
    --wt-rail-w: 64px;
    --wt-top-h: calc(10px + env(safe-area-inset-top, 0px) + 52px + 12px);
    /* tools 42 + gap 8 + CTA 48 + pad 10+12 + safe-area */
    --wt-footer-h: calc(42px + 8px + 48px + 22px + env(safe-area-inset-bottom, 0px));
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    max-height: 100%;
    overflow: hidden;
    background: var(--surface);
  }
  .tk-ballpit-bg,
  .tk-gridmotion-bg,
  .tk-lightfall-bg,
  .tk-driftwall-bg,
  #tkBallpitBg,
  #tkGridMotionBg,
  #tkLightfallBg,
  #tkDriftWallBg,
  .wt-wallpaper {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
  html.tk-ballpit-on,
  html.tk-gridmotion-visible,
  html.tk-lightfall-on,
  html.tk-driftwall-on {
    background: var(--surface) !important;
  }

  /* Icon-only chrome — less text clutter on phones / small tablets */
  .wt-rail {
    width: 64px;
    padding-left: max(6px, env(safe-area-inset-left));
  }
  .wt-rail-item {
    padding: 12px 4px;
    font-size: 0;
  }
  .wt-rail-item span { display: none; }
  .wt-rail-item i { font-size: 1.1rem; }

  .wt-upgrade-label { display: none; }
  .wt-upgrade-btn {
    width: 40px;
    height: 40px;
    padding: 0;
    justify-content: center;
    border-radius: 50%;
  }

  .wt-top-tab-label { display: none; }
  .wt-top-tab {
    width: 40px;
    height: 40px;
    padding: 0;
    justify-content: center;
  }
  .wt-top-tab > i { font-size: 0.95rem; opacity: 1; }

  .wt-top-pill {
    position: relative;
    left: auto;
    right: auto;
    top: auto;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    padding: 6px;
    gap: 6px;
    overflow-x: hidden;
    z-index: 40;
    height: 52px;
    box-sizing: border-box;
  }

  /*
   * Mobile cloud shell — clear chrome, no overlap, footer pinned.
   */
  .wt-stage {
    position: absolute;
    inset: 0 0 0 var(--wt-rail-w);
    z-index: 5;
    width: auto;
    height: auto;
    max-height: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-sizing: border-box;
    background: var(--surface);
  }

  .wt-panel,
  .wt-panel.is-xfer,
  .wt-panel.tk-glass-hover {
    flex: 1 1 auto;
    width: 100%;
    max-width: none;
    min-height: 0;
    height: 100%;
    margin: 0;
    border-radius: 0;
    border: none;
    border-left: 1px solid var(--border-soft);
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: var(--surface);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    animation: none;
    transform: none;
  }
  .wt-panel:hover {
    box-shadow: none;
    transform: none;
  }

  .wt-panel-form {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: var(--wt-top-h) 14px 12px;
    margin: 0;
    overflow: hidden;
    box-sizing: border-box;
  }
  /* Room for fixed CTA bar so Turnstile / fields aren't hidden under it */
  .wt-panel-form:has(#uploadFooter:not([hidden])) {
    padding-bottom: calc(var(--wt-footer-h) + 8px);
  }

  .wt-compose {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 10px;
    padding-bottom: 8px;
  }

  .wt-fields,
  .wt-fields-underline {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  .wt-fields-underline .wt-field {
    margin: 0;
  }

  .wt-fields-underline .wt-field input,
  .wt-fields-underline .wt-field textarea {
    padding-top: 8px;
    padding-bottom: 8px;
    font-size: 0.9rem;
  }

  .wt-fields-underline .wt-field textarea {
    min-height: 2.4em;
    max-height: 4em;
  }

  .wt-file-stack {
    flex: 1 1 auto;
    min-height: 0;
  }

  .wt-file-list {
    flex: 1 1 auto;
    max-height: min(38vh, 260px);
    overflow-y: auto;
    margin: 0;
  }

  .wt-add-row {
    flex: 0 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .wt-add-label { display: none !important; }
  .wt-add-btn {
    min-height: 48px;
    height: 48px;
    padding: 0;
    gap: 0;
    font-size: 0;
    border-radius: 14px;
  }
  .wt-add-btn i { font-size: 1.1rem; }
  .wt-add-btn .tk-ua {
    width: 26px;
    height: 26px;
  }

  .wt-upsell,
  .wt-drop-limit,
  #dropHintText {
    display: none !important;
  }

  /* Invisible Turnstile — no reserved slot in mobile compose */
  .wt-compose .wt-turnstile-wrap:not(.wt-turnstile-wrap--invisible),
  #uploadTurnstile:not(.wt-turnstile-wrap--invisible) {
    flex: 0 0 auto;
    margin: 8px 0 4px;
    min-height: 65px;
    max-height: 70px;
    padding: 2px 0;
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    z-index: 1;
  }
  .wt-compose .wt-turnstile-wrap .cf-turnstile,
  #uploadTurnstile .cf-turnstile {
    transform: none;
  }

  /*
   * CTA bar pinned to the visible viewport bottom.
   * Independent of flex/scroll — button cannot be clipped.
   */
  .wt-bottom,
  .wt-bottom-stack,
  #uploadFooter {
    position: fixed;
    left: var(--wt-rail-w);
    right: 0;
    bottom: 0;
    z-index: 45;
    flex: none;
    width: auto;
    margin: 0;
    gap: 8px;
    padding: 10px 14px max(12px, env(safe-area-inset-bottom, 0px));
    background: var(--surface);
    box-shadow: 0 -12px 28px color-mix(in srgb, var(--surface) 92%, transparent);
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
  }

  .wt-bottom-tools {
    gap: 8px;
    flex-shrink: 0;
  }

  .wt-expiry-chip {
    height: 42px;
    padding: 0 12px;
  }

  .wt-options-btn {
    width: 42px;
    height: 42px;
  }

  .wt-cta {
    height: 48px;
    flex-shrink: 0;
    margin: 0;
    width: 100%;
  }

  .wt-opt-seg-label { display: none; }
  .wt-opt-seg {
    min-width: 44px;
    justify-content: center;
    padding-left: 10px;
    padding-right: 10px;
  }

  .wt-xfer,
  .wt-xfer-done {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-bottom: 8px;
  }
}

@media (min-width: 901px) and (max-width: 1100px) {
  .plans-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plan-card { max-height: min(58vh, 480px); }
}

@media (max-width: 900px) {
  .wt-options-menu {
    left: 0;
    right: 0;
    bottom: calc(100% + 10px);
    width: auto;
    max-height: min(70vh, 70dvh, 520px);
  }
}

@media (max-width: 720px) {
  .wt-panel { width: 100%; margin-top: 0; }
  .wt-add-row { grid-template-columns: 1fr 1fr; }
  .wt-options-menu {
    position: fixed;
    left: calc(64px + 12px);
    right: max(12px, env(safe-area-inset-right));
    bottom: max(12px, env(safe-area-inset-bottom));
    width: auto;
    max-height: min(55dvh, 420px);
    z-index: 60;
  }
}

@media (max-width: 400px) {
  .wt-upsell { font-size: 0.72rem; line-height: 1.35; }
  .wt-expiry-chip .wt-expiry-value { max-width: 5.5rem; overflow: hidden; text-overflow: ellipsis; }
}

@media (prefers-reduced-motion: reduce) {
  .wt-orb-a, .wt-orb-b, .wt-panel { animation: none; }
}



/* Download page */
.download-page {
  min-height: 100vh;
  position: relative;
  display: flex;
  flex-direction: column;
}
.download-page .dl-shell {
  width: 100%;
  flex: 1;
}
.download-page .dl-footer {
  margin-top: auto;
}
.dl-bg {
  position: fixed; inset: 0; z-index: -1;
  background:
    radial-gradient(ellipse at 20% 10%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 50%),
    var(--bg);
}
.dl-bg.has-image::after {
  content: "";
  position: absolute; inset: 0;
  background: color-mix(in srgb, var(--bg) 45%, transparent);
}
.dl-top {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 22px;
}
.dl-brand {
  display: inline-flex; align-items: center; gap: 10px;
  text-decoration: none; height: 36px;
}
.dl-brand .wordmark-img { height: 100%; width: auto; max-width: 180px; }
.dl-custom-logo { height: 40px; width: auto; max-width: 160px; object-fit: contain; }
.dl-shell {
  flex: 1;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  padding: 24px 16px 48px;
  gap: 18px;
}
.dl-card {
  width: min(440px, 100%);
  padding: 28px 24px;
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--surface) 86%, transparent);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-lg);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  text-align: center;
}
.dl-eyebrow {
  margin: 0 0 12px;
  color: var(--accent-bright);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.dl-layout {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
}
.dl-media {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 0;
}
.dl-body {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
  text-align: center;
}
.dl-file-icon {
  width: 64px; height: 64px; margin: 0 auto 14px;
  border-radius: 18px;
  display: grid; place-items: center;
  background: var(--accent-wash);
  color: var(--accent-deep);
  font-size: 1.5rem;
}
.dl-file-icon[hidden] { display: none !important; }

.dl-preview {
  position: relative;
  width: 100%;
  margin: 0;
  border-radius: 16px;
  overflow: hidden;
  background: color-mix(in srgb, var(--surface-raised) 80%, transparent);
  border: 1px solid var(--border-soft);
  min-height: 140px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.dl-preview[hidden] { display: none !important; }
.dl-preview-thumb {
  position: relative;
  display: block;
  width: 100%;
  border: none;
  padding: 0;
  margin: 0;
  background: #0a0a0a;
  cursor: pointer;
  overflow: hidden;
}
.dl-preview-thumb img {
  display: block;
  width: 100%;
  max-height: min(38vh, 280px);
  object-fit: contain;
  margin: 0 auto;
}
.dl-preview-eye {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: color-mix(in srgb, #000 45%, transparent);
  color: #fff;
  font-size: 1.5rem;
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
}
.dl-preview-eye--label {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 8px;
  inset: auto;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: auto;
  height: auto;
  padding: 10px 18px;
  border-radius: 999px;
  background: #fff;
  color: #111;
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 700;
  box-shadow: var(--shadow-md);
}
.dl-preview-eye--label i { font-size: 0.9rem; }
.dl-preview-thumb:hover .dl-preview-eye,
.dl-preview-thumb:focus-visible .dl-preview-eye {
  opacity: 1;
}
.dl-preview.is-strip {
  min-height: 140px;
  max-height: min(32vh, 260px);
  padding: 0;
  border: none;
}
.dl-strip,
.dl-strip-grid {
  display: grid;
  width: 100%;
  height: min(32vh, 260px);
  overflow: hidden;
  gap: 3px;
  background: color-mix(in srgb, var(--border) 55%, transparent);
}
.dl-preview.count-1 .dl-strip-grid {
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
}
.dl-preview.count-2 .dl-strip-grid {
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr;
}
.dl-preview.count-3 .dl-strip-grid {
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.dl-preview.count-3 .dl-strip-grid img:first-child {
  grid-row: 1 / -1;
}
.dl-preview.count-4 .dl-strip-grid,
.dl-strip-grid {
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.dl-strip img,
.dl-strip-grid img {
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  object-fit: cover;
  display: block;
}
.dl-strip-open {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  border-radius: 999px;
  padding: 10px 18px;
  background: #fff;
  color: #111;
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--shadow-md);
}
.dl-strip-open:hover {
  background: var(--lime, #C6FF33);
  color: #000;
}
.dl-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 8px;
}
.dl-actions[hidden] { display: none !important; }
.dl-open-btn,
.dl-download-btn {
  width: 100%;
  justify-content: center;
}
.dl-download-btn.ghost-btn {
  border: 1.5px solid var(--accent);
  color: var(--accent);
  background: transparent;
}
.dl-download-btn.ghost-btn:hover {
  background: var(--accent-wash);
}
.dl-file-names {
  list-style: none;
  margin: 0 0 8px;
  padding: 0;
  text-align: left;
  max-height: 120px;
  overflow-y: auto;
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface-raised) 70%, transparent);
}
.dl-file-names[hidden] { display: none !important; }
.dl-file-names li {
  padding: 8px 12px;
  border-bottom: 1px solid var(--border-soft);
  font-size: 0.86rem;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dl-file-names li:last-child { border-bottom: none; }
.dl-file-names .dl-file-more {
  color: var(--text-dim);
  font-weight: 600;
}
.dl-preview-media {
  display: block;
  width: 100%;
  max-height: min(42vh, 320px);
  object-fit: contain;
  background: #0a0a0a;
  border: none;
  padding: 0;
}
.dl-preview.is-video .dl-preview-media,
.dl-preview.is-pdf .dl-preview-media {
  cursor: default;
  max-height: min(48vh, 360px);
  min-height: 180px;
}
.dl-preview-pdf {
  width: 100%;
  height: min(42vh, 300px);
  background: var(--surface);
}
.dl-preview-open {
  display: inline-block;
  margin: 8px 0 10px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--accent-bright);
  text-decoration: none;
}
.dl-preview-open:hover { text-decoration: underline; }
.dl-preview-audio {
  width: 100%;
  padding: 18px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: var(--accent-bright);
  font-size: 1.6rem;
}
.dl-preview-audio audio { width: 100%; }
.dl-preview-locked {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 28px 16px;
  color: var(--text-dim);
  font-size: 0.85rem;
  font-weight: 600;
}
.dl-preview-locked i {
  font-size: 1.8rem;
  color: var(--accent-bright);
  opacity: 0.85;
}
.dl-preview-loading {
  padding: 36px 16px;
  color: var(--text-dim);
  font-size: 0.85rem;
}
.dl-preview-error {
  padding: 24px 16px;
  color: var(--danger);
  font-size: 0.85rem;
}

/* Lightbox */
.dl-lightbox {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, #000 78%, transparent);
  backdrop-filter: blur(8px);
  padding: 24px;
  box-sizing: border-box;
}
.dl-lightbox[hidden] { display: none !important; }
.dl-lb-inner {
  position: relative;
  max-width: min(960px, 100%);
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.dl-lb-inner img {
  max-width: 100%;
  max-height: calc(90vh - 64px);
  object-fit: contain;
  border-radius: 12px;
  box-shadow: var(--shadow-lg);
  background: #0a0a0a;
}
.dl-lb-caption {
  margin: 0;
  color: #fff;
  font-size: 0.9rem;
  text-align: center;
  max-width: 90vw;
  word-break: break-word;
}
.dl-lb-close,
.dl-lb-prev,
.dl-lb-next {
  position: absolute;
  border: none;
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  color: var(--text);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  display: grid;
  place-items: center;
  font-size: 1.1rem;
  box-shadow: var(--shadow-md);
}
.dl-lb-close { top: 16px; right: 16px; position: fixed; }
.dl-lb-prev { left: 16px; top: 50%; transform: translateY(-50%); position: fixed; }
.dl-lb-next { right: 16px; top: 50%; transform: translateY(-50%); position: fixed; }
.dl-lb-prev[hidden],
.dl-lb-next[hidden] { display: none !important; }
.dl-lb-close:hover,
.dl-lb-prev:hover,
.dl-lb-next:hover {
  background: var(--accent);
  color: var(--on-accent);
}

.dl-card h1 {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 1.25rem;
  word-break: break-word;
}
.dl-meta, .dl-countdown, .dl-note, .dl-sender {
  margin: 0 0 8px;
  color: var(--text-dim);
  font-size: 0.9rem;
}
.dl-sender {
  color: var(--text);
  word-break: break-word;
}
.dl-sender[hidden] { display: none !important; }
.dl-countdown {
  font-family: var(--font-mono);
  color: var(--text);
  margin-bottom: 16px;
}
.dl-password {
  display: flex; flex-direction: column; gap: 10px;
  text-align: left; margin-bottom: 12px;
}
.dl-password[hidden] { display: none !important; }
.dl-password label { display: flex; flex-direction: column; gap: 6px; font-size: 0.85rem; color: var(--text-dim); }
.dl-password input {
  height: 42px; border-radius: 12px; border: 1px solid var(--border);
  background: var(--surface); color: var(--text); padding: 0 12px; font: inherit;
}
.dl-download-btn { width: 100%; justify-content: center; margin-top: 4px; }
.dl-download-btn[hidden],
.dl-open-btn[hidden] { display: none !important; }
.dl-error { color: var(--danger); font-size: 0.9rem; margin: 10px 0 0; }
.dl-error[hidden] { display: none !important; }
.dl-footer {
  margin: 0;
  padding: 16px 20px 28px;
  text-align: center;
  font-size: 0.78rem;
  color: var(--text-faint);
}
.dl-footer p {
  margin: 0;
}

/* Desktop: preview | infos side-by-side (shorter card) */
@media (min-width: 768px) {
  .dl-card {
    width: min(760px, 100%);
    padding: 28px 28px 24px;
    text-align: left;
  }
  .dl-eyebrow {
    margin-bottom: 16px;
  }
  .dl-layout {
    flex-direction: row;
    align-items: stretch;
    gap: 22px;
  }
  .dl-media {
    flex: 0 0 min(46%, 320px);
    max-width: 320px;
    align-self: stretch;
  }
  .dl-preview {
    height: 100%;
    min-height: 220px;
    max-height: 280px;
  }
  .dl-preview-thumb,
  .dl-preview-thumb img,
  .dl-preview-media {
    height: 100%;
    max-height: 280px;
  }
  .dl-preview-thumb img,
  .dl-preview-media {
    object-fit: contain;
    background: #0a0a0a;
  }
  .dl-preview.is-video .dl-preview-media,
  .dl-preview.is-pdf .dl-preview-media {
    object-fit: contain;
    max-height: 280px;
    min-height: 0;
  }
  .dl-preview-pdf {
    height: 280px;
  }
  .dl-file-icon {
    margin: 40px auto;
  }
  .dl-body {
    flex: 1 1 0;
    justify-content: center;
    text-align: left;
    gap: 2px;
  }
  .dl-card h1 {
    font-size: 1.15rem;
    margin-bottom: 6px;
  }
  .dl-meta,
  .dl-countdown,
  .dl-note {
    text-align: left;
  }
  .dl-countdown {
    margin-bottom: 14px;
  }
  .dl-download-btn,
  .dl-password .primary-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 180px;
  }
  .dl-note {
    font-size: 0.8rem;
    margin-top: 10px;
  }
}

@media (max-width: 900px) {
  .cloud-bento { grid-template-columns: 1fr; }
  .cloud-card-premium { grid-column: auto; }
  .cloud-brand-row { grid-template-columns: 1fr; }
  .plans-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .transfer-mode-nav { width: 100%; justify-content: space-between; }
  .transfer-mode-link { flex: 1; justify-content: center; padding: 8px 6px; font-size: 0.72rem; }
  .transfer-mode-link span { display: none; }
  .transfer-mode-link i { font-size: 0.95rem; }
  .mode-switcher { grid-template-columns: 1fr 1fr; }
  .mode-switch-btn .btn-text { font-size: 0.68rem; }
  .cloud-link-row { flex-direction: column; align-items: stretch; }
}

@media (prefers-reduced-motion: reduce) {
  .premium-lock,
  .cloud-card-premium.is-pulse .premium-lock { animation: none; }
}

/* ===== Profile settings panel ===== */
.ps-overlay {
  position: fixed;
  inset: 0;
  z-index: 95;
  display: block;
  background: color-mix(in srgb, #000 45%, transparent);
  backdrop-filter: blur(6px) saturate(1.05);
  -webkit-backdrop-filter: blur(6px) saturate(1.05);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.22s ease;
}
.ps-overlay.is-open {
  opacity: 1;
  pointer-events: auto;
}
.ps-overlay[hidden] { display: none !important; }

.ps-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(440px, 100vw);
  height: 100%;
  max-height: 100dvh;
  display: flex;
  flex-direction: column;
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--accent) 12%, var(--glass)) 0%, var(--surface) 48%),
    var(--surface);
  border-left: 1px solid var(--glass-border, var(--border-soft));
  box-shadow: -24px 0 64px -28px rgba(0, 0, 0, 0.55);
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
  overflow: hidden;
  will-change: transform;
}
.ps-overlay.is-open .ps-panel {
  transform: translateX(0);
}

.ps-head {
  flex: none;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 22px 22px 12px;
}
.ps-eyebrow {
  margin: 0 0 2px;
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.ps-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text);
}
.ps-icon-btn {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  border: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--surface-raised) 80%, transparent);
  color: var(--text);
  cursor: pointer;
}
.ps-icon-btn:hover {
  border-color: var(--accent);
  color: var(--accent-bright);
}

.ps-tabs {
  flex: none;
  display: flex;
  gap: 4px;
  padding: 0 16px 12px;
  overflow-x: auto;
  scrollbar-width: none;
}
.ps-tabs::-webkit-scrollbar { display: none; }
.ps-tab {
  flex: none;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-dim);
  font-size: 0.82rem;
  font-weight: 650;
  cursor: pointer;
  font-family: var(--font-body);
}
.ps-tab:hover { color: var(--text); background: var(--surface-raised); }
.ps-tab.is-active {
  color: var(--on-accent, #fff);
  background: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
}

.ps-body {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  padding: 0;
}
.ps-loading {
  position: absolute;
  top: 12px;
  left: 22px;
  right: 22px;
  z-index: 2;
  margin: 0;
  font-size: 0.85rem;
  color: var(--text-dim);
}
.ps-section {
  position: absolute;
  inset: 0;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 8px 22px 28px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 0.18s ease,
    transform 0.18s ease,
    visibility 0.18s ease;
}
.ps-section.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}
.ps-section[hidden] {
  display: block !important;
}

.ps-hero {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px;
  margin-bottom: 18px;
  border-radius: 16px;
  background: color-mix(in srgb, var(--surface-raised) 88%, transparent);
  border: 1px solid var(--border-soft);
}
.ps-hero-avatar {
  width: 56px;
  height: 56px;
  flex: none;
}
.ps-hero-name {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text);
}
.ps-hero-email {
  margin: 2px 0 6px;
  font-size: 0.82rem;
  color: var(--text-dim);
  word-break: break-all;
}
.ps-hero-badge {
  display: inline-flex;
  margin: 0;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--on-lime, #0A0A0A);
  background: var(--lime);
}

.ps-form { display: grid; gap: 14px; }
.ps-field { display: grid; gap: 6px; }
.ps-label {
  font-size: 0.78rem;
  font-weight: 650;
  color: var(--text-dim);
}
.ps-optional { font-weight: 500; color: var(--text-faint); }
.ps-field input,
.ps-field select {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.92rem;
}
.ps-field input:focus,
.ps-field select:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-wash);
}
.ps-field input[readonly] {
  opacity: 0.78;
  cursor: default;
}
.ps-hint {
  font-size: 0.72rem;
  color: var(--text-faint);
  line-height: 1.35;
}
.ps-actions { display: flex; justify-content: flex-end; margin-top: 4px; }
.ps-actions .primary-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
}

.ps-switch {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 12px;
  border-radius: 14px;
  border: 1px solid var(--border-soft);
  background: color-mix(in srgb, var(--surface-raised) 70%, transparent);
  cursor: pointer;
}
.ps-switch input {
  margin-top: 3px;
  accent-color: var(--accent);
  width: 18px;
  height: 18px;
  flex: none;
}
.ps-switch strong {
  display: block;
  font-size: 0.9rem;
  color: var(--text);
}
.ps-switch small {
  display: block;
  margin-top: 2px;
  font-size: 0.75rem;
  color: var(--text-dim);
  line-height: 1.4;
}

.ps-plan-card {
  padding: 18px;
  border-radius: 18px;
  border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--accent) 14%, transparent), transparent 55%),
    var(--surface-raised);
}
.ps-plan-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}
.ps-plan-kicker {
  margin: 0 0 2px;
  font-size: 0.72rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-faint);
}
.ps-plan-top h3 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.4rem;
}
.ps-plan-chip {
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  background: color-mix(in srgb, var(--accent) 20%, transparent);
  color: var(--accent-bright);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
}
.ps-plan-meta {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin: 0 0 14px;
}
.ps-plan-meta dt {
  margin: 0;
  font-size: 0.68rem;
  color: var(--text-faint);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.ps-plan-meta dd {
  margin: 2px 0 0;
  font-size: 0.86rem;
  font-weight: 650;
  color: var(--text);
}
.ps-plan-bar {
  height: 6px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--border) 80%, transparent);
  overflow: hidden;
  margin-bottom: 12px;
}
.ps-plan-bar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--accent), var(--lime));
}
.ps-plan-note {
  margin: 0 0 14px;
  font-size: 0.84rem;
  color: var(--text-dim);
  line-height: 1.45;
}
.ps-plan-amount {
  margin: -4px 0 12px;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--lime);
}
.ps-plan-ref {
  margin: -6px 0 14px;
  font-size: 0.7rem;
  color: var(--text-faint);
  word-break: break-all;
  font-family: var(--font-mono, ui-monospace, monospace);
}

.ps-team-card {
  margin-top: 14px;
  padding: 18px;
  border-radius: 18px;
  border: 1px solid color-mix(in srgb, var(--lime) 28%, var(--border));
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--lime) 10%, transparent), transparent 55%),
    var(--surface-raised);
}
.ps-team-card[hidden] {
  display: none !important;
}
.ps-team-code-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.ps-team-code-block {
  min-width: 0;
  flex: 1;
}
.ps-team-code {
  display: block;
  margin-top: 6px;
  padding: 10px 12px;
  border-radius: 12px;
  font-family: var(--font-mono);
  font-size: 0.95rem;
  font-weight: 650;
  letter-spacing: 0.04em;
  color: var(--text);
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  border: 1px solid var(--border-soft);
  word-break: break-all;
}
.ps-team-code.is-revealed {
  border-color: color-mix(in srgb, var(--lime) 45%, var(--border));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--lime) 18%, transparent);
}
.ps-team-timer {
  margin: 8px 0 0;
  font-size: 0.78rem;
  color: var(--text-dim);
}
.ps-team-timer strong {
  font-family: var(--font-mono);
  color: var(--accent-deep);
}
:root[data-theme="dark"] .ps-team-timer strong {
  color: var(--lime);
}
.ps-team-code-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ps-team-reveal-form,
.ps-team-create-form {
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--border-soft);
}
.ps-team-reveal-form[hidden],
.ps-team-create-form[hidden] {
  display: none !important;
}
.ps-team-seats {
  margin: 10px 0 0;
  font-size: 0.8rem;
  color: var(--text-dim);
}
.ps-team-seats[hidden] {
  display: none !important;
}
.ps-upgrade-btn {
  width: 100%;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 46px;
}

.ps-secure-card {
  padding: 16px;
  border-radius: 16px;
  border: 1px solid var(--border-soft);
  background: var(--surface-raised);
  margin-bottom: 18px;
}
.ps-secure-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.ps-secure-icon {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent-bright);
  font-size: 1.15rem;
}
.ps-secure-title {
  margin: 0;
  font-weight: 700;
  color: var(--text);
}
.ps-secure-sub {
  margin: 2px 0 0;
  font-size: 0.78rem;
  color: var(--text-dim);
}
.ps-secure-ok {
  margin-left: auto;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--lime);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ps-secure-note {
  margin: 12px 0 0;
  font-size: 0.78rem;
  color: var(--text-dim);
  line-height: 1.45;
}
.ps-danger {
  padding: 16px;
  border-radius: 16px;
  border: 1px solid color-mix(in srgb, var(--danger) 28%, var(--border));
  background: color-mix(in srgb, var(--danger) 6%, var(--surface));
}
.ps-danger h3 {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-size: 1rem;
}
.ps-danger p {
  margin: 0 0 12px;
  font-size: 0.84rem;
  color: var(--text-dim);
  line-height: 1.4;
}
.ps-logout-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  color: var(--danger) !important;
  border-color: color-mix(in srgb, var(--danger) 35%, var(--border)) !important;
}

html.ps-open {
  overflow: hidden;
  scrollbar-gutter: stable;
}

@media (max-width: 640px) {
  .ps-panel { width: 100%; }
  .ps-plan-meta { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .ps-overlay,
  .ps-panel,
  .ps-section {
    transition: none !important;
    animation: none !important;
  }
}

/* ===== My Transfers slide-over ===== */
.mt-overlay {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: color-mix(in srgb, var(--text) 28%, transparent);
  backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity 0.22s ease;
}
.mt-overlay.is-open { opacity: 1; }
.mt-overlay[hidden] { display: none !important; }

.mt-panel {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: min(420px, 100%);
  background: var(--surface);
  color: var(--text);
  border-left: 1px solid var(--border);
  box-shadow: -18px 0 48px rgba(0, 0, 0, 0.18);
  transform: translateX(104%);
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  flex-direction: column;
  padding: 22px 20px 28px;
}
.mt-panel.is-open { transform: translateX(0); }

.mt-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 6px;
}
.mt-eyebrow {
  margin: 0 0 4px;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
}
.mt-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
}
.mt-head-actions { display: flex; gap: 6px; }
.mt-lead {
  margin: 0 0 18px;
  color: var(--text-dim);
  font-size: 0.88rem;
}
.mt-empty {
  margin: 24px 0;
  text-align: center;
  color: var(--text-faint);
  font-size: 0.92rem;
}
.mt-list {
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-right: 2px;
  flex: 1;
}
.mt-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--surface-raised) 70%, var(--surface));
}
.mt-item.is-expired { opacity: 0.55; }
.mt-item-main { flex: 1; min-width: 0; }
.mt-item-name {
  margin: 0 0 4px;
  font-weight: 600;
  font-size: 0.92rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mt-item-meta {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  font-size: 0.78rem;
  color: var(--text-dim);
  font-family: var(--font-mono);
}
.mt-item-downloads.is-live {
  color: var(--accent);
  animation: mt-pulse 0.9s ease;
}
@keyframes mt-pulse {
  0% { transform: scale(1); }
  40% { transform: scale(1.08); }
  100% { transform: scale(1); }
}
.mt-item-actions { display: flex; gap: 4px; flex-shrink: 0; }
.mt-icon-btn {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-dim);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.mt-icon-btn:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-wash);
}
.mt-icon-btn.is-danger:hover {
  color: var(--danger);
  border-color: var(--danger);
  background: color-mix(in srgb, var(--danger) 12%, var(--surface));
}
body.mt-drawer-open { overflow: hidden; }

@media (max-width: 520px) {
  .mt-panel { width: 100%; }
}

/* ===== i18n language switch transition ===== */
html.i18n-switching body {
  opacity: 0.42;
  transition: opacity 0.16s ease;
  pointer-events: none;
}
html.i18n-ready body {
  opacity: 1;
  transition: opacity 0.28s ease;
}
@media (prefers-reduced-motion: reduce) {
  html.i18n-switching body,
  html.i18n-ready body {
    transition: none;
    opacity: 1;
    pointer-events: auto;
  }
}

/* Cloudflare Turnstile — invisible by default on cloud form; challenge overlays if needed */
.wt-turnstile-wrap {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 0 0 auto;
  margin: 0;
  padding: 4px 0 2px;
  min-height: 65px;
  max-height: 70px;
  position: relative;
  z-index: 1;
  isolation: isolate;
  overflow: hidden;
}
.wt-turnstile-wrap--invisible,
#uploadTurnstile.wt-turnstile-wrap--invisible {
  position: fixed !important;
  left: 0 !important;
  bottom: 0 !important;
  width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  border: 0 !important;
  clip: rect(0, 0, 0, 0) !important;
  z-index: -1 !important;
}
.wt-turnstile-wrap .cf-turnstile,
.login-turnstile {
  display: flex;
  justify-content: center;
  line-height: 0;
  width: 100%;
  max-width: 300px;
}
.wt-turnstile-wrap iframe {
  max-width: 100%;
}

/* ===== Glass surfaces (charte Black / Violet / Lime) ===== */
.glass-panel,
.wt-panel,
.plans-modal,
.login-card {
  background: var(--glass, color-mix(in srgb, var(--surface) 72%, transparent));
  border-color: var(--glass-border, var(--border-soft));
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
}

.bg-fx {
  background:
    radial-gradient(ellipse 55% 45% at 85% 8%, rgba(var(--accent-rgb), 0.22), transparent 55%),
    radial-gradient(ellipse 45% 40% at 8% 88%, rgba(var(--lime-rgb, 198, 255, 51), 0.12), transparent 50%),
    var(--bg);
}
.bg-glow {
  background: radial-gradient(circle, rgba(var(--accent-rgb), 0.2), transparent 68%);
}
.bg-glow::after {
  background: radial-gradient(circle at 70% 60%, rgba(var(--lime-rgb, 198, 255, 51), 0.1), transparent 58%);
}

/* ===== GSAP loader + page curtain ===== */
.tk-loader {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: grid;
  place-items: center;
  background: var(--bg);
  pointer-events: none;
}
.tk-loader.is-done { display: none; }
.tk-loader-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
}
.tk-loader-logo {
  height: 48px;
  width: auto;
  display: block;
}
.tk-loader-bar {
  width: 120px;
  height: 3px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--border) 80%, transparent);
  overflow: hidden;
}
.tk-loader-bar span {
  display: block;
  height: 100%;
  width: 100%;
  transform-origin: left center;
  background: linear-gradient(90deg, var(--accent), var(--lime));
  border-radius: inherit;
}
html.tk-loading body > *:not(.tk-loader):not(.tk-page-curtain):not(.tk-totop) {
  visibility: hidden;
}
html.tk-boot {
  background: var(--bg, #F7F5FC);
}
html.tk-boot::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  background: var(--bg, #F7F5FC);
  pointer-events: none;
}

/* Same surface + brand mark as .tk-loader (page transitions = loader look) */
.tk-page-curtain {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  background: var(--bg);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

[data-reveal] {
  will-change: transform, opacity;
}

/* ===== To-top — Transfereko Lift beacon ===== */
.tk-totop {
  --tk-totop-size: 58px;
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(22px, env(safe-area-inset-bottom));
  z-index: 9200;
  width: var(--tk-totop-size);
  height: calc(var(--tk-totop-size) + 10px);
  padding: 0;
  margin: 0;
  border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--border));
  border-radius: 14px 14px 18px 6px;
  background:
    linear-gradient(155deg,
      color-mix(in srgb, var(--surface) 88%, var(--accent) 12%) 0%,
      var(--surface) 55%,
      color-mix(in srgb, var(--surface) 92%, var(--lime) 8%) 100%);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 18%, transparent),
    0 14px 32px -14px rgba(var(--accent-rgb), 0.55),
    0 4px 12px rgba(0, 0, 0, 0.12);
  color: var(--text);
  cursor: pointer;
  display: grid;
  place-items: center;
  isolation: isolate;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  transform-origin: 70% 100%;
  -webkit-tap-highlight-color: transparent;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease,
    background 0.25s ease;
}
.tk-totop[hidden] { display: none !important; }
.tk-totop.is-visible { pointer-events: auto; }
.tk-totop.is-visible:not([hidden]) {
  animation: tk-totop-idle 2.8s ease-in-out infinite;
}
.tk-totop.is-launching,
.tk-totop:hover,
.tk-totop:focus-visible {
  animation: none;
}

.tk-totop-slash {
  position: absolute;
  left: 0;
  top: 12%;
  bottom: 12%;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, var(--lime), var(--accent));
  box-shadow: 0 0 12px rgba(var(--lime-rgb), 0.55);
}

.tk-totop-beam {
  position: absolute;
  left: 50%;
  bottom: 18%;
  width: 3px;
  height: 120%;
  transform: translateX(-50%) scaleY(0);
  transform-origin: bottom center;
  border-radius: 999px;
  background: linear-gradient(0deg, transparent, var(--lime) 40%, #fff 100%);
  opacity: 0;
  pointer-events: none;
  z-index: 0;
}

.tk-totop-rail {
  position: absolute;
  top: 8px;
  right: 8px;
  display: flex;
  flex-direction: column-reverse;
  gap: 3px;
  z-index: 1;
}
.tk-totop-tick {
  display: block;
  width: 10px;
  height: 2px;
  border-radius: 1px;
  background: color-mix(in srgb, var(--text-muted, #888) 55%, transparent);
  transform-origin: right center;
}
.tk-totop-tick:nth-child(1) { width: 6px; }
.tk-totop-tick:nth-child(2) { width: 8px; }
.tk-totop-tick:nth-child(3) { width: 10px; background: var(--lime); box-shadow: 0 0 8px rgba(var(--lime-rgb), 0.45); }

.tk-totop-core {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  margin-top: 6px;
}

.tk-totop-chevron {
  width: 12px;
  height: 12px;
  border-left: 2.5px solid var(--accent);
  border-top: 2.5px solid var(--accent);
  transform: rotate(45deg);
  margin-bottom: -2px;
  filter: drop-shadow(0 0 6px rgba(var(--accent-rgb), 0.35));
}

.tk-totop-label {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  line-height: 1;
  color: var(--text);
  padding-left: 0.18em;
}

.tk-totop:hover,
.tk-totop:focus-visible {
  border-color: color-mix(in srgb, var(--lime) 55%, var(--accent));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 35%, transparent),
    0 18px 36px -12px rgba(var(--accent-rgb), 0.65),
    0 0 28px -8px rgba(var(--lime-rgb), 0.35);
  outline: none;
}
.tk-totop:hover .tk-totop-chevron,
.tk-totop:focus-visible .tk-totop-chevron {
  border-color: var(--lime);
  animation: tk-totop-nudge 0.7s ease-in-out infinite;
}
.tk-totop:hover .tk-totop-tick,
.tk-totop:focus-visible .tk-totop-tick {
  background: var(--lime);
  box-shadow: 0 0 8px rgba(var(--lime-rgb), 0.4);
  animation: tk-totop-signal 0.9s ease-in-out infinite;
}
.tk-totop:hover .tk-totop-tick:nth-child(2),
.tk-totop:focus-visible .tk-totop-tick:nth-child(2) { animation-delay: 0.1s; }
.tk-totop:hover .tk-totop-tick:nth-child(3),
.tk-totop:focus-visible .tk-totop-tick:nth-child(3) { animation-delay: 0.2s; }

.tk-totop:active { filter: brightness(1.05); }

.tk-totop.is-launching {
  border-color: var(--lime);
  box-shadow:
    0 0 0 1px var(--lime),
    0 0 40px -6px rgba(var(--lime-rgb), 0.55),
    0 16px 30px -12px rgba(var(--accent-rgb), 0.5);
}
.tk-totop.is-launching .tk-totop-label { color: var(--accent-deep); }
:root[data-theme="dark"] .tk-totop.is-launching .tk-totop-label { color: var(--lime); }

@keyframes tk-totop-nudge {
  0%, 100% { transform: rotate(45deg) translate(0, 0); }
  50% { transform: rotate(45deg) translate(2px, -2px); }
}
@keyframes tk-totop-signal {
  0%, 100% { opacity: 0.35; transform: scaleX(0.85); }
  40% { opacity: 1; transform: scaleX(1); }
}
@keyframes tk-totop-idle {
  0%, 100% { box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 18%, transparent),
    0 14px 32px -14px rgba(var(--accent-rgb), 0.55),
    0 4px 12px rgba(0, 0, 0, 0.12); }
  50% { box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lime) 40%, transparent),
    0 16px 36px -12px rgba(var(--accent-rgb), 0.65),
    0 0 22px -6px rgba(var(--lime-rgb), 0.28); }
}

@media (max-width: 640px) {
  .tk-totop {
    --tk-totop-size: 52px;
    right: max(14px, env(safe-area-inset-right));
    bottom: max(18px, calc(env(safe-area-inset-bottom) + 64px));
  }
}

/* Cloud app: clear sticky bottom chrome */
body.cloud-page .tk-totop,
.wt-app .tk-totop {
  bottom: max(22px, calc(env(safe-area-inset-bottom) + 12px));
}
@media (max-width: 640px) {
  body.cloud-page .tk-totop,
  .wt-app .tk-totop {
    bottom: max(18px, calc(env(safe-area-inset-bottom) + 72px));
  }
}

@media (prefers-reduced-motion: reduce) {
  .tk-loader { display: none !important; }
  .tk-page-curtain { display: none !important; }
  html.tk-loading body > * { visibility: visible !important; }
  html.tk-boot::before { display: none !important; }
  html.tk-boot { background: inherit !important; }
  .tk-totop:hover .tk-totop-chevron,
  .tk-totop:focus-visible .tk-totop-chevron,
  .tk-totop:hover .tk-totop-tick,
  .tk-totop:focus-visible .tk-totop-tick,
  .tk-totop.is-visible:not([hidden]) { animation: none; }

  .tk-anim-pulse,
  .tk-anim-float,
  .tk-anim-fade-up,
  .mode-hero-card::after,
  .mode-hero-card-icon.tk-anim-float,
  .wt-cta.tk-anim-pulse,
  .card,
  .primary-btn,
  .ghost-btn,
  .wt-panel,
  .mode-hero-card,
  .modal,
  .modal-overlay {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
}

/* ---------- Motion utilities (static HTML — no shadcn/Framer) ---------- */
@keyframes tk-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--accent-rgb), 0.35); }
  50% { box-shadow: 0 0 0 10px rgba(var(--accent-rgb), 0); }
}
@keyframes tk-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
@keyframes tk-fade-up {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}
@keyframes tk-soft-glow {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.08); }
}

.tk-anim-pulse { animation: tk-pulse 2.4s ease-out infinite; }
.tk-anim-float { animation: tk-float 4.5s ease-in-out infinite; }
.tk-anim-fade-up { animation: tk-fade-up 0.32s cubic-bezier(0.22, 1, 0.36, 1) both; }
.tk-anim-delay-1 { animation-delay: 0.04s; }
.tk-anim-delay-2 { animation-delay: 0.08s; }
.tk-anim-delay-3 { animation-delay: 0.12s; }

.tk-glass-hover {
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
  border: 1px solid var(--glass-border);
  transition:
    transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.3s ease,
    border-color 0.2s ease,
    background 0.2s ease;
}
.tk-glass-hover:hover,
.tk-glass-hover:focus-visible {
  transform: translateY(-4px);
  border-color: color-mix(in srgb, var(--accent) 40%, var(--border));
  box-shadow: var(--shadow-md);
  background: color-mix(in srgb, var(--surface) 88%, transparent);
}

.mode-hero-eyebrow.tk-anim-fade-up { animation-delay: 0.02s; }
.mode-hero-title.tk-anim-fade-up { animation-delay: 0.05s; }
.mode-hero-lead.tk-anim-fade-up { animation-delay: 0.08s; }
.mode-hero-card.tk-anim-fade-up.tk-anim-delay-1 { animation-delay: 0.1s; }
.mode-hero-card.tk-anim-fade-up.tk-anim-delay-2 { animation-delay: 0.14s; }
.mode-hero-skip.tk-anim-fade-up { animation-delay: 0.16s; }

.mode-hero-card-icon.tk-anim-float {
  will-change: transform;
}

.wt-cta.tk-anim-pulse:not(:disabled) {
  animation: tk-pulse 2.8s ease-out infinite;
}
.wt-cta:hover:not(:disabled) {
  animation: none;
}

.login-card {
  animation: tk-fade-up 0.32s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* ---------- useAnimations (Lottie) ---------- */
.tk-ua {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  line-height: 0;
  flex-shrink: 0;
  overflow: hidden;
}
.tk-ua svg {
  display: block;
  width: 100% !important;
  height: 100% !important;
}
.tk-ua--xs { width: 18px; height: 18px; }
.tk-ua--sm { width: 22px; height: 22px; }
.tk-ua--md { width: 28px; height: 28px; }
.tk-ua--lg { width: 40px; height: 40px; }
.tk-ua--xl { width: 48px; height: 48px; }

.mode-hero-card-icon .tk-ua,
.footer-security-icon .tk-ua,
.path-switch-icon .tk-ua {
  width: 28px;
  height: 28px;
}
.wt-mode-chip .tk-ua {
  width: 18px;
  height: 18px;
  color: inherit;
}
.wt-upgrade-btn .tk-ua,
.wt-top-tab .tk-ua,
.wt-add-btn .tk-ua,
.wt-am-upgrade .tk-ua,
.wt-upsell .tk-ua {
  width: 1.15em;
  height: 1.15em;
}
.modal .tk-ua-banner {
  display: flex;
  justify-content: center;
  margin: 0 0 12px;
}
.modal .tk-ua-banner .tk-ua {
  width: 64px;
  height: 64px;
}
.footer-security-chips li .tk-ua {
  width: 16px;
  height: 16px;
}


/* ——— Team Admin Dashboard + Onboarding (Phase 4) ——— */
.td-page {
  min-height: 100dvh;
  margin: 0;
  background:
    radial-gradient(ellipse 80% 50% at 10% -10%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 55%),
    radial-gradient(ellipse 60% 40% at 90% 0%, color-mix(in srgb, var(--lime) 10%, transparent), transparent 50%),
    var(--bg);
  color: var(--text);
  font-family: var(--font-body);
}
.td-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px clamp(16px, 4vw, 40px);
  border-bottom: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--surface) 72%, transparent);
  backdrop-filter: blur(14px);
}
.td-brand img { height: 28px; width: auto; display: block; }
.td-topbar-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.td-main {
  width: min(1100px, 100%);
  margin: 0 auto;
  padding: 28px clamp(16px, 4vw, 40px) 64px;
}
.td-hero { margin-bottom: 28px; }
.td-eyebrow {
  margin: 0 0 6px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent-bright);
  font-family: var(--font-mono);
}
.td-hero h1 {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 3vw, 2.1rem);
}
.td-lead { margin: 0; color: var(--text-dim); max-width: 52ch; }
.td-side-btn--ghost.is-loading {
  opacity: 0.7;
  pointer-events: none;
}
.td-side-btn--ghost.is-loading i {
  animation: td-spin 0.7s linear infinite;
}
.td-loading {
  display: none !important;
}
.td-empty {
  display: grid;
  place-items: center;
  gap: 12px;
  min-height: min(52vh, 420px);
  padding: 48px 20px;
  text-align: center;
  border-radius: var(--radius-lg, 20px);
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  border: 1px solid var(--border-soft, var(--glass-border));
}
.td-loading-brand {
  gap: 22px;
}
.td-loading .tk-loader-bar span {
  transform-origin: left center;
  animation: td-brand-load 1.15s ease-in-out infinite alternate;
}
@keyframes td-brand-load {
  from { transform: scaleX(0.18); }
  to { transform: scaleX(1); }
}
.td-loading[hidden], .td-empty[hidden], .td-grid[hidden] { display: none !important; }
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.td-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.td-card {
  padding: 22px;
  border-radius: var(--radius-lg, 20px);
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  border: 1px solid var(--border-soft, var(--glass-border));
  box-shadow: var(--shadow-md, none);
}
.td-card--wide { grid-column: 1 / -1; }
.td-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.td-kicker {
  margin: 0 0 4px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text-dim);
  font-family: var(--font-body);
}
.td-card h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.25rem;
}
.td-chip {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent-bright);
}
.td-label {
  display: block;
  margin-bottom: 6px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-dim);
}
.td-code-block { margin-bottom: 14px; }
.td-code {
  display: block;
  font-family: var(--font-mono);
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--bg);
  border: 1px solid var(--border-soft, var(--glass-border));
  color: var(--text);
  word-break: break-all;
}
.td-code.is-revealed {
  color: var(--lime);
  border-color: color-mix(in srgb, var(--lime) 40%, transparent);
}
.td-timer {
  margin: 8px 0 0;
  font-size: 0.82rem;
  color: var(--text-dim);
}
.td-actions-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.td-divider {
  border: 0;
  border-top: 1px solid var(--border-soft, var(--glass-border));
  margin: 22px 0;
}
.td-subhead {
  margin: 0 0 12px;
  font-size: 1rem;
  font-family: var(--font-display);
}
.td-form { display: grid; gap: 12px; }
.td-field input {
  width: 100%;
  box-sizing: border-box;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: var(--bg);
  color: var(--text);
  font: inherit;
}
.td-seats-big {
  margin: 0 0 12px;
  font-family: var(--font-display);
  font-size: 1.55rem;
  font-weight: 700;
}
.td-seats-bar {
  height: 10px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text) 10%, transparent);
  overflow: hidden;
}
.td-seats-fill {
  display: block;
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--accent), var(--accent-bright));
  transition: width 0.35s ease;
}
.td-muted { margin: 10px 0 0; font-size: 0.85rem; color: var(--text-dim); }
.td-table-wrap { overflow-x: auto; }
.td-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}
.td-table th,
.td-table td {
  text-align: left;
  padding: 12px 10px;
  border-bottom: 1px solid var(--border-soft, var(--glass-border));
}
.td-table th {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0.01em;
  color: var(--text-dim);
  font-family: var(--font-body);
}
.td-status {
  display: inline-flex;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
}
.td-status.is-active {
  background: color-mix(in srgb, var(--lime) 18%, transparent);
  color: var(--lime);
}
.td-status.is-revoked {
  background: color-mix(in srgb, var(--text) 12%, transparent);
  color: var(--text-dim);
}
.td-pill {
  display: inline-flex;
  margin-left: 6px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 700;
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--accent-bright);
  vertical-align: middle;
}
.td-revoke-btn { font-size: 0.82rem; }
.td-forgot-status {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0 0 18px;
  padding: 12px 14px;
  border-radius: 14px;
  font-size: 0.88rem;
  line-height: 1.4;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--surface) 88%, var(--accent) 12%);
  color: var(--text);
}
.td-forgot-status[hidden] { display: none !important; }
.td-forgot-status-icon {
  margin-top: 2px;
  color: var(--accent-bright, var(--accent));
  font-size: 1rem;
}
.td-forgot-status-body { min-width: 0; flex: 1; }
.td-forgot-status-title {
  margin: 0;
  font-weight: 650;
  font-size: 0.9rem;
}
.td-forgot-status-hint {
  margin: 4px 0 0;
  color: var(--text-dim);
  font-size: 0.78rem;
  line-height: 1.35;
}
.td-forgot-status.is-success {
  border-color: color-mix(in srgb, var(--lime) 40%, transparent);
  background: color-mix(in srgb, var(--lime) 12%, transparent);
}
.td-forgot-status.is-success .td-forgot-status-icon { color: var(--lime); }
.td-forgot-status.is-error {
  border-color: color-mix(in srgb, #ff5c5c 40%, transparent);
  background: color-mix(in srgb, #ff5c5c 12%, transparent);
}
.td-forgot-status.is-error .td-forgot-status-icon { color: #ff7a7a; }
.td-forgot-status.is-info {
  border-color: color-mix(in srgb, var(--accent) 35%, transparent);
}
.td-forgot-modal {
  width: min(420px, 100%);
  padding: 28px 24px 22px;
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 40%),
    var(--surface);
}
.td-forgot-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 16px;
  padding-right: 28px;
}
.td-forgot-icon {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  display: inline-grid;
  place-items: center;
  border-radius: 14px;
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--accent-bright, var(--accent));
  font-size: 1.05rem;
}
.td-forgot-modal .team-onboard-lead {
  margin: 4px 0 0;
  font-size: 0.88rem;
}
.td-forgot-form {
  gap: 14px;
}
.td-forgot-form .td-field input {
  width: 100%;
  box-sizing: border-box;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 88%, var(--surface));
  color: var(--text);
  font: inherit;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.td-forgot-form .td-field input:focus {
  outline: none;
  border-color: color-mix(in srgb, var(--accent) 55%, transparent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}
.td-forgot-otp-input {
  font-family: var(--font-mono) !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.28em !important;
  text-align: center;
}
.td-forgot-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 46px;
  border-radius: 14px;
  font-weight: 700;
}
.td-forgot-resend {
  display: block;
  width: 100%;
  text-align: center;
  margin-top: 2px;
  padding: 6px 0 2px;
}
.td-forgot-error-actions {
  display: grid;
  gap: 10px;
}
.td-forgot-form[hidden],
.td-forgot-error-actions[hidden],
#tdForgotRetryRow[hidden],
#tdForgotStepReset[hidden] {
  display: none !important;
}
.td-field-hint {
  display: block;
  margin-top: 6px;
  font-size: 0.78rem;
  color: var(--text-dim);
}
.td-member-code {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.02em;
  color: var(--accent-bright, var(--accent));
}
.td-code-cell {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.td-code--invite {
  display: block;
  margin: 0;
  padding: 14px 16px;
  text-align: center;
  font-size: 1.02rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  word-break: break-all;
  color: var(--text);
  border-color: var(--border-soft, var(--glass-border));
  background: var(--bg);
}
.td-code--invite.is-revealed {
  color: var(--text);
  border-color: color-mix(in srgb, var(--accent) 28%, var(--border-soft, var(--glass-border)));
}
.td-modal-overlay {
  background: color-mix(in srgb, var(--bg) 72%, #000 28%);
  backdrop-filter: blur(10px);
}
.td-modal {
  width: min(420px, 100%);
  padding: 28px 26px 24px;
  border-radius: 16px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  box-shadow:
    0 24px 48px -28px rgba(0, 0, 0, 0.55),
    0 8px 20px -12px rgba(0, 0, 0, 0.35);
}
.td-modal-eyebrow {
  margin: 0 0 6px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-dim);
  letter-spacing: 0.01em;
}
.td-modal h2 {
  margin: 0 0 8px;
  padding-right: 36px;
  font-family: var(--font-display);
  font-size: 1.28rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
.td-modal-lead {
  margin: 0 0 20px;
  max-width: 36ch;
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--text-dim);
}
.td-modal-form {
  display: grid;
  gap: 10px;
}
.td-modal-form .td-field input {
  width: 100%;
  box-sizing: border-box;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 0.95rem;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.td-modal-form .td-field input:focus {
  outline: none;
  border-color: color-mix(in srgb, var(--accent) 55%, transparent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}
.td-modal-form .td-field-hint {
  margin: -2px 0 4px;
}
.td-modal-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 8px;
  flex-wrap: wrap;
}
.td-modal-actions .primary-btn {
  margin-left: auto;
  min-height: 42px;
  padding: 10px 18px;
  border-radius: 12px;
  font-weight: 600;
}
.td-modal-busy {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 28px 12px 18px;
  text-align: center;
}
.td-modal-busy[hidden] { display: none !important; }
.td-spinner {
  width: 28px;
  height: 28px;
  margin-bottom: 6px;
  border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--accent) 22%, transparent);
  border-top-color: var(--accent);
  animation: td-spin 0.7s linear infinite;
}
@keyframes td-spin {
  to { transform: rotate(360deg); }
}
.td-modal-busy-title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 650;
  color: var(--text);
}
.td-modal-busy-text {
  margin: 0;
  font-size: 0.84rem;
  color: var(--text-dim);
  line-height: 1.4;
}
.td-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
}
.td-seats-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: -4px 0 16px;
}
.td-seats-toolbar-hint {
  margin: 0;
  font-size: 0.9rem;
}
.td-seats-link-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 7px 12px;
  border-radius: 10px;
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border-soft, var(--glass-border)));
  background: color-mix(in srgb, var(--accent) 10%, transparent);
  color: var(--accent-bright, var(--accent));
  font: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.td-seats-link-btn i {
  font-size: 0.75rem;
}
.td-seats-link-btn:hover:not(:disabled) {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  border-color: color-mix(in srgb, var(--accent) 55%, transparent);
}
.td-seats-link-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.td-billing-grid {
  display: grid;
  gap: 18px;
}
.td-billing-seats {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 1.6rem;
  font-weight: 650;
  letter-spacing: -0.02em;
}
.td-seats-picker {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin: 4px 0 16px;
  padding: 6px;
  border-radius: 14px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: var(--bg);
}
.td-seats-step {
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--text);
  font-size: 1.2rem;
  font-weight: 700;
  cursor: pointer;
}
.td-seats-step:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.td-seats-count {
  min-width: 2.5rem;
  text-align: center;
  font-family: var(--font-display);
  font-size: 1.45rem;
  font-weight: 700;
}
.td-seats-quote {
  margin-bottom: 8px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--surface) 88%, var(--bg));
}
.td-seats-quote-amount {
  margin: 0 0 4px;
  font-size: 1.2rem;
  font-weight: 650;
  color: var(--text);
}
.td-invite-code-box {
  display: grid;
  gap: 8px;
  margin: 0 0 18px;
  padding: 14px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--bg) 80%, var(--surface));
  border: 1px solid var(--border-soft, var(--glass-border));
}
.td-invite-code-label {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--text-dim);
}
.td-cooldown {
  display: inline-block;
  font-size: 0.75rem;
  color: var(--text-dim);
  max-width: 16ch;
}
.td-actions-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.td-status.is-suspended {
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent-bright, var(--accent));
}

@media (max-width: 800px) {
  .td-grid { grid-template-columns: 1fr; }
  .td-card--wide { grid-column: auto; }
}

/* Onboarding équipe (post-paiement PREMIUM) */
.team-onboard-overlay {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: grid;
  place-items: center;
  padding: 20px;
  background: color-mix(in srgb, #000 55%, transparent);
  backdrop-filter: blur(8px);
}
.team-onboard-overlay[hidden] { display: none !important; }
.team-onboard-modal {
  position: relative;
  width: min(440px, 100%);
  padding: 26px 24px;
  border-radius: var(--radius-lg, 20px);
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  box-shadow: var(--shadow-lg);
  color: var(--text);
}
.td-modal-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border-soft, var(--glass-border));
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 88%, var(--text) 6%);
  color: var(--text);
  cursor: pointer;
  z-index: 2;
}
.td-modal-close:hover {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--accent-bright, var(--accent));
}
.team-onboard-modal h2 {
  margin: 0 0 8px;
  padding-right: 40px;
  font-family: var(--font-display);
  font-size: 1.35rem;
}
.team-onboard-modal .team-onboard-lead {
  margin: 0 0 18px;
  color: var(--text-dim);
  font-size: 0.92rem;
  line-height: 1.45;
}
.team-onboard-form { display: grid; gap: 14px; }
.team-onboard-form label span {
  display: block;
  margin-bottom: 6px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-dim);
}
.team-onboard-form input {
  width: 100%;
  box-sizing: border-box;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: var(--bg);
  color: var(--text);
  font: inherit;
}
.team-onboard-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
}
.team-onboard-success[hidden] { display: none !important; }
.team-onboard-success {
  text-align: center;
  display: grid;
  gap: 12px;
  place-items: center;
}
.team-onboard-success .team-onboard-ok {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: color-mix(in srgb, var(--lime) 22%, transparent);
  color: var(--lime);
  font-size: 1.4rem;
}

/* ——— Team Admin Suite (enterprise) ——— */
.td-page--suite {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  min-height: 100dvh;
}
.td-sidebar {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 20px 16px;
  border-right: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  backdrop-filter: blur(16px);
}
.td-sidebar-label {
  margin: 12px 8px 6px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--text-dim);
  font-family: var(--font-body);
}
.td-nav { display: grid; gap: 4px; }
.td-nav-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 11px 12px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--text-dim);
  font: inherit;
  font-weight: 600;
  font-size: 0.9rem;
  text-align: left;
  cursor: pointer;
}
.td-nav-btn i { width: 1.1em; color: var(--accent-bright); opacity: 0.85; }
.td-nav-btn:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--text); }
.td-nav-btn.is-active {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--text);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent);
}
.td-sidebar-foot {
  margin-top: auto;
  display: grid;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--border-soft, var(--glass-border));
}
.td-shell { min-width: 0; }
.td-side-btn {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
  padding: 11px 14px;
  border-radius: 12px;
  font: inherit;
  font-size: 0.88rem;
  font-weight: 650;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.td-side-btn i {
  width: 1.1em;
  text-align: center;
  opacity: 0.95;
}
.td-side-btn--cloud {
  border: 1px solid color-mix(in srgb, var(--accent) 42%, transparent);
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent-bright, var(--accent));
}
.td-side-btn--cloud:hover {
  background: color-mix(in srgb, var(--accent) 26%, transparent);
  border-color: var(--accent);
  color: var(--text);
  transform: translateY(-1px);
}
.td-side-btn--ghost {
  border: 1px solid var(--border-soft, var(--glass-border));
  background: transparent;
  color: var(--text-dim);
}
.td-side-btn--ghost:hover {
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
  color: var(--text);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}
.td-topbar--suite {
  border: 0;
  background: transparent;
  padding: 28px clamp(16px, 3vw, 36px) 12px;
  align-items: flex-end;
  gap: 20px;
}
.td-hero-copy {
  max-width: 40rem;
}
.td-topbar--suite .td-eyebrow {
  margin: 0 0 8px;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--text-dim);
}
.td-topbar--suite h1 {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: clamp(1.55rem, 2.4vw, 1.95rem);
  font-weight: 650;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--text);
}
.td-topbar--suite .td-lead {
  margin: 0;
  max-width: 38ch;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--text-dim);
  font-weight: 400;
}
.td-top-brand { display: flex; align-items: center; gap: 10px; }
.td-top-brand img {
  width: 36px;
  height: 36px;
  object-fit: contain;
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  padding: 4px;
}
.td-chip {
  display: inline-flex;
  align-items: center;
  padding: 7px 12px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 8%);
  border: 1px solid var(--border-soft, var(--glass-border));
  color: var(--text);
}
.td-main--suite { padding-top: 10px; }
.td-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 22px;
}
.td-stat-card {
  padding: 16px 16px 14px;
  border-radius: 14px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
  box-shadow: none;
}
.td-stat-label {
  margin: 0;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-dim);
  letter-spacing: 0;
  text-transform: none;
  font-family: var(--font-body);
}
.td-stat-value {
  margin: 8px 0 10px;
  font-family: var(--font-body);
  font-size: 1.35rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.td-stat-card .td-muted {
  margin: 8px 0 0;
  font-size: 0.8rem;
  line-height: 1.35;
}
.td-seats-bar {
  height: 4px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text) 10%, transparent);
  overflow: hidden;
}
.td-seats-fill {
  display: block;
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: var(--accent);
}
.td-activity {
  padding: 22px 22px 8px;
  border-radius: 16px;
  background: var(--surface);
  border: 1px solid var(--border-soft, var(--glass-border));
}
.td-activity-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border-soft, var(--glass-border));
}
.td-activity-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 650;
  letter-spacing: -0.015em;
}
.td-activity-lead {
  margin: 4px 0 0;
  color: var(--text-dim);
  font-size: 0.88rem;
  line-height: 1.4;
}
.td-text-link {
  appearance: none;
  border: 0;
  background: none;
  padding: 0;
  color: var(--accent-bright, var(--accent));
  font: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}
.td-text-link:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.td-activity-table {
  margin: 0 -6px;
}
.td-activity .td-table {
  width: 100%;
  border-collapse: collapse;
}
.td-activity .td-table th {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--text-dim);
  padding: 10px 12px;
  border-bottom: 1px solid var(--border-soft, var(--glass-border));
  background: transparent;
}
.td-activity .td-table td {
  padding: 14px 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--border-soft, var(--glass-border)) 70%, transparent);
  font-size: 0.9rem;
  vertical-align: middle;
}
.td-activity .td-table tbody tr:last-child td {
  border-bottom: 0;
}
.td-empty-row {
  padding: 0 !important;
}
.td-empty-inline {
  display: grid;
  gap: 4px;
  justify-items: start;
  padding: 28px 12px 32px;
  color: var(--text-dim);
}
.td-empty-inline strong {
  color: var(--text);
  font-weight: 650;
  font-size: 0.95rem;
}
.td-empty-inline span {
  font-size: 0.86rem;
  line-height: 1.4;
}
.td-panel[hidden] { display: none !important; }
.td-settings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
}
.td-card--settings {
  padding: 26px 24px;
  background:
    linear-gradient(165deg, color-mix(in srgb, var(--accent) 8%, transparent), transparent 42%),
    color-mix(in srgb, var(--surface) 94%, transparent);
}
.td-card-desc {
  margin: 8px 0 0;
  max-width: 42ch;
  color: var(--text-dim);
  font-size: 0.88rem;
  line-height: 1.45;
}
.td-form--settings {
  gap: 16px;
  margin-top: 4px;
}
.td-form--settings .td-field input,
.td-form--settings .td-inline-input input {
  width: 100%;
  box-sizing: border-box;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 88%, var(--surface));
  color: var(--text);
  font: inherit;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.td-form--settings .td-field input:focus,
.td-form--settings .td-inline-input input:focus {
  outline: none;
  border-color: color-mix(in srgb, var(--accent) 55%, transparent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}
.td-logo-block { display: grid; gap: 8px; }
.td-logo-row {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 70%, transparent);
}
.td-logo-preview {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.td-logo-preview.is-visible { display: flex; }
.td-logo-preview img {
  width: 72px;
  height: 72px;
  object-fit: contain;
  padding: 10px;
  border-radius: 16px;
  border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
  background:
    radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 55%),
    #0a0a0a;
}
.td-logo-preview.is-default img {
  background:
    radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--accent) 28%, transparent), transparent 55%),
    #000;
}
.td-logo-actions {
  display: grid;
  gap: 8px;
  min-width: 0;
}
.td-file-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: fit-content;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent-bright, var(--accent));
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.td-file-btn:hover {
  background: color-mix(in srgb, var(--accent) 22%, transparent);
  border-color: var(--accent);
}
.td-text-btn,
.td-link-btn {
  appearance: none;
  border: 0;
  background: none;
  padding: 0;
  margin: 0;
  color: var(--accent-bright, var(--accent));
  font: inherit;
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  width: fit-content;
}
.td-text-btn:hover,
.td-link-btn:hover {
  color: var(--lime);
}
.td-switch--card {
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 55%, transparent);
  cursor: pointer;
}
.td-switch--card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.td-switch-ui {
  width: 42px;
  height: 24px;
  flex-shrink: 0;
  margin-top: 2px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text) 18%, transparent);
  position: relative;
  transition: background 0.18s ease;
}
.td-switch-ui::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  transition: transform 0.18s ease;
}
.td-switch--card input:checked + .td-switch-ui {
  background: var(--accent);
}
.td-switch--card input:checked + .td-switch-ui::after {
  transform: translateX(18px);
}
.td-switch-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.td-switch-copy strong {
  font-size: 0.9rem;
  font-weight: 650;
}
.td-switch-copy small {
  color: var(--text-dim);
  font-size: 0.78rem;
  line-height: 1.35;
}
.td-field--inline .td-inline-input {
  display: flex;
  align-items: center;
  gap: 0;
  max-width: 180px;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: color-mix(in srgb, var(--bg) 88%, var(--surface));
  overflow: hidden;
}
.td-field--inline .td-inline-input input {
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  max-width: 90px;
}
.td-inline-suffix {
  padding: 0 12px 0 0;
  color: var(--text-dim);
  font-size: 0.84rem;
  font-weight: 600;
}
.td-btn-save {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 46px;
  border-radius: 14px;
  font-weight: 700;
}
.td-pwd-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 4px;
}
.td-pwd-footer .td-btn-save {
  width: auto;
  min-width: 180px;
  flex: 1 1 auto;
}
.td-pwd-footer .td-link-btn {
  flex: 0 0 auto;
  white-space: nowrap;
}
.td-switch {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.9rem;
  color: var(--text);
}
.td-logo-preview img {
  width: 64px;
  height: 64px;
  object-fit: contain;
  border-radius: 12px;
  border: 1px solid var(--border-soft, var(--glass-border));
  background: var(--bg);
}
.td-status.is-suspended {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--accent-bright);
}
.td-actions-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
@media (max-width: 1100px) {
  .td-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .td-page--suite { grid-template-columns: 1fr; }
  .td-sidebar {
    position: relative;
    height: auto;
    border-right: 0;
    border-bottom: 1px solid var(--border-soft, var(--glass-border));
  }
  .td-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .td-settings-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .td-stats { grid-template-columns: 1fr; }
  .td-nav { grid-template-columns: 1fr; }
}
