/* ApexView — app.css (extrait de index.html) */

/* --- bloc 1 --- */
:root {
  /* ─────────────────────────────────────────────────
     APEXVIEW DESIGN SYSTEM v3.0
     DropTab palette — Flat institutional dark
     ───────────────────────────────────────────────── */

  /* ── COLOR PALETTE: PRIMARY ────────────────────── */
  --color-cyan:       #38bdf8;
  --color-sky:        #38bdf8;
  --color-blue:       #2563eb;
  --color-green:      #34d399;
  --color-red:        #ef4444;
  --color-yellow:     #facc15;
  --color-pink:       #f472b6;
  --color-purple:     #a78bfa;
  --color-orange:     #fb923c;

  /* ── COLOR PALETTE: EXTENDED ──────────────────── */
  --color-cyan-light: #7dd3fc;
  --color-cyan-dark:  #0284c7;
  --color-sky-light:  #7dd3fc;
  --color-sky-dark:   #0284c7;
  --color-blue-light: #6ba3e8;
  --color-blue-dark:  #2d5ab0;
  --color-green-light: #6ee7b7;
  --color-green-dark:  #059669;
  --color-red-light:   #fca5a5;
  --color-red-dark:    #dc2626;
  --color-yellow-light: #fde68a;
  --color-yellow-dark:  #d97706;
  --color-pink-light:   #f9a8d4;
  --color-pink-dark:    #db2777;
  --color-purple-light: #c4b5fd;
  --color-purple-dark:  #7c3aed;
  --color-orange-light: #fdba74;
  --color-orange-dark:  #ea580c;

  /* ── BACKGROUNDS — DropTab palette flat ───────── */
  --bg-primary:       #18181A;   /* fond principal */
  --bg-secondary:     #272729;   /* surface / cards */
  --bg-tertiary:      #303032;   /* élévation / nested / hover */
  --bg-surface:       #272729;
  --bg-surface-alt:   #303032;
  --bg-overlay:       rgba(0, 0, 0, 0.7);
  --bg-glass:         rgba(156, 163, 175, 0.05);
  --bg-glass-dark:    rgba(0, 0, 0, 0.3);

  /* ── TEXT — DropTab grayscale hierarchy ────────── */
  --text-primary:     #f3f4f6;   /* blanc/gris très clair — texte principal */
  --text-secondary:   #d1d5db;   /* gris clair — noms/valeurs */
  --text-tertiary:    #b0b3bc;   /* gris moyen — labels/descriptions */
  --text-muted:       #9ca3af;   /* gris lisible — sous-textes */

  /* ── SEMANTIC COLORS — seulement pour data ───────── */
  --value-positive:   #34d399;   /* vert — pour +% et trends up */
  --value-negative:   #ef4444;   /* rouge — pour -% et trends down */
  --value-accent:     #2563eb;   /* bleu — pour prix/nombres critiques */

  /* ── BORDERS — hairline ───────────────────────── */
  --border-subtle:    rgba(255, 255, 255, 0.06);
  --border-default:   rgba(255, 255, 255, 0.08);
  --border-strong:    rgba(255, 255, 255, 0.14);
  --border-focus:     #2563eb;
  --divider:          rgba(255, 255, 255, 0.06);

  /* ── TEXT & TYPOGRAPHY ────────────────────────── */
  --text-primary:     #fafafa;
  --text-secondary:   #c4c4ce;
  --text-muted:       #a1a1ab;
  --text-soft:        #8a8a96;

  /* ── SHADOWS ──────────────────────────────────── */
  --shadow-xs:        0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-sm:        0 4px 6px -1px rgba(0, 0, 0, 0.2);
  --shadow-md:        0 4px 6px -1px rgba(0, 0, 0, 0.2), 0 2px 4px -1px rgba(0, 0, 0, 0.1);
  --shadow-lg:        0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.15);
  --shadow-xl:        0 10px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
  --shadow-2xl:       0 10px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.2);

  --glow-cyan:        rgba(156, 163, 175, 0.15);
  --glow-cyan-strong: rgba(156, 163, 175, 0.25);
  --glow-blue:        rgba(156, 163, 175, 0.15);
  --glow-blue-strong: rgba(156, 163, 175, 0.25);
  --glow-purple:      rgba(156, 163, 175, 0.15);
  --glow-purple-strong: rgba(156, 163, 175, 0.25);
  --glow-green:       rgba(52, 211, 153, 0.15);
  --glow-green-strong: rgba(52, 211, 153, 0.25);

  /* ── FONTS — Inter uniquement ──────────────────── */
  --font-body:        'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-title:       'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:        'IBM Plex Mono', 'Fira Code', monospace;

  --font-weight-light:   300;
  --font-weight-normal:  400;
  --font-weight-medium:  500;
  --font-weight-semibold: 600;
  --font-weight-bold:    700;
  --font-weight-black:   800;
  --font-weight-heavy:   900;

  /* ── SPACING ──────────────────────────────────── */
  --space-0:          0;
  --space-xs:         0.25rem;
  --space-sm:         0.5rem;
  --space-md:         1rem;
  --space-lg:         1.5rem;
  --space-xl:         2rem;
  --space-2xl:        2.5rem;
  --space-3xl:        3rem;

  /* ── BORDER RADIUS ────────────────────────────── */
  --radius-sm:        0.375rem;
  --radius-md:        0.5rem;
  --radius-lg:        0.5rem;
  --radius-xl:        0.75rem;
  --radius-2xl:       0.75rem;
  --radius-full:      9999px;

  /* ── TRANSITIONS ──────────────────────────────── */
  --transition-fast:  0.1s ease;
  --transition-base:  0.18s ease;
  --transition-smooth: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-slow:  0.4s cubic-bezier(0.4, 0, 0.2, 1);

  /* ── ALIASES ──────────────────────────────────── */
  --bg:               var(--bg-primary);
  --panel:            var(--bg-secondary);
  --card:             var(--bg-glass);
  --border:           var(--border-default);
  --accent:           #2563eb;
  --accent-hover:     #3b73f5;
  --accent2:          #34d399;
  --green:            #34d399;
  --red:              #ef4444;
  --yellow:           #facc15;
  --orange:           #fb923c;
  --pink:             #f472b6;
  --purple:           #a78bfa;
  --blue:             #2563eb;
  --text:             var(--text-primary);
  --muted:            var(--text-muted);
  --soft:             var(--bg-secondary);
  --line:             var(--border-subtle);
  --glow:             var(--glow-cyan);
  --glass-bg:         var(--bg-glass);
  --glass-border:     var(--border-default);
  --radius-card:      var(--radius-xl);
  --shadow-card:      0 1px 3px rgba(0, 0, 0, 0.4);
  --font:             var(--font-body);
  --title:            var(--font-title);
  --transition:       var(--transition-smooth);
  --color-accent-secondary: #2563eb;
  --mono:             var(--font-mono);

  /* ── CHARTS ───────────────────────────────────── */
  --charts-accent:        #2563eb;
  --charts-secondary:     #2563eb;
  --charts-bg-dark:       #18181A;
  --charts-bg-surface:    #272729;
  --charts-border:        rgba(255,255,255,0.08);
  --charts-border-strong: rgba(255,255,255,0.14);
  --charts-text-muted:    #71717a;
  --charts-candle-bull:   #34d399;
  --charts-candle-bear:   #ef4444;
  --charts-grid:          rgba(63, 63, 70, 0.3);
}

/* ── FOCUS GLOBAL — WCAG 2.4.7 ────────────────── */
*:focus { outline: none; }
*:focus-visible {
  outline: 2px solid rgba(56,189,248,.8);
  outline-offset: 2px;
  border-radius: 3px;
}
button:focus-visible,
a:focus-visible,
[role="button"]:focus-visible,
[role="tab"]:focus-visible {
  outline: 2px solid rgba(56,189,248,.8);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(56,189,248,.12);
}
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: none;
  border-color: rgba(56,189,248,.7) !important;
  box-shadow: 0 0 0 3px rgba(56,189,248,.15) !important;
}

/* ── REDUCED MOTION — WCAG 2.3.3 ──────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── SCROLLBAR GLOBAL ──────────────────────────── */
::-webkit-scrollbar { width:4px; height:4px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:#27272a; border-radius:2px; }
::-webkit-scrollbar-thumb:hover { background:#3f3f46; }
* { scrollbar-width:thin; scrollbar-color:#27272a transparent; }

/* ── SELECTION ─────────────────────────────────── */
::selection { background:rgba(37,99,235,.28); color:#fafafa; }

/* ── FLASH VALEURS (price/stat updates) ────────── */
@keyframes flash-up   { 0%{background:rgba(52,211,153,.18);color:#34d399} 100%{background:transparent} }
@keyframes flash-down { 0%{background:rgba(239,68,68,.18);color:#ef4444} 100%{background:transparent} }
.flash-up   { animation:flash-up   0.65s ease-out forwards; border-radius:3px; }
.flash-down { animation:flash-down 0.65s ease-out forwards; border-radius:3px; }

/* ── SVG ICONS STYLES ──────────────────────────── */
/* ── ANT DESIGN ICONS (Dynamic, context-aware) ── */
svg[width][viewBox] {
  display: inline-block;
  vertical-align: middle;
  margin-right: 6px;
  transition: opacity var(--transition), filter var(--transition);
}
svg[width][viewBox]:hover {
  opacity: 0.8;
  filter: drop-shadow(0 0 8px rgba(156, 163, 175, .3));
}

/* ── Legacy icon styles (kept for compatibility) ─ */
svg.icon {
  display: inline-block;
  vertical-align: middle;
  margin-right: 6px;
  transition: var(--transition);
}
svg.icon-home { stroke: var(--accent); }
svg.icon-analytics { stroke: var(--blue); }
svg.icon-globe { stroke: var(--accent); }
svg.icon-trending { stroke: var(--green); }
svg.icon-trading { stroke: var(--purple); }
svg.icon-settings { stroke: var(--orange); }
svg.icon-zap { fill: var(--accent); }
svg.icon-alert { stroke: var(--yellow); }
svg.icon-gem { stroke: var(--pink); }

/* ── Icon responsive sizing ────────────────────── */
@media (max-width: 768px) {
  svg[width][viewBox] { margin-right: 4px; }
  .nav-page-btn svg { width: 32px; height: 32px; }
}
@media (max-width: 480px) {
  svg[width][viewBox] { margin-right: 2px; }
  .nav-page-btn svg { width: 24px; height: 24px; }
}

/* ── EMOJI ICONS COLORED (Temporary) ──────────── */
.icon-emoji {
  display: inline-block;
  filter: drop-shadow(0 0 2px currentColor);
  font-size: 1.1em;
  line-height: 1;
  margin-right: 4px;
}
.icon-cyan { color: var(--accent); text-shadow: 0 0 8px rgba(156, 163, 175, .4); }
.icon-blue { color: var(--blue); text-shadow: 0 0 8px rgba(63,63,70,.4); }
.icon-green { color: var(--green); text-shadow: 0 0 8px rgba(52,211,153,.4); }
.icon-purple { color: var(--purple); text-shadow: 0 0 8px rgba(63,63,70,.4); }
.icon-orange { color: var(--orange); text-shadow: 0 0 8px rgba(249,115,22,.4); }
.icon-yellow { color: var(--yellow); text-shadow: 0 0 8px rgba(234,179,8,.4); }
.icon-pink { color: var(--pink); text-shadow: 0 0 8px rgba(236,72,153,.4); }
.icon-red { color: var(--red); text-shadow: 0 0 8px rgba(63,63,70,.4); }

/* ── CARD (default) ────────────────────────────── */
.card, .form-panel, .table-wrap {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  padding: 1.5rem;
  box-shadow: var(--shadow-md);
  transition: all var(--transition);
}

.card:hover {
  box-shadow: var(--shadow-lg);
}

/* ── STAT CARD ─────────────────────────────────── */
.stat-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-xl);
  padding: 1.5rem;
  box-shadow: var(--shadow-md);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.stat-card-value {
  font-size: 2.25rem;
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1;
}

.stat-card-label {
  font-size: 0.875rem;
  color: var(--text-muted);
  font-weight: 500;
}

.stat-card-change {
  font-size: 0.875rem;
  font-weight: 600;
  margin-top: 0.5rem;
}

.stat-card-change.positive {
  color: var(--color-green);
}

.stat-card-change.negative {
  color: var(--color-red);
}

/* ── CARD VARIANTS (flat DropTab style) ─────────── */
.card-gradient {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-xl);
  padding: 1.5rem;
  box-shadow: var(--shadow-md);
}

.card-cyan   { background: #303032; border-color: rgba(63,63,70,.2); }
.card-pink   { background: #303032; border-color: rgba(63,63,70,.2); }
.card-purple { background: #303032; border-color: rgba(63,63,70,.2); }
.card-orange { background: #303032; border-color: rgba(63,63,70,.2); }
.card-green  { background: #303032; border-color: rgba(63,63,70,.2); }
.card-blue   { background: #303032; border-color: rgba(63,63,70,.2); }
.card-yellow { background: #303032; border-color: rgba(63,63,70,.2); }

/* ── THÈME CLAIR — désactivé, thème sombre uniquement ─── */

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; overflow-x:hidden; max-width:100vw; } /* iOS Safari fix */
body {
  background: var(--bg);
  color:var(--text);
  font-family:var(--font);
  font-size:14px;
  line-height:1.65;
  letter-spacing:.012em;
  overflow-x:hidden;
  max-width:100vw;
  min-height:100vh;
  font-optical-sizing:auto;
  font-kerning:normal;
}
/* Chiffres tabulaires partout — alignement type terminal institutionnel (S26) */
body { font-variant-numeric: tabular-nums; }

/* ── TYPESET — hiérarchie & lisibilité (S28) ── */
/* Reading contexts : leading élevé + mesure confortable sur fond sombre */
[id*="-pane-"] p,
[id*="-pane-"] > div > div,
#conf-drawer-content p,
.lex-detail { line-height:1.72; }

/* Caps tracking — petites étiquettes uppercase */
.section-kicker,
.stat-card .lbl,
.form-group label,
.hms-sym,
.hero-metric-label { letter-spacing:.06em; }

/* Mono pour toutes les valeurs numériques importantes */
.stat-card .val,
.price-val,
.ticker-price { font-variant-numeric: tabular-nums; font-feature-settings:"tnum"; }

@keyframes softFloat {
  0%,100% { transform:translateY(0); }
  50% { transform:translateY(-4px); }
}

@keyframes fadeSlideIn {
  from { opacity:0; transform:translateY(10px); }
  to { opacity:1; transform:translateY(0); }
}

/* body::before ambient glow removed — DropTab flat style */

/* Noise texture */
body::after {
  content:''; position:fixed; inset:0; pointer-events:none; z-index:9999;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
  opacity:.6;
}

/* ── HEADER ─────────────────────────────────── */
header {
  display:flex; align-items:center; justify-content:space-between;
  gap:16px;
  padding:16px 24px;
  border-bottom:1px solid var(--line);
  background:rgba(24,24,26,.94);
  backdrop-filter:blur(18px);
  position:sticky; top:0; z-index:100;
  box-shadow:0 16px 40px rgba(0,0,0,.28);
}
.logo { font-family:var(--title); font-size:1.42rem; letter-spacing:4px; color:#f3f8ff; text-shadow:0 0 24px rgba(156, 163, 175, .12); display:none; }
.logo span { color:var(--accent); }
.status-bar { display:flex; gap:10px; align-items:center; font-size:.75rem; flex-wrap:wrap; justify-content:flex-end; margin-left:auto; }
.dot { width:8px;height:8px;border-radius:50%;background:var(--green);
       box-shadow:0 0 8px var(--green); animation:pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.4} }
.stat-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #111113;
  border: 1px solid rgba(255,255,255,.07);
  border-top-color: rgba(255,255,255,.10);
  padding: 5px 12px;
  border-radius: 6px;
  font-size: .65rem;
  box-shadow: 0 1px 0 rgba(255,255,255,.03) inset;
  transition: border-color var(--transition-base);
  white-space: nowrap;
}
.stat-pill:hover { border-color: rgba(255,255,255,.14); }
/* label muted / valeur blanche */
.stat-pill .sp-sym { color: #3f3f46; font-weight: 600; font-size: .58rem; letter-spacing: .08em; text-transform: uppercase; }
.stat-pill b, .stat-pill .sp-val { color: #fafafa; font-weight: 700; font-variant-numeric: tabular-nums; }
.stat-pill .sp-chg { font-weight: 600; font-size: .6rem; }
.stat-pill .sp-chg.up   { color: #34d399; }
.stat-pill .sp-chg.down { color: #ef4444; }

/* ── NAV ─────────────────────────────────────── */
nav { display:flex; gap:8px; padding:12px 24px 14px; background:rgba(12,12,13,.78);
      border-bottom:1px solid var(--line); overflow-x:auto; backdrop-filter:blur(14px); }
/* ── TAB NAVIGATION ────────────────────────────── */
.tab-btn, .nav-tab, .tab-button, .nav-btn {
  position: relative;
  padding: 1rem 1.5rem;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 1rem;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transition);
  white-space: nowrap;
}

.tab-btn:hover, .nav-tab:hover, .tab-button:hover, .nav-btn:hover {
  color: var(--text-primary);
}

.tab-btn.active, .nav-tab.active, .tab-button.active, .nav-btn.active {
  color: var(--color-cyan);
}

.tab-btn::after, .nav-tab::after, .tab-button::after, .nav-btn::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 2px;
  background: var(--accent);
  border-radius: 2px;
  transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.tab-btn.active::after, .nav-tab.active::after, .tab-button.active::after, .nav-btn.active::after {
  width: 70%;
}

/* ── SIDEBAR BUTTONS ───────────────────────────── */
.sidebar-btn, .nav-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border: none;
  border-radius: var(--radius-lg);
  background: transparent;
  color: var(--text-muted);
  font-size: 1rem;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transition);
  text-decoration: none;
}

.sidebar-btn:hover, .nav-link:hover {
  background: rgba(255, 255, 255, 0.05);
  color: var(--text-primary);
}

.sidebar-btn.active, .nav-link.active {
  background: var(--bg-tertiary);
  color: var(--color-cyan);
}

/* ── TABS ────────────────────────────────────── */
@keyframes tabFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.tab {
  display: none;
  padding: 22px clamp(14px, 2vw, 28px) 30px;
  max-width: 1400px;
  margin: 0 auto;
  width: 100%;
  box-sizing: border-box;
}
.tab.active { display: block; animation: tabFadeIn 0.22s cubic-bezier(0.4,0,0.2,1) forwards; }

/* ── GRID STATS ──────────────────────────────── */
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
              gap:12px; margin-bottom:20px; }
.stat-card {
  background: #111113;
  border: 1px solid rgba(255,255,255,0.06);
  border-top: 1px solid rgba(255,255,255,0.10);
  border-radius: 10px;
  padding: 20px 22px 18px;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 16px 32px rgba(0,0,0,0.4);
  position: relative;
  overflow: hidden;
  transition: border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);
  display: flex;
  flex-direction: column;
}
.stat-card:hover {
  border-color: rgba(255,255,255,0.12);
  box-shadow: 0 1px 0 rgba(255,255,255,0.06) inset, 0 20px 40px rgba(0,0,0,0.5);
  transform: translateY(-1px);
}
/* Kicker — label minuscule en haut */
.stat-card .kicker,
.stat-kicker {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #52525b;
  margin-bottom: 10px;
  display: block;
}
/* Valeur principale — large + tight */
.stat-card .val {
  font-family: var(--title);
  font-size: 2.8rem;
  font-weight: 800;
  letter-spacing: -2px;
  color: var(--text-primary);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
/* Label — sous la valeur */
.stat-card .lbl {
  font-size: 11px;
  color: #52525b;
  margin-top: 10px;
  letter-spacing: .04em;
  font-weight: 400;
}
/* Variation colorée */
.stat-card .chg {
  font-size: 12px;
  font-weight: 600;
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.stat-card .chg.up   { color: var(--color-green); }
.stat-card .chg.down { color: var(--color-red); }
/* Divider hairline */
.stat-card .divider {
  height: 1px;
  background: rgba(255,255,255,0.05);
  margin: 12px 0;
}
/* Données secondaires sous divider */
.stat-card .sub-data {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  color: #52525b;
}
.stat-card .sub-data b { color: #a1a1aa; font-weight: 500; }
/* Couleurs sémantiques */
.stat-card.green .val { color: var(--color-green); }
.stat-card.red   .val { color: var(--color-red); }
.stat-card.blue  .val { color: var(--accent); }
.stat-card.yellow .val { color: var(--color-yellow); }

/* ── TABLE — DropTab style ───────────────────── */
table thead { background: #18181A; position:sticky; top:0; z-index:2; }
table th {
  padding: 10px 16px;
  text-align: left;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #3f3f46;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  background: #0d0d0f;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  transition: color var(--transition-fast);
}
table th:hover { color: #71717a; }
table td {
  padding: 14px 16px;
  font-size: .83rem;
  color: #a1a1aa;
  border-bottom: 1px solid rgba(39,39,42,.8);
  white-space: nowrap;
  vertical-align: middle;
}
table tbody tr { transition: background var(--transition-fast); }
table tbody tr:nth-child(odd) td  { background: rgba(255,255,255,.015); }
table tbody tr:nth-child(even) td { background: transparent; }
table tbody tr:hover td {
  background: rgba(37,99,235,.08) !important;
  color: #fafafa !important;
  transition: background var(--transition-fast), color var(--transition-fast);
}
table tbody tr:hover td:first-child { border-left: 2px solid rgba(37,99,235,.5); }

/* Market table specifics */
#market-table td:nth-child(3),
#perp-table td:nth-child(3) { color: #f4f4f5; font-weight: 600; }
#market-table td:nth-child(2) { color: #f4f4f5; font-weight: 600; }

table td.muted { color: #52525b; }
table td.numeric { text-align:right; font-family:var(--font-mono); }
table td.center { text-align:center; }

/* ── TABLE WRAPPER ─────────────────────────── */
.table-wrap { background: var(--bg-surface);
              border: 1px solid var(--border-subtle);
              border-radius: var(--radius-xl);
              overflow: hidden;
              box-shadow: var(--shadow-md);
              transition: all var(--transition); }
.table-wrap:hover { border-color: #52525b;
                    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.3); }
.table-toolbar { display:flex; align-items:center; gap:12px; padding:12px 16px;
                 border-bottom:1px solid var(--border); flex-wrap:wrap; }
.search-box { background:#3f3f46; border:1px solid #52525b; color:var(--text);
              font-family:var(--font); padding:9px 12px; border-radius:8px; font-size:.8rem;
              outline:none; width:180px; transition:border-color 0.2s ease-in-out; }
.search-box:hover { border-color:#a1a1aa; }
.search-box:focus { border-color:#d1d5db; box-shadow:0 0 0 2px rgba(63,63,70,.5); }
.table-scroll { overflow-x:auto; max-height:65vh; scrollbar-width:thin; scrollbar-color:#52525b transparent; }
.table-scroll::-webkit-scrollbar { height:8px; width:8px; }
.table-scroll::-webkit-scrollbar-thumb { background:#52525b; border-radius:999px; border:2px solid transparent; background-clip:padding-box; }
.table-scroll::-webkit-scrollbar-track { background:transparent; }
table { width:100%; border-collapse:collapse; font-size:.82rem; font-family:var(--font); }

/* ── BACKWARD COMPATIBILITY (old class names) ──– */
.sym { font-weight:800; color:var(--text); }
.green { color:var(--green); }
.red   { color:var(--red); }
.yellow{ color:var(--yellow); }
.muted { color:var(--muted); }

/* ── SCORE BAR ───────────────────────────────── */
.score-wrap { display:flex; align-items:center; gap:8px; justify-content:flex-end; }
.score-bar { width:60px; height:6px; background:var(--panel); border-radius:3px; overflow:hidden; }
.score-fill { height:100%; border-radius:3px; transition:width .3s; }
.score-buy  .score-fill { background:var(--green); }
.score-sell .score-fill { background:var(--red); }
.score-neutral .score-fill { background:var(--yellow); }

/* ── BADGE (default) ───────────────────────────────── */
.badge, .tag {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border-radius: var(--radius-md);
  font-size: 0.75rem;
  font-weight: 600;
  background: rgba(156, 163, 175, 0.2);
  color: var(--color-cyan);
  white-space: nowrap;
}

/* ── BADGE VARIANTS ────────────────────────────── */
.badge-cyan, .tag-cyan {
  background: rgba(156, 163, 175, 0.2);
  color: var(--color-cyan);
}

.badge-green, .tag-green {
  background: rgba(16, 185, 129, 0.2);
  color: var(--color-green);
}

.badge-red, .tag-red {
  background: rgba(239, 68, 68, 0.2);
  color: var(--color-red);
}

.badge-yellow, .tag-yellow {
  background: rgba(234, 179, 8, 0.2);
  color: var(--color-yellow);
}

.badge-purple, .tag-purple {
  background: rgba(156, 163, 175, 0.2);
  color: var(--color-purple);
}

.badge-pink, .tag-pink {
  background: rgba(236, 72, 153, 0.2);
  color: var(--color-pink);
}

.badge-orange, .tag-orange {
  background: rgba(249, 115, 22, 0.2);
  color: var(--color-orange);
}

/* ── DIRECTION BADGE (specific to trading) ────── */
.dir-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.375rem 0.75rem;
  border-radius: var(--radius-md);
  font-size: 0.75rem;
  font-weight: 700;
}

.dir-badge.long {
  background: rgba(16, 185, 129, 0.2);
  color: var(--color-green);
}

.dir-badge.short {
  background: rgba(239, 68, 68, 0.2);
  color: var(--color-red);
}

/* ── BACKWARD COMPATIBILITY (old class names) ──── */
.dir-buy {
  background: rgba(16, 185, 129, 0.2);
  color: var(--color-green);
}

.dir-sell {
  background: rgba(239, 68, 68, 0.2);
  color: var(--color-red);
}

.dir-neutral {
  background: rgba(234, 179, 8, 0.2);
  color: var(--color-yellow);
}

/* ── HEATMAP ─────────────────────────────────── */
.heatmap { display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:4px; }
.heat-cell { padding:10px 6px; border-radius:6px; text-align:center; cursor:pointer;
             transition:.2s; font-size:.7rem; border:1px solid transparent; }
.heat-cell:hover { transform:scale(1.05);  z-index:1; position:relative; }
.heat-sym { font-weight:700; font-size:.75rem; }
.heat-chg { font-size:.65rem; margin-top:2px; }
.heat-add-btn { display:none;position:absolute;top:3px;right:3px;width:16px;height:16px;font-size:13px;line-height:1;padding:0;background:rgba(63,63,70,.18);color:#d1d5db;border:1px solid rgba(63,63,70,.4);border-radius:3px;cursor:pointer;align-items:center;justify-content:center; }
.heat-cell:hover .heat-add-btn { display:flex; }
.heat-add-btn:hover { background:rgba(63,63,70,.35) !important; }

/* ── LIQUIDATION HEATMAP CANVAS ──────────────── */
#liq-heatmap-chart { position:relative; }
#liq-heatmap-chart canvas { display:block;width:100%;cursor:crosshair; }
.liq-canvas-tooltip {
  position:absolute;pointer-events:none;z-index:99;
  background:rgba(8,4,18,0.95);border:1px solid rgba(63,63,70,0.45);
  border-radius:6px;padding:8px 12px;font-size:.72rem;color:#fff;
  white-space:nowrap;display:none;
  box-shadow:0 4px 16px rgba(63,63,70,0.12);
  min-width:160px;
}
.liq-canvas-tooltip .tt-row { display:flex;justify-content:space-between;gap:14px;margin:2px 0; }
.liq-canvas-tooltip .tt-label { color:#7a8399; }
.liq-canvas-tooltip .tt-value { color:#d1d5db;font-weight:700;font-family:monospace; }
.liq-canvas-tooltip .tt-value.green { color:#34d399; }
.liq-canvas-tooltip .tt-value.red { color:#ef5350; }
.liq-canvas-tooltip .tt-header {
  font-size:.65rem;font-weight:700;letter-spacing:.08em;color:#7a8399;
  text-transform:uppercase;margin-bottom:5px;padding-bottom:4px;
  border-bottom:1px solid rgba(255,255,255,.06);
}

/* ── CHART ───────────────────────────────────── */
.chart-modal { display:none; position:fixed; inset:0; background:rgba(0,0,0,.85);
               z-index:200; align-items:center; justify-content:center; }
.chart-modal.open { display:flex; }
.chart-box { background:var(--panel); border:1px solid var(--border); border-radius:12px;
             padding:24px; width:min(700px,95vw); max-height:90vh; overflow-y:auto; }
.chart-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.chart-sym { font-family:var(--title); font-size:1.2rem; color:var(--accent); }
.chart-close { background:none; border:1px solid var(--border); color:var(--text);
               cursor:pointer; padding:4px 12px; border-radius:4px; font-family:var(--font); }
.chart-intervals { display:flex; gap:6px; margin-bottom:12px; }
.interval-btn { background:var(--card); border:1px solid var(--border); color:var(--muted);
                padding:4px 12px; border-radius:4px; cursor:pointer; font-family:var(--font);
                font-size:.7rem; }
.interval-btn.active {  color:var(--accent); }
.smc-tog { background:rgba(255,255,255,.04); border:1px solid var(--border); color:var(--muted);
           padding:3px 9px; border-radius:999px; cursor:pointer; font-family:var(--font);
           font-size:.62rem; transition:.15s; }
.smc-tog.active { background:rgba(63,63,70,.12); border-color:rgba(63,63,70,.45); color:var(--accent); }
.smc-tog:hover { border-color:rgba(63,63,70,.3); color:var(--text); }

/* ── PORTEFEUILLE ───────────────────────────────── */
.portfolio-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
                  gap:12px; margin-bottom:20px; }
.pos-card { background: var(--bg-surface);
            border: 1px solid var(--border-subtle);
            border-radius: var(--radius-xl);
            padding: 1.5rem;
            position: relative;
            box-shadow: var(--shadow-md);
            transition: all var(--transition); }
.pos-card:hover { box-shadow: var(--shadow-lg); }
.pos-card.profit { border-left: 3px solid var(--color-green); }
.pos-card.loss   { border-left: 3px solid var(--color-red); }
.pos-sym  { font-family:var(--title); font-size:1.1rem; color:var(--accent); }
.pos-price{ font-size:.75rem; color:var(--muted); margin:4px 0; }
.pos-pnl  { font-size:1rem; font-weight:700; }
.pos-del  { position:absolute; top:10px; right:10px; background:none; border:none;
            color:var(--muted); cursor:pointer; font-size:1rem; }
.pos-del:hover { color:var(--red); }

/* ── FORM ────────────────────────────────────── */
.form-panel { background: var(--bg-surface);
              border: 1px solid var(--border-subtle);
              border-radius: var(--radius-xl);
              padding: 1.5rem;
              margin-bottom: 20px;
              box-shadow: var(--shadow-md);
              transition: all var(--transition); }
.form-title { font-family:var(--title); font-size:.9rem; color:var(--accent); font-weight:700;
              margin-bottom:16px; letter-spacing:2px; }
.form-row { display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; }
.form-group { display:flex; flex-direction:column; gap:6px; }
.form-group label { font-size:.65rem; color:var(--muted); letter-spacing:1px; font-weight:600; }
.form-input, .form-select { background:#3f3f46; border:1px solid #52525b;
              color:var(--text); font-family:var(--font); padding:11px 14px; border-radius:8px;
              font-size:.78rem; outline:none; font-weight:400;
              transition:border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; }
.form-input::placeholder { color:#71717a; }
.form-input:hover, .form-select:hover { border-color:#a1a1aa; }
.form-input:focus, .form-select:focus { border-color:#d1d5db; box-shadow:0 0 0 2px rgba(63,63,70,.5); }
.form-select { appearance:auto; -webkit-appearance:auto; cursor:pointer; padding-right:28px; }
.form-select option { background:#27272a; color:var(--text); padding:6px; }
/* ── PRIMARY BUTTON ────────────────────────────── */
.btn, .btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: 8px;
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 600;
  color: #ffffff;
  background: #2563eb;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}

.btn:hover, .btn-primary:hover {
  background: #2563eb;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
}

.btn:active, .btn-primary:active {
  background: #2563eb;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05);
  transform: translateY(1px);
  opacity: .88;
}

.btn:disabled, .btn-primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ── SECONDARY BUTTON ──────────────────────────── */
.btn-secondary {
  padding: 0.75rem 1.5rem;
  border: 1px solid #3f3f46;
  border-radius: 8px;
  background: transparent;
  color: #ffffff;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
}

.btn-secondary:hover {
  background: #3f3f46;
  border-color: #52525b;
}

/* ── GHOST BUTTON (tertiaire textuel) ──────────── */
.btn-ghost {
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: #a1a1aa;
  font-size: 0.875rem;
  cursor: pointer;
  transition: color 0.2s ease-in-out;
}

.btn-ghost:hover {
  color: #d1d5db;
  background: transparent;
}

/* ── DANGER BUTTON ─────────────────────────────── */
.btn-danger {
  padding: 0.75rem 1.5rem;
  border: 1px solid var(--color-red);
  border-radius: var(--radius-lg);
  background: transparent;
  color: var(--color-red);
  cursor: pointer;
  transition: all var(--transition);
}

.btn-danger:hover {
  background: rgba(239, 68, 68, 0.15);
  border-color: var(--color-red);
  transform: translateY(-2px);
}

.btn-danger:active {
  transform: translateY(0);
}

.dashboard-hero {
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);
  gap:18px;
  margin-bottom:18px;
  padding:22px;
  border:1px solid var(--border-subtle);
  border-radius:20px;
  background:var(--bg-secondary);
  box-shadow:var(--shadow-md);
  overflow:hidden;
  animation:fadeSlideIn .45s ease;
}
.hero-copy { position:relative; min-width:0; }
.hero-kicker {
  display:inline-flex; align-items:center; gap:8px; padding:6px 12px; border-radius:2px;
  background:var(--bg-tertiary); border:1px solid var(--border-default); color:var(--accent);
  font-family:var(--title); font-size:.6rem; letter-spacing:2px; margin-bottom:16px;
}
.hero-title {
  font-family:var(--font-body); font-size:clamp(1.8rem, 4vw, 3.2rem); font-weight:700; line-height:1.1; letter-spacing:-1px;
  margin-bottom:14px; color: var(--accent) !important;
  text-wrap:balance;
}
.hero-title span { color: var(--text-primary) !important; font-style:normal; }
.hero-lead {
  max-width:720px; font-size:.84rem; line-height:1.9; color:#b0a99c; margin-bottom:20px;
}
.hero-actions { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:18px; }
/* ── HERO ACTION BUTTON ────────────────────────── */
.hero-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  background: var(--bg-tertiary);
  color: var(--color-cyan);
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 500;
  transition: all var(--transition);
}

.hero-action:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(156, 163, 175, 0.15);
  background: rgba(156, 163, 175, 0.15);
  border-color: var(--color-cyan);
}

.hero-action.secondary {
  color: var(--text-primary);
  background: rgba(255, 255, 255, 0.05);
  border-color: var(--border-subtle);
}

.hero-action.secondary:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: var(--border-default);
}
.hero-footnote { font-size:.68rem; color:#9a948a; display:flex; gap:12px; flex-wrap:wrap; }
.hero-footnote strong { color:var(--text); }
.hero-metric-board { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:10px; }
/* Ticker strip supprimé — IDs conservés en display:none pour compat JS */
/* Top Signaux strip */
#dash-top-signals-strip { background:#272729;border:1px solid rgba(63,63,70,.2);border-radius:10px;padding:14px 18px;margin-bottom:12px; }
.hero-metric {
  padding:16px; border-radius:18px; background:rgba(14,14,16,.78);
  border:1px solid rgba(156, 163, 175, .1); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  transition:var(--transition); box-shadow:0 8px 24px rgba(0,0,0,.18), 0 1px 0 rgba(255,255,255,.04) inset;
}
.hero-metric:hover { transform:translateY(-4px); border-color:rgba(156, 163, 175, .22); box-shadow:0 16px 36px rgba(0,0,0,.22), 0 0 0 1px rgba(156, 163, 175, .08); }
.hero-metric-label { display:block; font-size:9px; font-weight:700; color:#52525b; letter-spacing:.16em; text-transform:uppercase; margin-bottom:12px; }
.hero-metric-value { display:block; font-family:var(--title); font-size:2rem; font-weight:800; line-height:1; letter-spacing:-1px; color:var(--text); font-variant-numeric:tabular-nums; }
.hero-metric-sub { display:block; margin-top:8px; font-size:11px; font-weight:400; color:#52525b; }
.hero-metric.accent .hero-metric-value { color:var(--accent); }
.hero-metric.yellow .hero-metric-value { color:var(--yellow); }
.hero-metric.green .hero-metric-value { color:var(--green); }
.hero-metric.blue .hero-metric-value { color: var(--color-accent-secondary); }
.hero-metric.red .hero-metric-value { color:var(--red); }
/* Strip prix live en bas du hero */
.hero-market-strip {
  display:flex; align-items:center; justify-content:space-around; flex-wrap:wrap;
  gap:0; margin-top:10px; padding:12px 16px;
  background:rgba(14,14,16,.72); border:1px solid rgba(92,88,80,.14);
  border-radius:14px; backdrop-filter:blur(6px);
}
.hms-item {
  display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:4px 14px; border-right:1px solid rgba(92,88,80,.12);
  flex:1; min-width:80px;
}
.hms-item:last-child { border-right:none; }
.hms-sym { font-size:.55rem; color:var(--muted); letter-spacing:1.5px; text-transform:uppercase; }
.hms-price { font-family:var(--title); font-size:.88rem; color:var(--text); line-height:1.1; }
.hms-chg { font-size:.64rem; font-weight:600; }
.hero-scene {
  margin-top:10px;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(92,88,80,.16);
  background:rgba(9,16,28,.65);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.hero-scene.no-image{
  min-height:150px;
  background:var(--bg-secondary);
}
.hero-scene-inner{
  position:relative;
  height:150px;
  overflow:hidden;
  background:var(--bg-secondary);
}
.hero-scene-svg{
  display:block;
  width:100%;
  height:150px;
}
.hero-scene img {
  display:block;
  width:100%;
  height:150px;
  object-fit:cover;
  filter:saturate(1.08) contrast(1.05);
}
.hero-scene-cap {
  padding:9px 12px;
  font-size:.64rem;
  color:#a09a8e;
  letter-spacing:.6px;
}
.section-visual {
  margin-bottom:12px;
  border-radius:14px;
  overflow:hidden;
  border:1px solid rgba(92,88,80,.16);
  background:rgba(9,16,28,.7);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}
.section-visual img {
  display:block;
  width:100%;
  height:130px;
  object-fit:cover;
  filter:saturate(1.08) contrast(1.04);
}
.section-visual.no-image img{display:none}
.section-visual.no-image{
  min-height:130px;
  background:var(--bg-secondary);
}
.section-visual div {
  padding:8px 11px;
  font-size:.64rem;
  color:#a09a8e;
  letter-spacing:.4px;
}
.dashboard-columns { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; align-items:stretch; }
.dashboard-side-stack { display:flex; flex-direction:column; gap:12px; height:100%; }
.dashboard-mode-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  margin-bottom:14px;
  border:1px solid rgba(92,88,80,.16);
  border-radius:12px;
  background:var(--bg-surface);
}
.dashboard-mode-copy{font-size:.66rem;color:var(--muted)}
.dashboard-mode-actions{display:flex;gap:6px;flex-wrap:wrap}
.dashboard-mode-btn{
  border:1px solid rgba(92,88,80,.18);
  background:rgba(16,16,18,.7);
  color:var(--muted);
  padding:6px 10px;
  border-radius:999px;
  cursor:pointer;
  font-family:var(--font);
  font-size:.67rem;
}
.dashboard-mode-btn.active{
  color:#09090b;
  background:linear-gradient(135deg,var(--accent),#72f1ff);
  border-color:transparent;
}
/* Expert sections now always visible — Essential/Expert mode removed */
.desk-ribbon {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:-2px 0 16px;
}
.desk-ribbon-item {
  padding:16px 18px;
  border-radius:8px;
  background:#111113;
  border:1px solid rgba(255,255,255,0.06);
  border-top-color:rgba(255,255,255,0.10);
  box-shadow:0 1px 0 rgba(255,255,255,0.04) inset;
  transition:border-color var(--transition-base), transform var(--transition-base);
}
.desk-ribbon-item:hover { transform:translateY(-1px); border-color:rgba(255,255,255,0.12); }
.desk-ribbon-label {
  display:block;
  font-size:9px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#3f3f46;
  margin-bottom:10px;
}
.desk-ribbon-value {
  display:block;
  font-family:var(--title);
  font-size:1.6rem;
  font-weight:800;
  letter-spacing:-1px;
  line-height:1;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
.desk-ribbon-value.accent { color:var(--accent); }
.desk-ribbon-value.yellow { color:var(--yellow); }
.desk-ribbon-value.green { color:var(--green); }
.insight-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin-bottom:16px;
}
.insight-card {
  padding:16px 18px;
  border-radius:18px;
  background:
    linear-gradient(180deg, rgba(22,22,24,.94), rgba(14,14,16,.98));
  border:1px solid rgba(92,88,80,.16);
  box-shadow:0 16px 32px rgba(0,0,0,.14);
  transition:.22s ease;
}
.insight-card:hover { transform:translateY(-3px); border-color:rgba(156, 163, 175, .18); }
.insight-card-title {
  font-size:.62rem;
  letter-spacing:1.4px;
  color:var(--muted);
  margin-bottom:10px;
}
.insight-card-value {
  display:block;
  font-family:var(--title);
  font-size:1.12rem;
  color:var(--text);
  margin-bottom:8px;
}
.insight-card-copy {
  font-size:.7rem;
  line-height:1.7;
  color:#b1c3dd;
}
.section-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:16px;
  margin-bottom:16px;
  flex-wrap:wrap;
}
.section-kicker {
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:9px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#52525b;
  margin-bottom:8px;
  padding:0;
  background:none;
  border:none;
  border-radius:0;
}
.section-kicker::before {
  content:'';
  display:inline-block;
  width:12px;
  height:1px;
  background:#52525b;
  vertical-align:middle;
}

/* ── Meta-bar : source + freshness row sous les titres de section ── */
.meta-bar { display:flex; align-items:center; gap:5px; margin-top:8px; flex-wrap:wrap; }
.meta-chip {
  display:inline-flex; align-items:center; gap:3px;
  font-size:8px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color:#3f3f46; padding:2px 7px; border-radius:4px;
  background:rgba(255,255,255,.02); border:1px solid rgba(255,255,255,.05);
  white-space:nowrap;
}
.meta-chip.source { color:#52525b; border-color:rgba(255,255,255,.04); }
.meta-chip.live {
  color:#22c55e; border-color:rgba(34,197,94,.18);
  background:rgba(34,197,94,.05);
}
.meta-chip.live::before {
  content:''; display:inline-block; width:4px; height:4px;
  border-radius:50%; background:#22c55e;
  animation:meta-live-pulse 2s ease infinite;
}
@keyframes meta-live-pulse { 0%,100%{opacity:1} 50%{opacity:.3} }
.section-title {
  font-family:var(--title);
  font-size:1.05rem;
  font-weight:700;
  letter-spacing:-.3px;
  color:var(--text);
}
.section-subtitle {
  font-size:.75rem;
  color:#52525b;
  max-width:760px;
  line-height:1.7;
  margin-top:4px;
}
.market-switch {
  display:flex;
  gap:4px;
  background:rgba(16,16,18,.76);
  border:1px solid rgba(92,88,80,.16);
  border-radius:999px;
  padding:4px;
}
.table-shell {
  padding:18px;
}
.section-head-actions {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.section-pill {
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(92,88,80,.16);
  background:rgba(15,27,42,.76);
  color:#9bb0cf;
  font-size:.66rem;
  letter-spacing:1.1px;
}

/* ── JOURNAL ─────────────────────────────────── */
.trade-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
               gap:10px; margin-bottom:20px; }

/* ── ALERTS ──────────────────────────────────── */
.alert-row { display:flex; gap:12px; align-items:center; padding:10px 14px;
             background:var(--card); border:1px solid var(--border);
             border-radius:6px; margin-bottom:6px; }
.alert-sym { font-weight:700; color:var(--accent); width:80px; }
.alert-cond { flex:1; font-size:.75rem; }
.alert-status { font-size:.7rem; }
.triggered { opacity:.5; }

/* ── TELEGRAM CONFIG ─────────────────────────── */
.tg-box { background:var(--card); border:1px solid var(--border); border-radius:8px;
          padding:20px; max-width:500px; }
.tg-step { display:flex; gap:12px; margin-bottom:12px; align-items:flex-start; }
.tg-num { background:var(--accent); color:var(--bg); border-radius:50%; width:22px;
          height:22px; display:flex; align-items:center; justify-content:center;
          font-size:.7rem; font-weight:700; flex-shrink:0; margin-top:2px; }
.code { background:var(--panel); border:1px solid var(--border); padding:2px 8px;
        border-radius:3px; color:var(--yellow); font-size:.8rem; }

/* ── AI CHAT ─────────────────────────────────── */
.ai-layout { display:grid; grid-template-columns:1fr 320px; gap:16px; height:calc(100vh - 160px); }
@media (max-width:900px) { .ai-layout { grid-template-columns:1fr; } }
.ai-chat-panel { display:flex; flex-direction:column; background:var(--card);
                 border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.ai-chat-header { padding:14px 18px; border-bottom:1px solid var(--border);
                  background:linear-gradient(90deg,var(--panel),var(--card));
                  display:flex; align-items:center; gap:12px; }
.ai-avatar { width:36px;height:36px;border-radius:50%;
             background:linear-gradient(135deg,var(--accent),var(--accent2));
             display:flex;align-items:center;justify-content:center;font-size:1.1rem;
             box-shadow:0 0 16px rgba(63,63,70,.3); flex-shrink:0; }
.ai-name { font-family:var(--title); font-size:.85rem; color:var(--accent); }
.ai-status { font-size:.65rem; color:var(--green); }
.ai-messages { flex:1; overflow-y:auto; padding:16px; display:flex;
               flex-direction:column; gap:12px; }
.ai-messages::-webkit-scrollbar { width:4px; }
.ai-messages::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
.msg { display:flex; gap:10px; animation:fadeUp .3s ease; }
@keyframes fadeUp { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }
.msg.user { flex-direction:row-reverse; }
.msg-bubble { max-width:80%; padding:10px 14px; border-radius:12px; font-size:.78rem;
              line-height:1.6; white-space:pre-wrap; }
.msg.ai .msg-bubble { background:var(--panel); border:1px solid var(--border);
                      border-bottom-left-radius:4px; color:var(--text); }
.msg.user .msg-bubble { background:linear-gradient(135deg,var(--accent2),#5b21b6);
                        color:#fff; border-bottom-right-radius:4px; }
.msg-avatar { width:28px;height:28px;border-radius:50%;display:flex;align-items:center;
              justify-content:center;font-size:.8rem;flex-shrink:0;margin-top:2px; }
.msg.ai .msg-avatar { background:linear-gradient(135deg,var(--accent),var(--accent2)); }
.msg.user .msg-avatar { background:var(--border); }
.typing-indicator { display:flex;gap:4px;padding:10px 14px;background:var(--panel);
                    border:1px solid var(--border);border-radius:12px;
                    border-bottom-left-radius:4px;width:fit-content; }
.typing-dot { width:6px;height:6px;border-radius:50%;background:var(--accent);
              animation:typing 1.2s infinite; }
.typing-dot:nth-child(2){animation-delay:.2s}
.typing-dot:nth-child(3){animation-delay:.4s}
@keyframes typing{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}
.ai-input-area { padding:12px 16px; border-top:1px solid var(--border);
                 background:var(--panel); display:flex; gap:8px; }
.ai-input { flex:1; background:var(--card); border:1px solid var(--border);
            color:var(--text); font-family:var(--font); padding:10px 14px;
            border-radius:8px; font-size:.78rem; outline:none; resize:none; }
.ai-input:focus { border-color: rgba(56,189,248,.5); box-shadow: 0 0 0 3px rgba(56,189,248,.1); }
.ai-send { background:linear-gradient(135deg,var(--accent),var(--accent2));
           border:none; color:#fff; padding:10px 18px; border-radius:8px;
           cursor:pointer; font-family:var(--font); font-size:.8rem;
           font-weight:700; transition:.2s; }
.ai-send:hover { opacity:.85; transform:scale(1.03); }
.ai-send:disabled { opacity:.4; cursor:not-allowed; transform:none; }

/* Suggestions rapides */
.ai-suggestions { display:flex; flex-direction:column; gap:8px; }
.ai-sidebar { display:flex; flex-direction:column; gap:12px; }
.ai-side-card { background:var(--card); border:1px solid var(--border);
                border-radius:10px; padding:14px; }
.ai-side-title { font-size:.65rem; color:var(--muted); letter-spacing:2px;
                 margin-bottom:10px; font-family:var(--title); }
.suggestion-btn { width:100%; background:var(--panel); border:1px solid var(--border);
                  color:var(--text); font-family:var(--font); padding:9px 12px;
                  border-radius:6px; cursor:pointer; font-size:.72rem; text-align:left;
                  transition:.2s; line-height:1.4; }
.suggestion-btn:hover {  color:var(--accent);
                        background:rgba(63,63,70,.05); }
.ai-key-input { background:var(--panel); border:1px solid var(--border);
                color:var(--text); font-family:var(--font); padding:8px 12px;
                border-radius:6px; font-size:.72rem; width:100%; outline:none; margin-bottom:8px; }
.ai-key-input:focus { border-color: rgba(56,189,248,.5); box-shadow: 0 0 0 3px rgba(56,189,248,.1); }
.ai-key-info { font-size:.65rem; color:var(--muted); line-height:1.5; }
.ai-key-info a { color:var(--accent); }

/* ── NEWS ────────────────────────────────────── */
.news-layout { display:grid; grid-template-columns:1fr 280px; gap:16px; }
@media(max-width:800px){.news-layout{grid-template-columns:1fr}}
.news-list { display:flex; flex-direction:column; gap:8px; }
.news-item {
  background: var(--bg-secondary, #272729);
  border: 1px solid rgba(63,63,70,.35);
  border-left-width: 3px;
  border-radius: 8px;
  padding: 12px 14px;
  transition: background .15s, transform .1s;
  cursor: pointer;
  text-decoration: none;
  display: block;
}
.news-item:hover { background: var(--bg-tertiary, #303032); transform: translateX(2px); }
.news-title { color: var(--text-primary, #f3f4f6); font-size: .83rem; line-height: 1.5; margin-bottom: 5px; font-weight: 500; }
.news-meta  { display: flex; align-items: center; font-size: .63rem; color: var(--text-muted, #6b7280); }
.news-source{ color: var(--accent); font-weight: 600; }
.news-sentiment { display:flex; gap:6px; }
.vote-up   { color:var(--green); }
.vote-down { color:var(--red); }
.news-filter { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.news-coin-btn {
  background: var(--bg-secondary, #272729);
  border: 1px solid rgba(63,63,70,.35);
  color: var(--text-muted, #6b7280);
  padding: 4px 12px;
  border-radius: 20px;
  cursor: pointer;
  font-family: var(--font);
  font-size: .7rem;
  transition: .15s;
}
.news-coin-btn:hover { color: var(--text-secondary, #d1d5db); border-color: rgba(63,63,70,.6); }
.news-coin-btn.active { color: var(--accent); border-color: var(--accent); background: rgba(37,99,235,.08); }

/* ── SOUND ALERT ─────────────────────────────── */
.sound-toggle { display:flex; align-items:center; gap:10px; background:var(--card);
                border:1px solid var(--border); padding:8px 16px; border-radius:8px;
                margin-bottom:12px; font-size:.75rem; cursor:pointer; width:fit-content; }
.sound-toggle input { cursor:pointer; accent-color:var(--accent); width:16px; height:16px; }

/* ── CANDLESTICK CHART ───────────────────────── */
.chart-tabs { display:flex; gap:6px; margin-bottom:12px; }
.chart-tab-btn { background:var(--card); border:1px solid var(--border); color:var(--muted);
                 padding:5px 14px; border-radius:4px; cursor:pointer; font-family:var(--font);
                 font-size:.7rem; transition:.2s; }
.chart-tab-btn.active {  color:var(--accent); background:rgba(63,63,70,.05); }
#candle-container { width:100%; height:340px; border-radius:6px; overflow:hidden; }
.chart-indicators { display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.ind-badge { padding:4px 12px; border-radius:4px; font-size:.7rem; border:1px solid var(--border);
             background:var(--panel); }
.ind-badge.rsi-os  { border-color:var(--green); color:var(--green); }
.ind-badge.rsi-ob  { border-color:var(--red);   color:var(--red); }
.ind-badge.rsi-n   { color:var(--muted); }
.ind-badge.macd-bull{ border-color:var(--green); color:var(--green); }
.ind-badge.macd-bear{ border-color:var(--red);   color:var(--red); }

/* ── CALCULATOR ──────────────────────────────── */
.calc-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media(max-width:700px){.calc-grid{grid-template-columns:1fr}}
.calc-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:20px; }
.calc-title { font-family:var(--title); font-size:.8rem; color:var(--accent);
              letter-spacing:2px; margin-bottom:16px; }
.calc-result { background:var(--panel); border:1px solid var(--border); border-radius:8px;
               padding:16px; margin-top:12px; }
.calc-row { display:flex; justify-content:space-between; padding:5px 0;
            border-bottom:1px solid rgba(26,48,80,.4); font-size:.78rem; }
.calc-row:last-child { border:none; }
.calc-row .label { color:var(--muted); }
.calc-row .value { font-weight:700; }
.rr-good { color:var(--green); }
.rr-bad  { color:var(--red); }

/* ── COT STYLES ──────────────────────────────── */
.cot-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
@media(max-width:700px){.cot-grid{grid-template-columns:1fr}}
.cot-card { background:var(--card); border:1px solid var(--border); border-radius:10px;
            padding:20px; position:relative; overflow:hidden; }
.cot-card.bullish { border-left:4px solid var(--green); }
.cot-card.bearish { border-left:4px solid var(--red); }
.cot-card.neutral { border-left:4px solid var(--yellow); }
.cot-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.cot-asset { font-family:var(--title); font-size:1.1rem; display:flex; align-items:center; gap:10px; }
.cot-signal-badge { padding:4px 12px; border-radius:4px; font-size:.7rem; font-weight:700; letter-spacing:1px; }
.badge-bullish { background:rgba(0,255,136,.2); color:var(--green); }
.badge-bearish { background:rgba(255,51,102,.2); color:var(--red); }
.badge-neutral  { background:rgba(255,193,7,.2);  color:var(--yellow); }
.cot-row { display:flex; justify-content:space-between; align-items:center;
           padding:8px 12px; background:var(--panel); border-radius:6px;
           margin-bottom:6px; font-size:.78rem; }
.cot-row .lbl { color:var(--muted); font-size:.7rem; }
.cot-row .val { font-weight:700; }
.cot-bar-wrap { margin:8px 0; }
.cot-bar-label { display:flex; justify-content:space-between; font-size:.65rem;
                 color:var(--muted); margin-bottom:4px; }
.cot-bar { height:8px; background:var(--panel); border-radius:4px; overflow:hidden;
           display:flex; }
.cot-bar-long  { background:var(--green); transition:width .5s; }
.cot-bar-short { background:var(--red);   transition:width .5s; }
.cot-verdict { background:rgba(63,63,70,.05); border:1px solid var(--border);
               border-radius:6px; padding:12px; margin-top:12px;
               font-size:.75rem; line-height:1.6; color:var(--text); }
.cot-verdict b { color:var(--accent); }
.etf-row { display:flex; align-items:center; justify-content:space-between;
           padding:8px 0; border-bottom:1px solid rgba(26,48,80,.4); font-size:.78rem; }
.etf-name { color:var(--text); font-weight:600; }
.etf-flow { font-weight:700; font-family:var(--title); font-size:.85rem; }
.history-nav { display:flex; gap:6px; margin-bottom:12px; flex-wrap:wrap; }
.hist-btn { background:var(--card); border:1px solid var(--border); color:var(--muted);
            padding:4px 12px; border-radius:20px; cursor:pointer; font-family:var(--font);
            font-size:.7rem; transition:.2s; }
.hist-btn:hover,.hist-btn.active {  color:var(--accent); }

/* ── SMART SIGNALS ───────────────────────────────── */
.smart-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:10px;cursor:pointer;transition:.2s}
.smart-card:hover{background:rgba(63,63,70,.03)}
.smart-card.buy{border-left:4px solid var(--green)}
.smart-card.sell{border-left:4px solid var(--red)}
.smart-card.neutral{border-left:4px solid var(--yellow)}
.score-ring{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:900;border:3px solid var(--border);flex-shrink:0}
.score-ring.high{border-color:var(--green);color:var(--green);background:rgba(0,255,136,.1)}
.score-ring.med{border-color:var(--yellow);color:var(--yellow);background:rgba(255,193,7,.1)}
.score-ring.low{border-color:var(--red);color:var(--red);background:rgba(255,51,102,.1)}
.smart-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.smart-pattern{background:rgba(63,63,70,.15);border:1px solid rgba(63,63,70,.3);color:#d1d5db;padding:2px 8px;border-radius:3px;font-size:.65rem}

/* ── LEXIQUE ─────────────────────────────────────── */
.lex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.lex-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:16px;cursor:pointer;transition:.2s}
.lex-card:hover{transform:translateY(-2px)}
.lex-emoji{font-size:1.8rem;margin-bottom:8px}
.lex-title{font-family:var(--title);font-size:.85rem;color:var(--accent);margin-bottom:4px}
.lex-full{font-size:.65rem;color:var(--muted);margin-bottom:8px}
.lex-short{font-size:.75rem;color:var(--text);line-height:1.5}
.lex-level{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.6rem;font-weight:700;margin-top:8px}
.lex-level.débutant{background:rgba(0,255,136,.15);color:var(--green)}
.lex-level.intermédiaire{background:rgba(255,193,7,.15);color:var(--yellow)}
.lex-level.avancé{background:rgba(255,51,102,.15);color:var(--red)}
.lex-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:200;align-items:center;justify-content:center}
.lex-modal.open{display:flex}
.lex-modal-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px;width:min(640px,95vw);max-height:85vh;overflow-y:auto}
.lex-detail{font-size:.78rem;line-height:1.8;color:var(--text);white-space:pre-line}
.lex-example{background:rgba(63,63,70,.05);border:1px solid var(--border);border-radius:4px;padding:12px;margin-top:12px;font-size:.75rem}
.lex-related-btn{background:var(--card);border:1px solid var(--border);color:var(--accent);padding:4px 10px;border-radius:4px;cursor:pointer;font-size:.7rem}

/* ── ABONNEMENT / ACCES ─────────────────────────── */
.subshell {
  max-width:1120px;
  margin:0 auto;
  padding:18px 0 34px;
}
.sub-hero {
  position:relative;
  overflow:hidden;
  padding:26px;
  border-radius:28px;
  border:1px solid rgba(92,88,80,.16);
  background:
    radial-gradient(circle at top right, rgba(156, 163, 175, .14), transparent 28%),
    radial-gradient(circle at bottom left, rgba(255,193,7,.08), transparent 26%),
    linear-gradient(180deg, rgba(20,20,22,.96), rgba(14,14,16,.99));
  box-shadow:0 24px 52px rgba(0,0,0,.22);
}
.sub-kicker {
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius:999px;
  font-size:.65rem;
  letter-spacing:1.4px;
  color:var(--accent);
  background:rgba(156, 163, 175, .09);
  border:1px solid rgba(156, 163, 175, .16);
  margin-bottom:14px;
}
.sub-title {
  font-family:var(--title);
  font-size:clamp(1.7rem, 3vw, 2.9rem);
  line-height:1.02;
  letter-spacing:2px;
  margin-bottom:10px;
  color:#f3f8ff;
}
.sub-copy {
  max-width:760px;
  color:var(--muted);
  font-size:.8rem;
  line-height:1.85;
}
.sub-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin-top:18px;
}
.sub-card {
  position:relative;
  padding:22px 18px 18px;
  border-radius:22px;
  border:1px solid rgba(92,88,80,.14);
  background:linear-gradient(180deg, rgba(17,31,48,.95), rgba(10,19,31,.98));
  box-shadow:0 18px 36px rgba(0,0,0,.18);
  transition:.22s ease;
}
.sub-card:hover {
  transform:translateY(-3px);
  border-color:rgba(156, 163, 175, .2);
}
.sub-card.featured {
  border-color:rgba(156, 163, 175, .26);
  box-shadow:0 24px 44px rgba(0,0,0,.24), 0 0 0 1px rgba(156, 163, 175, .06);
}
.sub-badge {
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  font-size:.62rem;
  letter-spacing:1px;
  margin-bottom:14px;
  border:1px solid rgba(92,88,80,.16);
  color:var(--text);
  background:rgba(255,255,255,.04);
}
.sub-card.featured .sub-badge {
  color:var(--bg);
  background:linear-gradient(135deg, var(--accent), #72f1ff);
  border-color:transparent;
  font-weight:700;
}
.sub-plan {
  font-family:var(--title);
  color:var(--text);
  font-size:1.08rem;
  letter-spacing:1.4px;
  margin-bottom:6px;
}
.sub-price {
  font-family:var(--title);
  color:var(--accent);
  font-size:1.45rem;
  margin-bottom:8px;
}
.sub-price small {
  font-size:.68rem;
  color:var(--muted);
}
.sub-desc {
  color:var(--muted);
  font-size:.72rem;
  line-height:1.75;
  min-height:58px;
  margin-bottom:12px;
}
.sub-features {
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-bottom:16px;
}
.sub-feat {
  display:flex;
  gap:9px;
  align-items:flex-start;
  padding:9px 10px;
  border-radius:12px;
  background:rgba(255,255,255,.025);
  border:1px solid rgba(92,88,80,.08);
  font-size:.7rem;
  color:var(--text);
  line-height:1.55;
}
.sub-feat span:first-child {
  color:var(--accent);
  flex-shrink:0;
}
.sub-actions {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.sub-note-grid {
  display:grid;
  grid-template-columns:1.3fr .9fr;
  gap:16px;
  margin-top:16px;
}
.sub-note {
  padding:18px;
  border-radius:20px;
  border:1px solid rgba(92,88,80,.14);
  background:linear-gradient(180deg, rgba(20,20,22,.92), rgba(10,19,31,.97));
}
.sub-note h4 {
  font-family:var(--title);
  font-size:.84rem;
  letter-spacing:1.4px;
  color:var(--accent);
  margin-bottom:10px;
}
.sub-note p, .sub-note li {
  font-size:.72rem;
  color:var(--muted);
  line-height:1.75;
}
.sub-note ul {
  padding-left:18px;
  display:grid;
  gap:6px;
}

/* ── RESPONSIVE ──────────────────────────────── */
@media (max-width:600px) {
  header { padding:10px 14px; }
  .logo  { font-size:1rem; }
  nav    { padding:10px 12px 12px; }
  .tab   { padding:12px; }
  .stats-grid { grid-template-columns:1fr 1fr; }
  .heatmap { grid-template-columns:repeat(auto-fill,minmax(70px,1fr)); }
  .dashboard-hero { grid-template-columns:1fr; padding:16px; border-radius:18px; }
  .hero-title { font-size:1.8rem; }
  .hero-metric-board { grid-template-columns:1fr 1fr; }
  .dashboard-columns { grid-template-columns:1fr; }
  .desk-ribbon { grid-template-columns:1fr 1fr; }
  .insight-grid { grid-template-columns:1fr; }
  .sub-grid, .sub-note-grid { grid-template-columns:1fr; }
}

/* HAMBURGER MENU */
.hamburger-btn { display:none; flex-direction:column; justify-content:center; align-items:center; width:40px; height:40px; background:none; border:none; cursor:pointer; padding:0; gap:5px; }
.hamburger-btn span { display:block; width:24px; height:2px; background:var(--accent); border-radius:2px; transition:all .3s ease; }
.hamburger-btn.open span:nth-child(1) { transform:rotate(45deg) translate(8px, 8px); }
.hamburger-btn.open span:nth-child(2) { opacity:0; }
.hamburger-btn.open span:nth-child(3) { transform:rotate(-45deg) translate(7px, -7px); }
.hamburger-menu { display:none; position:absolute; top:100%; left:0; right:0; background:linear-gradient(180deg, rgba(16,16,18,.98), rgba(12,12,13,.98)); border:1px solid rgba(92,88,80,.2); border-top:none; z-index:999; padding:8px 0; backdrop-filter:blur(20px); box-shadow:0 12px 32px rgba(0,0,0,.32); flex-direction:column; }
.hamburger-menu.open { display:flex; }
.hamburger-item { background:none; border:none; color:var(--text); padding:12px 24px; cursor:pointer; text-align:left; font-family:var(--font); font-size:.85rem; letter-spacing:.8px; transition:.2s ease; border-bottom:1px solid rgba(92,88,80,.1); }
.hamburger-item:hover { background:rgba(156, 163, 175, .08); color:var(--accent); }
.hamburger-item:last-child { border-bottom:none; }

/* ════════════════════════════════════════════════════════════
   RESPONSIVE MOBILE V11
   ════════════════════════════════════════════════════════════ */
.mobile-nav { display:none; position:fixed; bottom:0; left:0; right:0; background:linear-gradient(180deg, rgba(16,16,18,.96), rgba(12,12,13,.98)); border-top:1px solid rgba(92,88,80,.16); z-index:1000; padding:8px 0 env(safe-area-inset-bottom,8px); backdrop-filter:blur(18px); box-shadow:0 -16px 36px rgba(0,0,0,.24); }
.mobile-nav-items { display:flex; justify-content:space-around; align-items:center; }
.mobile-nav-btn { display:flex; flex-direction:column; align-items:center; gap:3px; padding:7px 8px; background:none; border:none; color:var(--muted); cursor:pointer; font-family:var(--font); font-size:.5rem; letter-spacing:.6px; min-width:52px; transition:.2s; border-radius:14px; }
.mobile-nav-btn .mn-icon { font-size:1.25rem; }
.mobile-nav-btn.active { color:var(--accent); background:rgba(156, 163, 175, .08); }
.mobile-submenu { display:none; position:fixed; bottom:72px; left:10px; right:10px; background:linear-gradient(180deg, rgba(16,16,18,.96), rgba(12,12,13,.98)); border:1px solid rgba(92,88,80,.16); border-radius:18px; z-index:999; padding:10px; gap:8px; animation:slideUp .2s ease; box-shadow:0 20px 40px rgba(0,0,0,.24); backdrop-filter:blur(18px); }
.mobile-submenu.open { display:grid; grid-template-columns:repeat(4,1fr); }
@keyframes slideUp { from{transform:translateY(100%);opacity:0} to{transform:translateY(0);opacity:1} }
.mobile-sub-btn { display:flex; flex-direction:column; align-items:center; gap:4px; padding:10px 4px; background:rgba(20,20,22,.88); border:1px solid rgba(92,88,80,.14); border-radius:12px; color:var(--text); cursor:pointer; font-family:var(--font); font-size:.52rem; text-align:center; transition:.2s ease; }
.mobile-sub-btn .msb-icon { font-size:1.1rem; }
.mobile-sub-btn:active, .mobile-sub-btn:hover { background:rgba(156, 163, 175, .08);  }
#mobile-overlay { display:none; position:fixed; inset:0; z-index:998; background:rgba(0,0,0,.5); }
#mobile-overlay.open { display:block; }

@media (max-width:768px) {
  #alerts-watchlist-grid { grid-template-columns: 1fr !important; }
  header { padding:10px; flex-wrap:wrap; gap:5px; justify-content:space-between; position:relative; }
  .logo { font-size:0; display:none; }
  .status-bar { display:flex; flex-wrap:nowrap; overflow-x:auto; gap:3px; scrollbar-width:none; width:100%; order:2; }
  .status-bar::-webkit-scrollbar { display:none; }
  .stat-pill { font-size:.5rem; padding:2px 5px; white-space:nowrap; flex-shrink:0; }
  #btn-login-header { display:none; }
  .hamburger-btn { display:flex; order:1; }
  .login-btn-mobile { display:block !important; order:1; }
  nav { display:none; }
  .hamburger-menu { position:fixed; top:80px; left:0; right:0; bottom:auto; }
  .mobile-nav { display:none !important; }
  body { padding-bottom:0; }
  .tab { padding:10px 10px; }
  .stats-grid { grid-template-columns:repeat(2,1fr) !important; gap:7px; margin-bottom:10px; }
  .stat-card { padding:10px 10px; }
  .stat-card .val { font-size:1.4rem; letter-spacing:-.5px; }
  .stat-card .lbl { font-size:.6rem; }
  .stat-card { padding:12px 14px; }
  .table-scroll { max-height:52vh; }
  table { font-size:.68rem; }
  th,td { padding:6px 7px; }
  .form-panel { padding:12px; margin-bottom:10px; }
  .form-row { flex-direction:column; }
  .form-input,.form-select { width:100% !important; box-sizing:border-box; }
  .btn { width:100%; padding:10px; text-align:center; }
  .tg-box { max-width:100%; }
  .cot-grid { grid-template-columns:1fr !important; }
  .macro-kpi-grid { grid-template-columns:repeat(2,1fr) !important; }
  .conclusion-cards { grid-template-columns:1fr !important; }
  .portfolio-grid { grid-template-columns:1fr; }
  .heatmap { grid-template-columns:repeat(auto-fill,minmax(68px,1fr)); gap:3px; }
  .heat-cell { padding:7px 3px; }
  .settings-grid { grid-template-columns:1fr !important; }
  .ai-layout { grid-template-columns:1fr; height:auto; }
  .dashboard-hero { grid-template-columns:1fr; padding:16px; border-radius:18px; }
  .hero-title { font-size:1.8rem; }
  .hero-metric-board { grid-template-columns:1fr 1fr !important; }
  .dashboard-hero { grid-template-columns:1fr !important; overflow:visible; }
  .dashboard-columns { grid-template-columns:1fr !important; }
  .desk-ribbon { grid-template-columns:1fr 1fr !important; }
  .insight-grid { grid-template-columns:1fr !important; }
  .chart-box { width:95vw; padding:12px; }
  .nav-page-btn { padding:14px 10px; }
  /* inline grid overrides */
  div[style*="grid-template-columns:1fr 1fr 1fr"] { grid-template-columns:1fr !important; }
  div[style*="grid-template-columns:340px 1fr"] { grid-template-columns:1fr !important; }
  div[style*="grid-template-columns:1fr 1fr"] { grid-template-columns:1fr !important; }
  div[style*="grid-template-columns:1fr 300px"] { grid-template-columns:1fr !important; }
  div[style*="grid-template-columns:repeat(3"] { grid-template-columns:1fr 1fr !important; }
  div[style*="grid-template-columns:repeat(4"] { grid-template-columns:1fr 1fr !important; }
  /* hero-metric-board override: repeat(3 → 2 cols) */
  .hero-metric-board { grid-template-columns:repeat(2,1fr) !important; }
  /* RSI widget pleine largeur quelle que soit la grille */
  #rsi-moyenne-widget { grid-column:1/-1 !important; }
  /* prevent any element from causing horizontal overflow */
  .tab, .tab > *, .dashboard-hero, .hero-metric-board { max-width:100%; box-sizing:border-box; }
  /* hero-metric cards : pas d'overflow interne */
  .hero-metric { overflow:hidden; min-width:0; }
  /* hero-metric-value : taille réduite sur mobile */
  .hero-metric-value { font-size:1.1rem !important; }
  /* dash-macro-flash : 1 colonne sur mobile */
  #dash-macro-flash { grid-template-columns:1fr !important; }
  /* verdict card main text : wrapping autorisé */
  #dash-verdict-main { white-space:normal; word-break:break-word; }
}
@media (max-width:400px) {
  .stat-card .val { font-size:.9rem; }
  .mobile-nav-btn { font-size:.43rem; min-width:38px; }
}
/* ── FIX OVERFLOW HORIZONTAL MOBILE (iOS Safari) ─── */
@media (max-width:640px) {
  /* grids 4 col → 2 col */
  #dash-market-summary { grid-template-columns:1fr 1fr !important; }
  #dash-top-signals-list { grid-template-columns:1fr 1fr !important; }
  div[style*="grid-template-columns:repeat(3"] { grid-template-columns:1fr 1fr !important; }
  div[style*="grid-template-columns:repeat(4"] { grid-template-columns:1fr 1fr !important; }
  /* Tables : contenu dans leur conteneur */
  .table-wrap, .table-scroll, .table-shell { overflow-x:auto !important; max-width:100vw !important; }
  /* Empêche tout élément de déborder sur mobile */
  .tab > * { max-width:100%; box-sizing:border-box; }
  /* overflow général */
  .tab { overflow-x:hidden; }
  header { max-width:100vw; }
}
/* Force mobile menu on iOS Firefox - use max-width instead of max-device-width */
@media (max-width:600px) {
  nav { display:none !important; }
  .mobile-nav { display:block !important; }
  body { padding-bottom:68px !important; }
}
@media (max-width:1024px) and (orientation:landscape) {
  nav { display:none !important; }
  .mobile-nav { display:block !important; }
  body { padding-bottom:68px !important; }
}


/* ── TOAST SYSTEM ────────────────────────────── */
#toast-container { position:fixed; bottom:28px; right:24px; z-index:99999; display:flex; flex-direction:column; gap:10px; pointer-events:none; }
.toast { display:flex; align-items:center; gap:12px; padding:14px 18px; border-radius:14px; font-family:var(--font);
         font-size:.84rem; font-weight:500; min-width:260px; max-width:400px;
         backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
         box-shadow:0 16px 40px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.06) inset;
         animation:toastIn .28s cubic-bezier(0.16,1,0.3,1) both;
         pointer-events:all; cursor:pointer; }
.toast.hiding { animation:toastOut .22s ease forwards; }
.toast-icon { font-size:1.1rem; flex-shrink:0; }
.toast-body { flex:1; }
.toast-title { font-family:var(--title); font-size:.7rem; letter-spacing:1px; margin-bottom:2px; opacity:.7; }
.toast-msg { line-height:1.4; }
.toast-close { opacity:.5; font-size:.9rem; flex-shrink:0; }
.toast-close:hover { opacity:1; }
.toast.toast-success { background:rgba(0,40,24,.85); border:1px solid rgba(0,255,136,.28); color:#a0ffd2; }
.toast.toast-error   { background:rgba(40,8,18,.85); border:1px solid rgba(255,51,102,.28); color:#ffaabb; }
.toast.toast-info    { background:rgba(6,22,44,.85); border:1px solid rgba(156, 163, 175, .26); color:#b0e8ff; }
.toast.toast-warning { background:rgba(38,28,4,.85); border:1px solid rgba(255,193,7,.26); color:#ffe08a; }
@keyframes toastIn { from{opacity:0;transform:translateX(24px) scale(.96)} to{opacity:1;transform:none} }
@keyframes toastOut { to{opacity:0;transform:translateX(24px) scale(.94)} }

/* ── SKELETON LOADERS ────────────────────────── */
@keyframes shimmer { 0%{background-position:-600px 0} 100%{background-position:600px 0} }
.skeleton { background:linear-gradient(90deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.08) 50%, rgba(255,255,255,.04) 100%);
            background-size:600px 100%; animation:shimmer 1.6s infinite linear; border-radius:6px; }
.skeleton-row { height:44px; margin-bottom:2px; border-radius:4px; }
.skeleton-card { height:90px; border-radius:18px; margin-bottom:12px; }
.skeleton-text { height:12px; border-radius:4px; margin-bottom:8px; }
.skeleton-text.w60 { width:60%; }
.skeleton-text.w40 { width:40%; }
.skeleton-text.w80 { width:80%; }

/* ── PAGE TRANSITIONS — défini en haut, pas ici ── */

/* ── ROLE BADGES ─────────────────────────────── */
.role-badge { display:inline-flex; align-items:center; gap:5px; padding:4px 12px; border-radius:999px; font-size:.65rem; font-weight:700; letter-spacing:.8px; font-family:var(--title); }
.role-badge.role-visitor { background:rgba(92,88,80,.12); color:var(--muted); border:1px solid rgba(92,88,80,.2); }
.role-badge.role-member  { background:rgba(156, 163, 175, .12); color:var(--accent2); border:1px solid rgba(156, 163, 175, .22); }
.role-badge.role-paid    { background:rgba(255,193,7,.12); color:var(--yellow); border:1px solid rgba(255,193,7,.25); }
.role-badge.role-vip     { background:rgba(0,255,136,.1); color:var(--green); border:1px solid rgba(0,255,136,.22); }
.role-badge.role-admin   { background:rgba(255,51,102,.1); color:var(--red); border:1px solid rgba(255,51,102,.22); }

/* ── FORM IMPROVEMENTS ───────────────────────── */
.form-group.floating { position:relative; margin-top:14px; }
.form-group.floating .form-input { padding-top:20px; padding-bottom:6px; }
.form-group.floating label { position:absolute; top:50%; left:12px; transform:translateY(-50%);
                              font-size:.78rem; color:var(--muted); pointer-events:none;
                              transition:var(--transition); }
.form-group.floating .form-input:focus ~ label,
.form-group.floating .form-input:not(:placeholder-shown) ~ label {
  top:8px; transform:none; font-size:.6rem; color:var(--accent); letter-spacing:1px; }
.form-input:focus, .form-select:focus {  box-shadow:0 0 0 3px rgba(156, 163, 175, .12), 0 0 20px rgba(156, 163, 175, .06); }
.form-input.is-valid   { border-color:var(--green); }
.form-input.is-invalid { border-color:var(--red); }
.field-feedback { font-size:.65rem; margin-top:4px; padding:0 4px; }
.field-feedback.valid   { color:var(--green); }
.field-feedback.invalid { color:var(--red); }

/* ── COUNT-UP ANIMATION ──────────────────────── */
@keyframes countUpPop { 0%{transform:scale(.92);opacity:.5} 60%{transform:scale(1.04)} 100%{transform:scale(1);opacity:1} }
.count-up { animation:countUpPop .55s cubic-bezier(0.16,1,0.3,1) both; }

/* ── ERROR STATE ─────────────────────────────────────────────── */
.error-state { display:flex; flex-direction:column; align-items:center; justify-content:center;
               padding:36px 20px; text-align:center; }
.error-state-icon { font-size:2.4rem; margin-bottom:14px; opacity:.7; }
.error-state-title { font-family:var(--title); font-size:.82rem; color:var(--red); letter-spacing:1px; margin-bottom:8px; }
.error-state-msg { font-size:.75rem; color:var(--muted); line-height:1.6; margin-bottom:18px; max-width:320px; }
.error-state-btn { padding:9px 22px; background:rgba(255,51,102,.1); border:1px solid rgba(255,51,102,.3);
                   color:var(--red); border-radius:999px; cursor:pointer; font-family:var(--font);
                   font-size:.75rem; transition:var(--transition); }
.error-state-btn:hover { background:rgba(255,51,102,.18); transform:translateY(-1px); }

/* ── EMPTY STATE ─────────────────────────────────────────────── */
.empty-state { display:flex; flex-direction:column; align-items:center; justify-content:center;
               padding:40px 20px; text-align:center; }
.empty-state-icon { font-size:2.6rem; margin-bottom:14px; opacity:.55; }
.empty-state-title { font-family:var(--title); font-size:.8rem; color:var(--muted); letter-spacing:1.2px; margin-bottom:8px; }
.empty-state-msg { font-size:.74rem; color:var(--muted); line-height:1.6; max-width:300px; opacity:.75; }

/* ── SKELETON KPI CARDS ──────────────────────────────────────── */
.stat-card.is-loading .val { visibility:hidden; }
.stat-card.is-loading::before { background:none; }
.stat-card.is-loading .sk-overlay { display:block !important; }
.sk-overlay { display:none; position:absolute; inset:18px; pointer-events:none; }
.sk-val { height:28px; width:70%; border-radius:6px; margin-bottom:10px; }
.sk-lbl { height:10px; width:50%; border-radius:4px; }
.sk-td { display:inline-block; height:11px; border-radius:4px; background:linear-gradient(90deg,rgba(255,255,255,.04) 0%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 100%); background-size:600px 100%; animation:shimmer 1.6s infinite linear; }
.sk-loading-block { padding:32px 16px; display:flex; flex-direction:column; gap:10px; }
.sk-loading-block .skeleton-text { margin-bottom:0; }

/* ── SKELETON NEWS ───────────────────────────────────────────── */
.news-skeleton-item { display:flex; flex-direction:column; gap:7px; padding:14px 16px;
                      border-bottom:1px solid rgba(26,48,80,.35); }

/* ── TICKER SCROLLING ────────────────────────── */
.ticker {
  background:linear-gradient(135deg, rgba(14,14,16,.92), rgba(12,18,28,.88));
  border:1px solid rgba(156, 163, 175, .15);
  border-radius:16px;
  padding:20px 24px;
  overflow:hidden;
  grid-column:1 / -1;
  margin:0 0 18px 0;
  width:100%;
  box-shadow:0 8px 32px rgba(0,0,0,.3), inset 0 1px 0 rgba(156, 163, 175, .1);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.ticker-track {
  display:inline-flex;
  gap:100px;
  animation:ticker 65s linear infinite;
  will-change:transform;
}
@keyframes ticker { from{transform:translateX(0)} to{transform:translateX(-50%)} }
.t-item {
  font-family:var(--font);
  font-size:.85rem;
  color:var(--muted);
  letter-spacing:.3px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:3px;
  white-space:nowrap;
  padding:12px 16px;
  border-radius:8px;
  background:rgba(255,255,255,.05);
  border:1px solid rgba(156, 163, 175, .12);
  transition:.3s ease;
  flex-shrink:0;
  min-width:120px;
}
.t-item:hover { background:rgba(156, 163, 175, .10); border-color:rgba(156, 163, 175, .24); }
.t-item .sym { color:var(--accent); font-weight:700; letter-spacing:.4px; text-transform:uppercase; font-size:.9rem; }
.t-item .up  { color:var(--green); font-weight:600; font-size:.82rem; }
.t-item .dn  { color:var(--red); font-weight:600; font-size:.82rem; }

/* ─── INSTITUTIONAL FLOWS ─── */
.institutional-card {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  padding: 10px 12px;
  border-radius: 8px;
  font-size: .75rem;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.institutional-card .card-title {
  color: var(--accent);
  font-weight: 700;
  font-size: .7rem;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.institutional-card .card-value {
  font-size: .85rem;
  font-weight: 700;
}
.institutional-card.extreme-high {
  border-color: rgba(63,63,70,.4);
  background: rgba(63,63,70,.05);
}
.institutional-card.extreme-low {
  border-color: rgba(63,63,70,.4);
  background: rgba(63,63,70,.05);
}

/* --- bloc 2 --- */
:root {
    --bg: #18181A;
    --panel: #272729;
    --card: #303032;
    --border: #404043;
    --accent: #2563eb;
    --accent2: #34d399;
    --green: #34d399;
    --red: #ef4444;
    --yellow: #eab308;
    --text: #f3f4f6;
    --muted: #6b7280;
  }

  /* body gradients removed — DropTab flat style */

  body::before {
    content: "";
    position: fixed;
    inset: -30% -10%;
    pointer-events: none;
    z-index: -1;
    background:
      radial-gradient(circle at 20% 20%, #30e7da18 0%, transparent 30%),
      radial-gradient(circle at 70% 30%, #7d7dff14 0%, transparent 28%),
      radial-gradient(circle at 50% 70%, #ffbf5711 0%, transparent 24%);
    filter: blur(30px);
    animation: v2AuraDrift 16s ease-in-out infinite alternate;
  }

  @keyframes v2AuraDrift {
    0% { transform: translate3d(-1%, -1%, 0) scale(1); }
    100% { transform: translate3d(1.2%, 1%, 0) scale(1.04); }
  }

  header,
  nav,
  .stat-card,
  .panel,
  .form-panel,
  .table-scroll,
  .card,
  .admin-card,
  .chart-box {
    border-color: var(--border-subtle) !important;
    background: var(--bg-surface) !important;
    box-shadow: var(--shadow-md) !important;
    backdrop-filter: blur(8px);
  }

  .nav-btn.active,
  .btn-primary,
  .btn-blue {
    border-color: #335084 !important;
  }

  .tab,
  .stats-grid,
  .dashboard-columns {
    animation: fadeSlideIn .25s ease;
  }

  .stat-sparkline {
    max-height: 40px;
    margin-top: 0.5rem;
    opacity: 0.8;
  }

/* --- bloc 3 --- */
.nav-page-btn{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:18px;padding:22px;cursor:pointer;transition:.22s ease;text-align:left;width:100%;box-shadow:0 4px 12px rgba(0,0,0,.14)}
.nav-page-btn:hover{border-color:rgba(156, 163, 175, .35);background:var(--bg-tertiary);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.2)}
.nav-page-btn[data-tier-required="paid"]{position:relative}
.nav-page-btn[data-tier-required="paid"].tier-locked{opacity:0.65;cursor:not-allowed;pointer-events:none}
.nav-page-btn[data-tier-required="paid"].tier-locked::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:40px;display:flex;align-items:center;justify-content:center;opacity:0.8}

/* --- bloc 4 --- */
#tab-charts.active { padding:0 !important; max-width:100% !important; }
#tab-morning_brief.active { padding:0 !important; max-width:100% !important; }

/* ── ARC GAUGE — composant pur CSS ──────────────────────────────
   Usage: <div class="apex-gauge" style="--v:68;--c:#34d399"></div>
   --v = score 0-100 | --c = couleur (vert/rouge/ambre auto si omis)
   ─────────────────────────────────────────────────────────────── */
.apex-gauge-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  position: relative;
}
.apex-gauge {
  --v: 50;
  --c: #2563eb;
  --deg: calc(var(--v) * 1.8deg);
  position: relative;
  width: 120px;
  height: 60px;
  overflow: hidden;
}
.apex-gauge::before {
  content: '';
  position: absolute;
  inset: 0 0 -100% 0;
  border-radius: 120px 120px 0 0;
  background: conic-gradient(
    from 180deg,
    var(--c) 0deg,
    var(--c) var(--deg),
    rgba(255,255,255,.06) var(--deg),
    rgba(255,255,255,.06) 180deg
  );
}
.apex-gauge::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80px;
  height: 40px;
  background: var(--bg-secondary, #111113);
  border-radius: 80px 80px 0 0;
}
.apex-gauge-val {
  position: absolute;
  bottom: 2px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -1px;
  color: #fafafa;
  z-index: 2;
  line-height: 1;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.apex-gauge-label {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #52525b;
}
/* Taille compacte pour sidebar / petits espaces */
.apex-gauge.sm {
  width: 80px;
  height: 40px;
}
.apex-gauge.sm::after { width: 54px; height: 28px; }
.apex-gauge.sm + .apex-gauge-val { font-size: 15px; }

/* ── Popups centrés Charts (Watchlist + Alertes) ── */
.csp-centered-popup {
  display: none;
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 420px; max-height: 580px;
  background: #0e0e10;
  border: 1px solid rgba(63,63,70,.25);
  border-radius: 12px;
  box-shadow: 0 24px 64px rgba(0,0,0,.8);
  flex-direction: column;
  overflow: hidden;
  z-index: 1000;
  animation: cspFadeIn .18s ease;
}
.csp-centered-popup.csp-open { display:flex; }
@keyframes cspFadeIn { from { opacity:0; transform:translate(-50%,-50%) scale(.96); } to { opacity:1; transform:translate(-50%,-50%); } }

/* ── Spinner de chargement global ── */
@keyframes apexSpin { to { transform: rotate(360deg); } }
.apex-spin { display:inline-block; width:18px; height:18px; border:2px solid rgba(63,63,70,.15); border-top-color:#9ca3af; border-radius:50%; animation:apexSpin .7s linear infinite; flex-shrink:0; }
.apex-spin.sm { width:13px; height:13px; border-width:1.5px; }
.apex-loading { display:flex; align-items:center; justify-content:center; gap:9px; color:var(--muted); font-size:.75rem; font-family:var(--title); letter-spacing:.5px; }
.csp-centered-header { display:flex; align-items:center; justify-content:space-between; padding:0 12px 0 16px; border-bottom:1px solid rgba(255,255,255,.07); flex-shrink:0; min-height:46px; background:rgba(255,255,255,.015); }
.csp-centered-title { display:flex; align-items:center; gap:7px; color:var(--accent); font-family:var(--title); font-size:.65rem; letter-spacing:1.5px; }
.csp-centered-title svg { width:13px; height:13px; }
.csp-close-btn { padding:6px 8px; background:none; border:none; color:var(--muted); cursor:pointer; transition:.15s; display:flex; align-items:center; border-radius:6px; }
.csp-close-btn:hover { color:var(--text); background:rgba(255,255,255,.06); }
.csp-close-btn svg { width:14px; height:14px; }
.csp-action-btn { background:#272729; border:1px solid rgba(63,63,70,.2); border-radius:7px; color:#d1d5db; font-size:.6rem; padding:4px 10px; cursor:pointer; font-family:var(--title); letter-spacing:1px; transition:.15s; white-space:nowrap; }
.csp-action-btn:hover { background:rgba(63,63,70,.16); }
@media (max-width:600px) { .csp-centered-popup { width:calc(100vw - 24px); } }


/* --- bloc 5 --- */
.expert-live-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:12px}
  .expert-live-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 14px;border-top:2px solid rgba(63,63,70,.35)}
  .expert-live-label{font-size:.56rem;color:var(--muted);letter-spacing:1.2px;text-transform:uppercase;margin-bottom:5px}
  .expert-live-value{font-family:var(--title);font-size:1.15rem;font-weight:900;color:var(--text);line-height:1}
  .expert-live-sub{font-size:.6rem;color:var(--muted);margin-top:3px}

/* --- bloc 6 --- */
.signal-tab-btn {
  padding: 10px 20px;
  background: transparent;
  border: none;
  color: #aaa;
  cursor: pointer;
  font-size: 13px;
  border-bottom: 2px solid transparent;
  transition: all 0.2s;
}

.signal-tab-btn.active {
  color: var(--accent);
  }

.signal-tab-btn:hover {
  color: var(--accent);
}

.signal-tab-btn:focus {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}

.signal-tab-content {
  display: none;
}

.signal-tab-content.active {
  display: block;
}

/* ── HOVER MICRO-INTERACTIONS ──────────────────── */
.card {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 15px 40px rgba(156, 163, 175, 0.2);
  border-color: var(--color-cyan);
}

.stat-card {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.stat-card:hover {
  transform: translateY(-3px);
  border-color: rgba(156, 163, 175, .35);
  background: var(--bg-tertiary);
  box-shadow: var(--shadow-lg);
}

.btn, .btn-primary {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.btn:hover, .btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 0 25px rgba(156, 163, 175, 0.6);
  filter: brightness(1.1);
}

.btn:active, .btn-primary:active {
  transform: translateY(1px);
  filter: brightness(0.92);
  opacity: .88;
}

.nav-link:hover {
  background: rgba(156, 163, 175, 0.2);
  padding-left: 1.25rem;
  transition: all 0.2s ease;
}

/* Price card hover effect */
.price-card:hover {
  border-color: var(--color-cyan);
  box-shadow: 0 0 15px rgba(156, 163, 175, 0.3);
}

/* Table row hover with smooth effect */
table tbody tr:hover td {
  background: var(--bg-surface) !important;
}

/* --- bloc 7 --- */
/* ═══ COT v4 — MATRICE IA INSTITUTIONNELLE ═══ */
.cot4-wrap { width:100%; padding:0 2px; }

/* ── Header Synthèse IA ── */
.cot4-header {
  border-radius:14px; padding:20px 24px; margin-bottom:20px;
  position:relative; overflow:hidden;
}
.cot4-header.risque-on  { background:#303032;  border:1px solid rgba(63,63,70,.3); }
.cot4-header.risque-off { background:#303032;   border:1px solid rgba(63,63,70,.4); }
.cot4-header.mixte      { background:#303032;  border:1px solid rgba(63,63,70,.3); }
.cot4-header.transition { background:#303032;  border:1px solid rgba(63,63,70,.3); }
.cot4-header-top { display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:12px; margin-bottom:12px; }
.cot4-titre { font-family:var(--title); font-size:1.2rem; letter-spacing:.04em; color:var(--text); }
.cot4-sous-titre { font-size:.68rem; color:var(--muted); margin-top:3px; letter-spacing:.02em; }
.cot4-biais-badge { display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
.cot4-biais-val { font-family:var(--title); font-size:1.4rem; letter-spacing:.06em; }
.cot4-biais-val.risque-on  { color:#34d399; }
.cot4-biais-val.risque-off { color:#ef4444; }
.cot4-biais-val.mixte      { color:#d1d5db; }
.cot4-biais-val.transition { color:#d1d5db; }
.cot4-date-chip { font-size:.58rem; padding:3px 10px; border-radius:20px; background:rgba(255,255,255,.06); color:var(--muted); border:1px solid var(--border); }
.cot4-narrative { font-size:.72rem; color:var(--text); line-height:1.65; opacity:.9; }
.cot4-header-footer { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-top:14px; padding-top:12px; border-top:1px solid rgba(255,255,255,.06); }
.cot4-kpi { text-align:center; }
.cot4-kpi-label { font-size:.55rem; color:var(--muted); letter-spacing:.06em; margin-bottom:3px; }
.cot4-kpi-val { font-family:var(--title); font-size:.8rem; }
.cot4-kpi-val.pos { color:#34d399; }
.cot4-kpi-val.neg { color:#ef4444; }
.cot4-kpi-val.neu { color:#9ca3af; }
.cot4-ia-badge { font-size:.55rem; padding:3px 8px; border-radius:4px; background:rgba(63,63,70,.15); color:#d1d5db; border:1px solid rgba(63,63,70,.3); letter-spacing:.05em; }

/* ── Alertes directives ── */
.cot4-directives { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:10px; margin-bottom:20px; }
.cot4-directive-card { background:#303032; border:1px solid rgba(63,63,70,.2); border-radius:10px; padding:12px 16px; display:flex; align-items:flex-start; gap:10px; }
.cot4-directive-card.green  { background:#272729;  border:1px solid rgba(63,63,70,.2);  }
.cot4-directive-card.red    { background:#272729;    border:1px solid rgba(63,63,70,.3);   }
.cot4-directive-card.yellow { background:#272729;   border:1px solid rgba(63,63,70,.2);  }
.cot4-directive-card.cyan   { background:rgba(156, 163, 175, .08);    border:1px solid rgba(156, 163, 175, .2);   }
.cot4-directive-icon { font-size:1.1rem; flex-shrink:0; margin-top:1px; }
.cot4-directive-text { font-size:.68rem; color:var(--text); line-height:1.5; }
.cot4-directive-label { font-size:.58rem; letter-spacing:.06em; color:var(--muted); margin-bottom:3px; font-family:var(--title); }

/* ── Navigation pôles ── */
.cot4-nav { display:flex; gap:8px; margin-bottom:20px; flex-wrap:wrap; }
.cot4-nav-btn { padding:9px 22px; border-radius:10px; cursor:pointer; font-size:.68rem; font-family:var(--title); letter-spacing:.06em; border:1px solid var(--border); background:var(--card); color:var(--muted); transition:.15s; display:flex; align-items:center; gap:6px; }
.cot4-nav-btn:hover { color:var(--accent); }
.cot4-nav-btn.active { background:#272729; color:var(--accent); }
.cot4-nav-signal { font-size:.52rem; padding:2px 7px; border-radius:10px; font-weight:700; }
.cot4-nav-signal.green  { background:#3a3a3e; color:#34d399; }
.cot4-nav-signal.red    { background:rgba(63,63,70,.2);  color:#ef4444; }
.cot4-nav-signal.yellow { background:#3a3a3e; color:#d1d5db; }
.cot4-nav-signal.cyan   { background:rgba(156, 163, 175, .2);  color:#d1d5db; }

/* ── Panes ── */
.cot4-pane { display:none; }
.cot4-pane.active { display:block; }

/* ── ETF Flux Chart ── */
.cot4-etf-section { margin-bottom:20px; }
.cot4-etf-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; flex-wrap:wrap; gap:10px; }
.cot4-etf-title { font-family:var(--title); font-size:.75rem; letter-spacing:.06em; color:var(--text); }
.cot4-etf-kpis { display:flex; gap:16px; }
.cot4-etf-kpi { text-align:right; }
.cot4-etf-kpi-label { font-size:.55rem; color:var(--muted); }
.cot4-etf-kpi-val { font-family:var(--title); font-size:.78rem; }
.cot4-etf-toggle { display:flex; gap:4px; }
.cot4-etf-toggle button { padding:4px 10px; font-size:.6rem; border-radius:6px; cursor:pointer; border:1px solid var(--border); background:var(--card); color:var(--muted); }
.cot4-etf-toggle button.active { background:#303032;  color:var(--accent); }
.cot4-etf-chart-wrap { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:16px; }

/* ── Asset cards ── */
.cot4-assets-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px; margin-bottom:20px; }
.cot4-asset-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:18px; transition:.2s; }
.cot4-asset-card:hover { border-color:rgba(63,63,70,.25); }
.cot4-card-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:4px; }
.cot4-card-name { font-family:var(--title); font-size:.9rem; letter-spacing:.05em; }
.cot4-card-subtitle { font-size:.6rem; color:var(--muted); margin-bottom:12px; }
.cot4-signal-badge { padding:3px 10px; border-radius:20px; font-size:.58rem; font-family:var(--title); letter-spacing:.06em; font-weight:700; flex-shrink:0; text-transform:uppercase; }
.cot4-signal-badge.green  { background:rgba(52,211,153,.12); color:#34d399; border:1px solid rgba(52,211,153,.25); }
.cot4-signal-badge.red    { background:rgba(239,68,68,.12);  color:#ef4444; border:1px solid rgba(239,68,68,.25); }
.cot4-signal-badge.yellow { background:rgba(250,204,21,.10); color:#facc15; border:1px solid rgba(250,204,21,.22); }
.cot4-signal-badge.cyan   { background:rgba(37,99,235,.12); color:#6ba3e8; border:1px solid rgba(37,99,235,.25); }

/* ── Signal badges universels (BULLISH / BEARISH / NEUTRAL) ── */
.sig-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  white-space: nowrap;
}
.sig-badge::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  flex-shrink: 0;
}
.sig-bullish, .sig-badge.bullish {
  background: rgba(52,211,153,.10);
  color: #34d399;
  border: 1px solid rgba(52,211,153,.22);
}
.sig-bullish::before, .sig-badge.bullish::before { background: #34d399; box-shadow: 0 0 4px #34d399; animation: pulse 2s infinite; }
.sig-bearish, .sig-badge.bearish {
  background: rgba(239,68,68,.10);
  color: #ef4444;
  border: 1px solid rgba(239,68,68,.22);
}
.sig-bearish::before, .sig-badge.bearish::before { background: #ef4444; box-shadow: 0 0 4px #ef4444; }
.sig-neutral, .sig-badge.neutral {
  background: rgba(250,204,21,.08);
  color: #facc15;
  border: 1px solid rgba(250,204,21,.18);
}
.sig-neutral::before, .sig-badge.neutral::before { background: #facc15; }

/* badge-bullish / badge-bearish (compat anciens selectors) */
.badge-bullish { background:rgba(52,211,153,.10); color:#34d399; border:1px solid rgba(52,211,153,.22); }
.badge-bearish { background:rgba(239,68,68,.10); color:#ef4444; border:1px solid rgba(239,68,68,.22); }
.badge-neutral { background:rgba(250,204,21,.08); color:#facc15; border:1px solid rgba(250,204,21,.18); }

/* Barres positionnement */
.cot4-pos-grid { display:grid; grid-template-columns:70px 1fr 75px; gap:6px; align-items:center; margin-bottom:6px; }
.cot4-pos-label { font-size:.58rem; color:var(--muted); letter-spacing:.04em; }
.cot4-pos-bar { height:5px; background:rgba(255,255,255,.06); border-radius:3px; overflow:hidden; }
.cot4-pos-fill { height:100%; border-radius:3px; }
.cot4-pos-fill.g { background:linear-gradient(90deg,#34d399,#34d399); }
.cot4-pos-fill.r { background:linear-gradient(90deg,#ef4444,#f87171); }
.cot4-pos-fill.c { background:linear-gradient(90deg,#2563eb,#2563eb); }
.cot4-pos-fill.y { background:linear-gradient(90deg,#f59e0b,#fbbf24); }
.cot4-pos-val { font-size:.65rem; font-family:var(--title); text-align:right; }
.cot4-pos-val.pos { color:#34d399; }
.cot4-pos-val.neg { color:#ef4444; }
.cot4-pos-val.neu { color:#9ca3af; }

/* Delta semaine */
.cot4-split { margin: 10px 0 6px; }
.cot4-split-labels { display:flex; justify-content:space-between; margin-bottom:5px; font-size:8px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.cot4-split-long-lbl { color:#34d399; }
.cot4-split-short-lbl { color:#ef4444; }
.cot4-split-track { display:flex; height:3px; border-radius:2px; overflow:hidden; background:rgba(255,255,255,.04); gap:1px; }
.cot4-split-long { background:#34d399; opacity:.65; border-radius:2px 0 0 2px; transition:width .5s cubic-bezier(0.4,0,0.2,1); }
.cot4-split-short { background:#ef4444; opacity:.65; border-radius:0 2px 2px 0; transition:width .5s cubic-bezier(0.4,0,0.2,1); }
.cot4-delta-row { display:flex; justify-content:space-between; padding:10px 0 0; border-top:1px solid rgba(255,255,255,.04); margin-top:8px; }
.cot4-delta-item { text-align:center; }
.cot4-delta-label { font-size:.52rem; color:var(--muted); margin-bottom:2px; }
.cot4-delta-val { font-size:.65rem; font-family:var(--title); }

/* Narrative IA */
.cot4-ia-narrative { background:#303032; border:1px solid rgba(63,63,70,.2); margin-top:12px; padding:10px 12px; border-radius:8px; background:rgba(63,63,70,.04); border-left:2px solid rgba(63,63,70,.3); font-size:.65rem; color:var(--muted); line-height:1.6; }
.cot4-ia-narrative strong { color:var(--text); }

/* Pôle narrative card */
.cot4-pole-narrative { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:18px; margin-bottom:16px; }
.cot4-pole-theme { font-family:var(--title); font-size:.72rem; letter-spacing:.06em; color:var(--accent); margin-bottom:8px; }
.cot4-pole-text { font-size:.7rem; color:var(--text); line-height:1.65; }
.cot4-pole-directive { margin-top:12px; padding:10px 12px; border-radius:8px; font-size:.65rem; color:var(--muted); border:1px dashed rgba(255,255,255,.1); }
.cot4-pole-directive::before { content:"▶ "; color:var(--accent); }

/* Popups ⓘ COT */
.cot4-info-btn { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border-radius:50%; background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.4); color:#38bdf8; font-size:.62rem; cursor:pointer; padding:0; margin-left:4px; vertical-align:middle; transition:background .15s, border-color .15s; line-height:1; }
.cot4-info-btn:hover { background:rgba(56,189,248,.28); border-color:#38bdf8; color:#fff; }
.cot4-info-popup { display:none; position:fixed; z-index:9999; max-width:360px; width:360px; background:#111827; border:1px solid rgba(63,63,70,.3); border-radius:12px; padding:16px 18px; box-shadow:0 12px 40px rgba(0,0,0,.7); font-size:.67rem; color:var(--text); line-height:1.65; pointer-events:none; max-height:80vh; overflow-y:auto; }
.cot4-info-popup.visible { display:block; }
.cot4-info-popup .pop-title { color:var(--accent); display:block; margin-bottom:8px; font-size:.72rem; font-family:var(--title); letter-spacing:.04em; border-bottom:1px solid rgba(63,63,70,.15); padding-bottom:6px; }
.cot4-info-popup .pop-body { white-space:pre-line; }
.cot4-info-popup .pop-example { margin-top:10px; padding:8px 10px; border-radius:6px; background:rgba(63,63,70,.06); border-left:2px solid rgba(63,63,70,.3); color:var(--muted); font-size:.63rem; white-space:pre-line; }
.cot4-info-popup .pop-example::before { content:"💡 Exemple · "; color:var(--accent); font-weight:600; }

/* Loading */
.cot4-loading { text-align:center; padding:80px 20px; color:var(--muted); }
.cot4-loading-spinner { font-size:2rem; animation:cot4spin 1s linear infinite; display:inline-block; margin-bottom:12px; }
@keyframes cot4spin { to { transform:rotate(360deg); } }

/* ETF chart total bar */
.cot4-etf-total { display:flex; gap:20px; margin-top:12px; }
.cot4-etf-total-item { display:flex; align-items:center; gap:6px; font-size:.65rem; }
.cot4-etf-total-dot { width:10px; height:10px; border-radius:2px; flex-shrink:0; }

/* --- bloc 8 --- */
.opt-card { background:var(--card); border:1px solid var(--border); border-radius:14px; padding:20px; }
.opt-card-title { font-family:var(--title); font-size:.7rem; letter-spacing:2px; color:var(--muted); margin-bottom:4px; text-transform:uppercase; }
.opt-big-value { font-family:var(--title); font-size:2.2rem; font-weight:700; line-height:1; }
.opt-badge { display:inline-block; padding:3px 10px; border-radius:99px; font-size:.65rem; font-weight:700; letter-spacing:1px; }
.opt-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.opt-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; }
.opt-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.opt-sep { height:1px; background:var(--border); margin:16px 0; }
.opt-gauge-wrap { position:relative; width:120px; height:70px; margin:0 auto; }
.opt-currency-btn { padding:8px 20px; border-radius:8px; border:1px solid var(--border); background:transparent; color:var(--muted); cursor:pointer; font-family:var(--font); font-size:.75rem; font-weight:700; transition:.2s; }
.opt-currency-btn.active { background:var(--accent); color:var(--bg);  }
.opt-regime-chip { padding:6px 14px; border-radius:99px; font-size:.72rem; font-weight:700; letter-spacing:1px; }
.opt-subtab-bar { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px; }
.opt-subtab-btn { padding:7px 18px; border-radius:8px; border:1px solid var(--border); background:var(--card); color:var(--muted); font-size:.68rem; cursor:pointer; font-family:var(--title); letter-spacing:1px; transition:.15s; }
.opt-subtab-btn.active {  color:var(--accent); background:#272729; }
.opt-subtab-pane { display:none; }
.opt-subtab-pane.active { display:block; }
.opt-info-btn { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border-radius:50%; background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.4); color:#38bdf8; font-size:.62rem; cursor:pointer; margin-left:5px; vertical-align:middle; font-style:normal; transition:background .15s, border-color .15s; }
.opt-info-btn:hover { background:rgba(56,189,248,.28); border-color:#38bdf8; color:#fff; }
.opt-info-popup { position:fixed; z-index:9999; background:#0d1b2a; border:1px solid rgba(63,63,70,.3); border-radius:12px; padding:16px; max-width:300px; box-shadow:0 16px 40px rgba(0,0,0,.5); }
.opt-info-popup-title { font-family:var(--title); font-size:.7rem; letter-spacing:1.5px; color:var(--accent); margin-bottom:8px; }
.opt-info-popup-body { font-size:.72rem; color:var(--text); line-height:1.6; }
.opt-info-popup-close { position:absolute; top:8px; right:10px; color:var(--muted); font-size:.8rem; cursor:pointer; background:none; border:none; }
@media(max-width:900px) { .opt-grid-3, .opt-grid-4 { grid-template-columns:1fr 1fr; } .opt-grid-2 { grid-template-columns:1fr; } }
@media(max-width:600px) { .opt-grid-3, .opt-grid-4 { grid-template-columns:1fr; } }

/* --- bloc 9 --- */
.vbd-kpi{background:var(--card);border-radius:8px;padding:12px 10px;text-align:center;border:1px solid var(--border)}
.vbd-kpi .kl{font-family:var(--title);font-size:.58rem;color:var(--muted);letter-spacing:2px;margin-bottom:4px}
.vbd-kpi .kv{font-size:1.3rem;font-weight:700;margin-bottom:2px}
.vbd-kpi .ks{font-size:.62rem;color:var(--muted)}
.vbd-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.04);font-size:.7rem}
.vbd-row:last-child{border-bottom:none}
.vbd-lbl{color:var(--muted);flex:1}
.vbd-val{font-weight:700;text-align:right}
.vbd-chip{font-size:.6rem;padding:2px 7px;border-radius:10px;font-weight:700}
@media(max-width:600px){ #vbd-kpi-grid{grid-template-columns:repeat(3,1fr)!important} #vbd-mkt-grid, #vbd-r-c-grid, #vbd-mc-unl-grid{grid-template-columns:1fr!important}}

/* --- bloc 10 --- */
/* ══ SETTINGS PAGE ══════════════════════════════════════════ */
.cfg-layout { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.cfg-card { background:var(--card); border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.cfg-card-header { padding:16px 20px; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:10px; background:linear-gradient(90deg,rgba(63,63,70,.04),transparent); }
.cfg-card-icon { width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:1rem; flex-shrink:0; }
.cfg-card-title { font-family:var(--title); font-size:.78rem; color:var(--accent); letter-spacing:2px; }
.cfg-card-body { padding:20px; }
.cfg-input-wrap { position:relative; margin-bottom:12px; }
.cfg-input-wrap label { display:block; font-size:.6rem; color:var(--muted); letter-spacing:1.5px; margin-bottom:5px; text-transform:uppercase; }
.cfg-input { width:100%; background:var(--panel); border:1px solid var(--border); border-radius:6px; padding:10px 14px; color:var(--text); font-family:var(--font); font-size:.8rem; outline:none; box-sizing:border-box; transition:.2s; }
.cfg-input:focus {  box-shadow:0 0 0 2px rgba(63,63,70,.1); }
.cfg-btn { width:100%; padding:11px; border-radius:6px; font-family:var(--font); font-size:.75rem; letter-spacing:1px; cursor:pointer; border:none; font-weight:700; transition:.2s; margin-bottom:8px; }
.cfg-btn-primary { background:var(--accent); color:var(--bg); }
.cfg-btn-primary:hover { opacity:.85; transform:translateY(-1px); }
.cfg-btn-outline { background:transparent; border:1px solid var(--border); color:var(--muted); }
.cfg-btn-outline:hover {  color:var(--accent); }
.cfg-btn-danger { background:transparent; border:1px solid var(--red); color:var(--red); }
.cfg-tab-switch { display:flex; background:var(--panel); border-radius:8px; padding:3px; margin-bottom:16px; gap:3px; }
.cfg-tab-btn { flex:1; padding:8px; border-radius:5px; border:none; cursor:pointer; font-family:var(--font); font-size:.7rem; letter-spacing:1px; font-weight:700; transition:.2s; background:transparent; color:var(--muted); }
.cfg-tab-btn.active { background:var(--accent); color:var(--bg); }
.cfg-divider { border:none; border-top:1px solid var(--border); margin:16px 0; }
.cfg-status-badge { display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:20px; font-size:.62rem; font-weight:700; letter-spacing:.5px; }
.ai-provider-btn { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border-radius:8px; border:1px solid var(--border); background:var(--panel); color:var(--muted); font-size:.7rem; font-family:var(--font); cursor:pointer; transition:.15s; font-weight:600; }
.ai-provider-btn:hover { border-color:rgba(63,63,70,.4); color:var(--text); }
.ai-provider-btn.active {  color:var(--accent); background:#272729; }
.ai-provider-badge { background:rgba(0,255,136,.2); color:var(--green); padding:1px 5px; border-radius:99px; font-size:.6rem; }
.cfg-status-on  { background:rgba(0,255,136,.12); color:var(--green); border:1px solid rgba(0,255,136,.25); }
.cfg-status-off { background:rgba(255,255,255,.05); color:var(--muted); border:1px solid var(--border); }
.cfg-profile-avatar { width:56px; height:56px; border-radius:50%; background:linear-gradient(135deg,var(--accent),var(--accent2)); display:flex; align-items:center; justify-content:center; font-size:1.4rem; font-weight:900; color:var(--bg); font-family:var(--title); flex-shrink:0; }
.pw-toggle { position:absolute; right:10px; top:50%; transform:translateY(-50%); background:none; border:none; color:var(--muted); cursor:pointer; font-size:.9rem; }
.pw-wrap { position:relative; }
.pw-wrap .cfg-input { padding-right:36px; }
.strength-dots { display:flex; gap:4px; margin-top:5px; }
.strength-dot { flex:1; height:3px; border-radius:2px; background:var(--panel); transition:.3s; }
.cfg-totp-qr { background:white; border-radius:8px; padding:10px; display:inline-block; }
.cfg-source-btn { display:flex; align-items:center; gap:10px; padding:12px 14px; border-radius:8px; border:1px solid var(--border); background:var(--panel); cursor:pointer; transition:.2s; width:100%; margin-bottom:8px; text-align:left; }
.cfg-source-btn.active {  background:rgba(63,63,70,.06); }
.cfg-source-btn:hover {  }
.cfg-source-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }

/* TVL Widget */
/* TVL styles moved to investor page */

@media(max-width:768px) {
  .cfg-layout { grid-template-columns:1fr; }
  .tvl-grid { grid-template-columns:repeat(2,1fr); }
}

/* --- bloc 11 --- */
.acct-tabs { display:flex; gap:3px; background:var(--panel); border-radius:10px; padding:4px; margin-bottom:18px; }
.acct-tab-btn { flex:1; padding:9px 4px; border-radius:7px; border:none; cursor:pointer; font-family:var(--font); font-size:.62rem; letter-spacing:1px; font-weight:700; transition:.2s; background:transparent; color:var(--muted); white-space:nowrap; }
.acct-tab-btn.active { background:var(--accent); color:var(--bg); }
.acct-tab-btn:hover:not(.active) { color:var(--text); }
.acct-panel { display:none; }
.acct-panel.active { display:block; }
.acct-section { background:var(--card); border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-bottom:12px; }
.acct-section-hd { padding:13px 16px; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:10px; background:linear-gradient(90deg,rgba(63,63,70,.03),transparent); }
.acct-section-body { padding:16px; }
.plan-card { border-radius:10px; padding:20px; text-align:center; margin-bottom:16px; border:2px solid var(--border); background:var(--bg-surface); transition:.3s; }
.plan-feature { display:flex; align-items:center; gap:8px; padding:7px 10px; background:var(--panel); border-radius:6px; font-size:.7rem; color:var(--text); margin-bottom:5px; }
.cfg-grid-layout { display:grid; grid-template-columns:1fr 260px; gap:18px; align-items:flex-start; }
.cfg-grid-side { position:sticky; top:60px; max-height:calc(100vh - 80px); overflow-y:auto; }
.cfg-side-block { background:rgba(156, 163, 175, .05); border:1px solid rgba(156, 163, 175, .15); border-radius:14px; padding:18px 16px; margin-bottom:16px; }
.cfg-side-title { font-family:var(--title); font-size:.7rem; color:var(--accent); letter-spacing:2px; margin-bottom:14px; font-weight:700; }
.cfg-stat-row { display:flex; justify-content:space-between; align-items:center; padding:8px 10px; background:rgba(255,255,255,.02); border-radius:8px; font-size:.72rem; color:var(--muted); }
.cfg-stat-row b { color:var(--accent); font-weight:700; }
.avatar-controls { display:flex; gap:6px; flex-wrap:wrap; }
.avatar-btn-mini { padding:6px 10px; border-radius:6px; border:1px solid var(--border); background:var(--panel); color:var(--muted); font-size:.62rem; cursor:pointer; transition:.2s; font-family:var(--font); letter-spacing:.5px; }
.avatar-btn-mini:hover {  color:var(--accent); }
.cfg-profile-avatar { position:relative; overflow:hidden; }
@media (max-width:960px) {
  .cfg-grid-layout { grid-template-columns:1fr !important; }
  .cfg-grid-side { position:static !important; max-height:none !important; overflow-y:visible !important; }
  .cfg-side-block { margin-bottom:12px; }
}

/* --- bloc 12 --- */
/* ══ RAPPORT IA ══════════════════════════════════════════════════ */
.rp-wrap { max-width:100%; margin:0 auto; padding:16px 0 80px; }
.rp-hero { text-align:center; padding:32px 16px 24px; }
.rp-hero-icon { font-size:2.6rem; margin-bottom:12px; }
.rp-hero-title { font-family:var(--title); font-size:1.25rem; color:var(--accent); letter-spacing:4px; margin-bottom:6px; }
.rp-hero-sub { font-size:.72rem; color:var(--muted); }
.rp-search-box { display:flex; gap:10px; max-width:520px; margin:24px auto 0; }
.rp-search-box input { flex:1; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:12px 16px; color:var(--text); font-family:var(--font); font-size:.85rem; outline:none; transition:.2s; }
.rp-search-box input:focus {  box-shadow:0 0 0 3px rgba(63,63,70,.1); }
.rp-search-box button { background:#3a3a3e; border:1px solid rgba(63,63,70,.4); border-radius:10px; color:var(--accent); font-family:var(--title); font-size:.75rem; padding:0 20px; cursor:pointer; letter-spacing:1px; transition:.2s; white-space:nowrap; }
.rp-search-box button:hover { background:rgba(63,63,70,.3); }
.rp-chips { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:14px; }
.rp-chip { background:rgba(63,63,70,.06); border:1px solid rgba(63,63,70,.18); border-radius:8px; padding:5px 14px; font-size:.7rem; color:var(--muted); cursor:pointer; transition:.2s; display:flex; align-items:center; gap:5px; }
.rp-chip img { width:16px; height:16px; border-radius:50%; }
.rp-chip:hover {  color:var(--text); background:#303032; }
/* Autocomplete */
.rp-autocomplete { position:relative; flex:1; }
.rp-ac-list { position:absolute; top:calc(100% + 4px); left:0; right:0; background:var(--card); border:1px solid var(--border); border-radius:10px; z-index:200; overflow:hidden; box-shadow:0 8px 24px rgba(0,0,0,.4); }
.rp-ac-item { display:flex; align-items:center; gap:10px; padding:9px 14px; cursor:pointer; transition:.15s; font-size:.8rem; }
.rp-ac-item:hover { background:#272729; }
.rp-ac-item img { width:22px; height:22px; border-radius:50%; }
.rp-ac-item .ac-sym { color:var(--accent); font-family:var(--title); font-size:.72rem; }
.rp-ac-item .ac-name { color:var(--muted); font-size:.7rem; }
/* Loading */
.rp-loading { padding:40px 16px; text-align:center; }
.rp-loading-title { font-family:var(--title); font-size:.85rem; color:var(--accent); letter-spacing:2px; margin-bottom:20px; }
.rp-steps { display:flex; flex-direction:column; gap:10px; max-width:380px; margin:0 auto; }
.rp-step { display:flex; align-items:center; gap:12px; padding:10px 14px; background:var(--card); border:1px solid var(--border); border-radius:10px; font-size:.75rem; color:var(--muted); transition:.4s; }
.rp-step.active {  color:var(--text); background:rgba(63,63,70,.05); }
.rp-step.done { border-color:rgba(63,63,70,.4); color:var(--green); background:rgba(63,63,70,.04); }
.rp-step .step-icon { font-size:1rem; width:22px; text-align:center; flex-shrink:0; }
.rp-spinner { display:inline-block; width:14px; height:14px; border:2px solid rgba(63,63,70,.2); border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; flex-shrink:0; }
/* Coin header */
.rp-coin-hdr { display:flex; align-items:center; gap:14px; padding:16px; background:var(--card); border:1px solid var(--border); border-radius:12px; margin-bottom:16px; }
.rp-coin-logo { width:52px; height:52px; border-radius:50%; background:var(--panel); flex-shrink:0; }
.rp-coin-name { font-family:var(--title); font-size:1.05rem; color:var(--text); }
.rp-coin-sym { font-size:.75rem; color:var(--accent); letter-spacing:1px; }
.rp-coin-price { font-size:1.1rem; font-family:var(--title); color:var(--text); margin-left:auto; text-align:right; }
.rp-coin-chg { font-size:.75rem; margin-top:2px; }
/* Score gauge */
.rp-score-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:20px 16px; margin-bottom:16px; display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.rp-gauge-wrap { position:relative; width:90px; height:90px; flex-shrink:0; }
.rp-gauge-svg { transform:rotate(-90deg); }
.rp-gauge-val { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.rp-gauge-num { font-family:var(--title); font-size:1.6rem; color:var(--text); line-height:1; }
.rp-gauge-lbl { font-size:.55rem; color:var(--muted); letter-spacing:1px; margin-top:2px; }
.rp-score-meta { flex:1; min-width:160px; }
.rp-score-verdict { font-family:var(--title); font-size:.95rem; margin-bottom:6px; }
.rp-score-resume { font-size:.72rem; color:var(--muted); line-height:1.55; }
/* Bars */
.rp-bars { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:16px; margin-bottom:16px; }
.rp-bars-title { font-family:var(--title); font-size:.75rem; color:var(--accent); letter-spacing:2px; margin-bottom:14px; }
.rp-bar-row { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.rp-bar-lbl { width:140px; font-size:.7rem; color:var(--muted); flex-shrink:0; }
.rp-bar-track { flex:1; height:8px; background:rgba(255,255,255,.06); border-radius:4px; overflow:hidden; }
.rp-bar-fill { height:100%; border-radius:4px; transition:width .8s ease; }
.rp-bar-score { width:32px; text-align:right; font-size:.7rem; color:var(--text); flex-shrink:0; }
/* Scenario cards */
.rp-scenarios { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:16px; }
.rp-scenario { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:16px; }
.rp-scenario-icon { font-size:1.3rem; margin-bottom:8px; }
.rp-scenario-label { font-family:var(--title); font-size:.72rem; letter-spacing:2px; margin-bottom:10px; }
.rp-scenario-prob { font-size:.68rem; color:var(--muted); margin-bottom:8px; }
.rp-scenario-desc { font-size:.72rem; color:var(--muted); line-height:1.55; }
.rp-scenario.bull { border-color:rgba(63,63,70,.35); background:rgba(63,63,70,.03); }
.rp-scenario.bull .rp-scenario-label { color:var(--green); }
.rp-scenario.base { border-color:rgba(63,63,70,.2); }
.rp-scenario.base .rp-scenario-label { color:var(--accent); }
.rp-scenario.bear { border-color:rgba(63,63,70,.25); background:rgba(63,63,70,.03); }
.rp-scenario.bear .rp-scenario-label { color:var(--red); }
/* Key levels */
.rp-levels { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:16px; margin-bottom:16px; }
.rp-levels-title { font-family:var(--title); font-size:.75rem; color:var(--accent); letter-spacing:2px; margin-bottom:12px; }
.rp-levels-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:10px; }
.rp-level-item { background:var(--panel); border-radius:8px; padding:10px 12px; text-align:center; }
.rp-level-type { font-size:.62rem; color:var(--muted); text-transform:uppercase; letter-spacing:1px; margin-bottom:4px; }
.rp-level-price { font-family:var(--title); font-size:.88rem; color:var(--text); }
.rp-level-item.support .rp-level-price { color:var(--green); }
.rp-level-item.resistance .rp-level-price { color:var(--red); }
.rp-level-item.entry .rp-level-price { color:var(--accent); }
.rp-level-item.target .rp-level-price { color:#d1d5db; }
/* Accordion agents */
.rp-accordion { margin-bottom:16px; display:flex; flex-direction:column; gap:8px; }
.rp-acc-item { background:var(--card); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.rp-acc-hdr { display:flex; align-items:center; gap:10px; padding:12px 16px; cursor:pointer; user-select:none; transition:.2s; }
.rp-acc-hdr:hover { background:rgba(63,63,70,.04); }
.rp-acc-icon { font-size:1rem; width:22px; flex-shrink:0; }
.rp-acc-name { font-family:var(--title); font-size:.75rem; color:var(--accent); flex:1; letter-spacing:1px; }
.rp-acc-score-badge { font-size:.68rem; padding:2px 10px; border-radius:99px; flex-shrink:0; }
.rp-acc-chev { font-size:.75rem; color:var(--muted); transition:.2s; flex-shrink:0; }
.rp-acc-item.open .rp-acc-chev { transform:rotate(180deg); }
.rp-acc-body { display:none; padding:0 16px 14px; font-size:.74rem; color:var(--muted); line-height:1.65; border-top:1px solid var(--border); padding-top:12px; }
.rp-acc-item.open .rp-acc-body { display:block; }
/* PDF button */
.rp-pdf-btn { display:flex; align-items:center; justify-content:center; gap:10px; width:100%; max-width:320px; margin:20px auto 0; padding:14px 0; background:#3a3a3e; border:1px solid rgba(63,63,70,.4); border-radius:12px; color:#e0d7ff; font-family:var(--title); font-size:.8rem; letter-spacing:2px; cursor:pointer; transition:.25s; }
.rp-pdf-btn:hover { background:rgba(63,63,70,.3); border-color:rgba(63,63,70,.6); }
.rp-pdf-btn:disabled { opacity:.4; cursor:not-allowed; }
/* Error */
.rp-error { background:rgba(63,63,70,.06); border:1px solid rgba(63,63,70,.25); border-radius:10px; padding:16px; margin-top:16px; font-size:.75rem; color:var(--red); text-align:center; }
@keyframes spin { to { transform:rotate(360deg); } }

/* ══ RAPPORT IA v2 — Premium UI ══════════════════════════════════════════════ */
.rp2-coin-hdr{display:flex;align-items:center;gap:14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;padding:18px 20px;margin-bottom:18px;}
.rp2-coin-logo{width:52px;height:52px;border-radius:50%;object-fit:contain;background:rgba(255,255,255,.04);border:1px solid var(--border);}
.rp2-coin-info{flex:1;min-width:0;}
.rp2-coin-name{font-family:var(--title);font-size:1.35rem;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.rp2-coin-sym{font-size:.82rem;color:var(--muted);font-weight:400;font-family:monospace;}
.rp2-rank-badge{font-size:.62rem;padding:2px 9px;border-radius:99px;background:rgba(156, 163, 175, .1);color:#d1d5db;font-family:monospace;letter-spacing:.5px;}
.rp2-price-block{text-align:right;flex-shrink:0;}
.rp2-coin-price{font-family:var(--title);font-size:1.7rem;font-weight:700;color:var(--text);}
.rp2-chg-badge{display:inline-block;margin-top:5px;padding:3px 10px;border-radius:99px;font-size:.72rem;font-weight:700;letter-spacing:.3px;}
.rp2-mcap-lbl{font-size:.64rem;color:var(--muted);margin-top:5px;}
/* Hero */
.rp2-hero{display:grid;grid-template-columns:170px 1fr;gap:14px;margin-bottom:18px;align-items:stretch;}
.rp2-gauge-box{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:22px 16px 18px;display:flex;flex-direction:column;align-items:center;gap:12px;}
.rp2-verdict-badge{padding:5px 14px;border-radius:99px;border:1px solid;font-family:var(--title);font-size:.68rem;letter-spacing:1.5px;font-weight:700;text-align:center;white-space:nowrap;}
.rp2-radar-box{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:14px 12px 4px;display:flex;flex-direction:column;align-items:center;flex:1;overflow:hidden;}
/* Dimension strip */
.rp2-dim-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px;}
.rp2-dim-card { background:#303032; border:1px solid rgba(63,63,70,.2);background:var(--bg-surface);border:1px solid rgba(255,255,255,.08);border-top:3px solid;border-radius:12px;padding:14px 10px 12px;text-align:center;transition:all .3s cubic-bezier(.4,0,.2,1);cursor:pointer;position:relative;overflow:hidden;}
.rp2-dim-card:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.15);box-shadow:0 12px 32px rgba(0,0,0,.3);background:var(--bg-tertiary);}
.rp2-dim-header{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;margin-bottom:8px;}
.rp2-dim-icon{font-size:1.15rem;margin-bottom:6px;}
.rp2-dim-score{font-family:var(--title);font-size:1.55rem;font-weight:700;line-height:1;margin-bottom:4px;}
.rp2-dim-lbl{font-size:.58rem;color:var(--muted);letter-spacing:1px;margin-bottom:9px;}
.rp2-dim-sparkline{display:block;width:100%;height:32px;margin:8px 0 10px;border:none;opacity:.8;transition:opacity .2s;}
.rp2-dim-card:hover .rp2-dim-sparkline{opacity:1;}
.rp2-dim-metrics{display:flex;justify-content:center;gap:8px;margin-top:8px;font-size:.6rem;flex-wrap:wrap;}
.rp2-metric-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 6px;background:rgba(255,255,255,.03);border-radius:6px;border:1px solid rgba(255,255,255,.06);}
.rp2-metric-label{color:var(--muted);font-size:.55rem;letter-spacing:.5px;text-transform:uppercase;}
.rp2-metric-val{font-family:monospace;font-weight:600;font-size:.62rem;color:var(--text);}
/* Dimension-specific border colors and glow effects */
.rp2-dim-card[data-dimension="technical"]{border-top-color:#9ca3af;}
.rp2-dim-card[data-dimension="technical"]:hover{box-shadow:0 12px 32px rgba(156, 163, 175, 0.2), 0 0 20px rgba(156, 163, 175, 0.15);}
.rp2-dim-card[data-dimension="fundamentals"]{border-top-color:#9ca3af;}
.rp2-dim-card[data-dimension="fundamentals"]:hover{box-shadow:0 12px 32px rgba(156, 163, 175, 0.2), 0 0 20px rgba(156, 163, 175, 0.15);}
.rp2-dim-card[data-dimension="tokenomics"]{border-top-color:#9ca3af;}
.rp2-dim-card[data-dimension="tokenomics"]:hover{box-shadow:0 12px 32px rgba(156, 163, 175, 0.2), 0 0 20px rgba(156, 163, 175, 0.15);}
.rp2-dim-card[data-dimension="community"]{border-top-color:#34d399;}
.rp2-dim-card[data-dimension="community"]:hover{box-shadow:0 12px 32px rgba(16, 185, 129, 0.2), 0 0 20px rgba(16, 185, 129, 0.15);}
.rp2-dim-card[data-dimension="sentiment"]{border-top-color:#d1d5db;}
.rp2-dim-card[data-dimension="sentiment"]:hover{box-shadow:0 12px 32px rgba(236, 72, 153, 0.2), 0 0 20px rgba(236, 72, 153, 0.15);}
/* Metric pulse animation on hover */
@keyframes dim-pulse{0%,100%{opacity:1;}50%{opacity:.7;}}
.rp2-dim-card:hover .rp2-metric-val{animation:dim-pulse 0.8s ease-in-out;}
.rp2-dim-bar{height:3px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden;}
.rp2-dim-fill{height:100%;border-radius:99px;transition:width 1.2s cubic-bezier(.4,0,.2,1);}
/* Verdict */
.rp2-verdict-box{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px;margin-bottom:18px;}
.rp2-verdict-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.rp2-verdict-label{font-family:var(--title);font-size:.95rem;font-weight:700;letter-spacing:1.5px;}
.rp2-pill{padding:3px 11px;border-radius:99px;font-family:var(--title);font-size:.63rem;letter-spacing:1px;}
.rp2-verdict-text{font-size:.79rem;color:var(--muted);line-height:1.7;}
/* Section title */
.rp2-section-title{font-family:var(--title);font-size:.7rem;color:var(--accent);letter-spacing:2px;margin-bottom:12px;}
/* Scenarios */
.rp2-scen-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px;}
.rp2-scen-card { background:#303032; border:1px solid rgba(63,63,70,.2);background:var(--card);border:1px solid var(--border);border-left:3px solid;border-radius:12px;padding:16px;}
.rp2-scen-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.rp2-scen-lbl{font-family:var(--title);font-size:.68rem;letter-spacing:1.5px;font-weight:700;}
.rp2-scen-prob{font-size:.64rem;color:var(--muted);background:rgba(255,255,255,.06);padding:2px 9px;border-radius:99px;}
.rp2-scen-pct{font-family:var(--title);font-size:1.8rem;font-weight:700;line-height:1.1;margin-bottom:6px;}
.rp2-scen-card.bull{border-left-color:#34d399;background:rgba(63,63,70,.03);}
.rp2-scen-card.base{border-left-color:#d1d5db;}
.rp2-scen-card.bear{border-left-color:#ef4444;background:rgba(63,63,70,.03);}
.rp2-scen-desc{font-size:.72rem;color:var(--muted);line-height:1.55;}
/* Price ladder */
.rp2-ladder{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:18px;}
.rp2-ladder-track{position:relative;height:64px;margin-top:6px;}
.rp2-ladder-bar{position:absolute;top:26px;left:5%;right:5%;height:2px;background:rgba(255,255,255,.1);border-radius:99px;}
.rp2-ladder-point{position:absolute;transform:translateX(-50%);text-align:center;}
.rp2-ladder-dot{width:12px;height:12px;border-radius:50%;margin:0 auto 0;border:2px solid rgba(8,15,30,1);}
.rp2-ladder-pip{width:2px;height:10px;margin:0 auto;opacity:.6;}
.rp2-ladder-price{font-family:monospace;font-size:.66rem;font-weight:700;white-space:nowrap;margin-top:2px;}
.rp2-ladder-plbl{font-size:.56rem;color:var(--muted);letter-spacing:.5px;white-space:nowrap;}
/* Catalysts & Risks */
.rp2-catrisks{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;}
.rp2-cat-box{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px;}
.rp2-cr-title{font-family:var(--title);font-size:.7rem;letter-spacing:1.5px;font-weight:700;margin-bottom:12px;}
.rp2-cr-row{display:flex;align-items:flex-start;gap:8px;font-size:.73rem;color:var(--muted);padding:6px 0;border-bottom:1px solid rgba(255,255,255,.04);line-height:1.5;}
.rp2-cr-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:5px;}
/* Detail tabs */
.rp2-tabs-wrap{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;margin-bottom:18px;}
.rp2-tab-btns{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px;border-bottom:1px solid var(--border);padding-bottom:14px;}
.rp2-tab-btn{padding:6px 14px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--muted);font-family:var(--title);font-size:.63rem;letter-spacing:1px;cursor:pointer;transition:.2s;}
.rp2-tab-btn:hover{color:var(--text);border-color:rgba(255,255,255,.2);}
.rp2-tab-btn.active{background:rgba(156, 163, 175, .08);}
.rp2-tab-panel{display:none;}
.rp2-tab-panel.active{display:block;animation:rp2-fadein .25s ease;}
@keyframes rp2-fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.rp2-tab-summary{font-size:.8rem;color:var(--text);line-height:1.75;margin-bottom:14px;padding:12px;background:rgba(255,255,255,.02);border-radius:8px;border-left:2px solid var(--accent);}
.rp2-tab-details{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;}
.rp2-detail-row{display:flex;align-items:flex-start;gap:8px;font-size:.73rem;color:var(--muted);line-height:1.5;}
.rp2-detail-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:5px;}
.rp2-flag-row{color:#f87171;}
.rp2-sub-scores{display:flex;flex-direction:column;gap:7px;padding-top:12px;border-top:1px solid var(--border);}
.rp2-sub-row{display:grid;grid-template-columns:90px 1fr 46px;align-items:center;gap:8px;}
.rp2-sub-lbl{font-size:.67rem;color:var(--muted);text-transform:capitalize;}
.rp2-sub-track{height:4px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden;}
.rp2-sub-fill{height:100%;border-radius:99px;transition:width 1s ease;}
.rp2-sub-val{font-size:.66rem;color:var(--muted);text-align:right;font-family:monospace;}
/* Quick Snapshot strip */
.rp2-snapshot-strip{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.rp2-snap-card{flex:1;min-width:100px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 14px;text-align:center;}
.rp2-snap-lbl{font-size:.55rem;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:6px;}
.rp2-snap-val{font-family:var(--title);font-size:.85rem;font-weight:700;color:var(--text);line-height:1.35;}
.rp2-snap-wide{flex:2;min-width:150px;}
/* Risk Assessment */
.rp2-risk-box{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;margin-bottom:18px;}
.rp2-risk-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.rp2-risk-badge{padding:6px 16px;border-radius:99px;border:1.5px solid;font-family:var(--title);font-size:.72rem;letter-spacing:1.5px;font-weight:700;}
.rp2-risk-verdict{font-size:.77rem;color:var(--muted);line-height:1.65;flex:1;}
.rp2-risk-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;}
.rp2-risk-metric{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:12px;text-align:center;}
.rp2-risk-metric-val{font-family:var(--title);font-size:1.2rem;font-weight:700;color:var(--text);margin-bottom:4px;}
.rp2-risk-metric-lbl{font-size:.54rem;color:var(--muted);letter-spacing:1px;}
.rp2-risk-checklist{display:flex;flex-direction:column;gap:5px;padding-top:14px;border-top:1px solid rgba(255,255,255,.06);}
.rp2-risk-check-row{font-size:.73rem;color:var(--muted);padding:6px 10px;background:rgba(255,255,255,.02);border-radius:7px;line-height:1.5;}
@media(max-width:640px){
  .rp2-hero{grid-template-columns:1fr;}
  .rp2-dim-strip{grid-template-columns:repeat(3,1fr);}
  .rp2-scen-grid{grid-template-columns:1fr;}
  .rp2-catrisks{grid-template-columns:1fr;}
  .rp2-risk-metrics{grid-template-columns:repeat(2,1fr);}
  .rp2-snapshot-strip{gap:8px;}
  .rp2-coin-price{font-size:1.3rem;}
}
/* Homepage banner responsive */
@media(max-width:760px){
  #rp-banner-grid{grid-template-columns:1fr!important;}
}

/* --- bloc 13 --- */
.rm-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:1100px;margin:0 auto}
@media(max-width:900px){.rm-cols{grid-template-columns:1fr}}
.rm-col-hd{font-size:.65rem;font-weight:700;letter-spacing:2px;color:var(--muted);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.06)}
.rm-card{background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:14px 16px;margin-bottom:10px;transition:.18s}
.rm-card:hover{border-color:rgba(63,63,70,.18)}
.rm-badge{display:inline-flex;align-items:center;gap:4px;font-size:.58rem;font-weight:700;letter-spacing:1px;padding:2px 8px;border-radius:99px;margin-bottom:8px}
.rm-badge.planned{background:rgba(68,138,255,.13);color:#82b1ff;border:1px solid rgba(68,138,255,.25)}
.rm-badge.in_progress{background:rgba(255,152,0,.13);color:#ffcc02;border:1px solid rgba(255,152,0,.25)}
.rm-badge.done{background:rgba(0,230,118,.1);color:#69f0ae;border:1px solid rgba(0,230,118,.2)}
.rm-badge.community{background:rgba(206,147,216,.1);color:#ce93d8;border:1px solid rgba(206,147,216,.2)}
.rm-top-badge{background:rgba(156, 163, 175, .15);color:#d1d5db;border:1px solid rgba(156, 163, 175, .3);border-radius:99px;padding:2px 7px;font-size:.58rem;font-weight:700}
.rm-vote-btn{background:#303032;color:var(--accent);border:1px solid rgba(63,63,70,.2);border-radius:8px;padding:4px 12px;font-size:.72rem;cursor:pointer;transition:.15s}
.rm-vote-btn:hover{background:#3a3a3e}
.rm-vote-btn.voted{background:rgba(63,63,70,.22);color:#fff}
.rm-vote-btn:disabled{opacity:.4;cursor:not-allowed}
.rm-budget{display:inline-flex;align-items:center;gap:6px;background:rgba(206,147,216,.1);border:1px solid rgba(206,147,216,.2);border-radius:99px;padding:5px 14px;font-size:.72rem;color:#ce93d8;font-weight:700}
.rm-lock{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:10px 14px;font-size:.72rem;color:var(--muted);text-align:center;margin-top:4px}
.rm-lock a{color:var(--accent);text-decoration:none}
.rm-coin-section{background:rgba(156, 163, 175, .04);border:1px solid rgba(156, 163, 175, .12);border-radius:16px;padding:20px 24px;max-width:1100px;margin:28px auto 20px}
.rm-coin-bar-wrap{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.rm-coin-label{font-size:.78rem;font-weight:700;min-width:50px;color:var(--text)}
.rm-coin-bar-bg{flex:1;background:rgba(255,255,255,.06);border-radius:99px;height:8px;overflow:hidden}
.rm-coin-bar-fill{background:linear-gradient(90deg,#c9a84c,#ffeb3b);height:100%;border-radius:99px;transition:width .4s}
.rm-coin-votes-count{font-size:.72rem;color:var(--muted);min-width:60px;text-align:right}
.rm-coin-vote-btn{font-size:.68rem;padding:3px 10px;border-radius:99px;cursor:pointer;border:1px solid rgba(156, 163, 175, .3);background:rgba(156, 163, 175, .1);color:#d1d5db;transition:.15s}
.rm-coin-vote-btn:hover{background:rgba(156, 163, 175, .2)}
.rm-coin-vote-btn.active{background:rgba(156, 163, 175, .3);font-weight:700}
.rm-coin-input{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--text);padding:7px 12px;font-size:.8rem;width:160px}
.rm-coin-input:focus{outline:none;border-color:rgba(156, 163, 175, .4)}
.rm-suggest-btn{background:rgba(206,147,216,.08);border:1px dashed rgba(206,147,216,.3);border-radius:12px;padding:12px 18px;font-size:.75rem;color:#ce93d8;cursor:pointer;width:100%;transition:.15s;text-align:left}
.rm-suggest-btn:hover{background:rgba(206,147,216,.14)}
.rm-suggest-form{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:16px;margin-top:10px;display:none}
.rm-suggest-form.open{display:block}
.rm-suggest-input{width:100%;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--text);padding:8px 12px;font-size:.8rem;margin-bottom:8px;resize:none}
.rm-suggest-input:focus{outline:none;border-color:rgba(206,147,216,.4)}

/* ── RESPONSIVE DESIGN ──────────────────────────── */

/* ── Tablette large (1024px) ── */
@media (max-width: 1024px) {
  .tab { padding: 18px 20px 28px; }
  .dashboard-hero { grid-template-columns: 1fr; }
  .dashboard-columns { grid-template-columns: 1fr 1fr !important; }
  .desk-ribbon { grid-template-columns: repeat(2, 1fr); }
  .insight-grid { grid-template-columns: 1fr 1fr; }
  .hero-metric-board { grid-template-columns: 1fr 1fr 1fr; }
  .stat-card .val { font-size: 2.2rem; }
  .desk-ribbon-value { font-size: 1.3rem; }
}

/* ── Tablette (768px) ── */
@media (max-width: 768px) {
  .tab { padding: 14px 14px 24px; }
  .stat-card .val { font-size: 1.8rem; }
  .desk-ribbon-value { font-size: 1.1rem; }
}

@media (max-width: 1200px) {
  .stat-card, .card {
    padding: 1.25rem;
  }
  .tab-btn {
    padding: 0.75rem 1rem;
  }
}

@media (max-width: 768px) {
  :root {
    --spacing-lg: 1rem;
    --spacing-xl: 1.5rem;
  }

  .stat-card {
    padding: 1rem;
  }

  .stat-card-value {
    font-size: 1.5rem;
  }

  .tab-btn {
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
  }

  .btn {
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
  }

  table th, table td {
    padding: 0.75rem;
    font-size: 0.875rem;
  }
}

@media (max-width: 480px) {
  .card, .stat-card {
    padding: 0.75rem;
    border-radius: var(--radius-lg);
  }

  .stat-card-value {
    font-size: 1.25rem;
  }

  .btn {
    padding: 0.5rem 0.75rem;
  }

  table {
    font-size: 0.75rem;
  }

  table th, table td {
    padding: 0.5rem;
  }
}

/* ── SCROLL ANIMATIONS ────────────────────────── */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

.animate-fade-in {
  animation: fadeIn 0.6s ease-out forwards;
}

.animate-slide-up {
  animation: slideUp 0.6s ease-out forwards;
}

.animate-scale-in {
  animation: scaleIn 0.6s ease-out forwards;
}

.animate-delay-1 { animation-delay: 0.1s; }
.animate-delay-2 { animation-delay: 0.2s; }
.animate-delay-3 { animation-delay: 0.3s; }
.animate-delay-4 { animation-delay: 0.4s; }

/* ══════════════════════════════════════════════════════════════
   COT INFO / TUTO MODALS — Popups guide pédagogique
   ══════════════════════════════════════════════════════════════ */

.cot-info-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.72);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
  animation: fadeIn 0.15s ease;
}

.cot-info-box {
  background: #13151a;
  border: 1px solid rgba(0, 229, 255, 0.12);
  border-radius: 14px;
  width: min(600px, 94vw);
  max-height: 88vh;
  overflow-y: auto;
  padding: 28px 28px 24px;
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, 0.04),
    0 32px 80px rgba(0, 0, 0, 0.7);
  animation: slideUp 0.2s cubic-bezier(.16,1,.3,1);
}
.cot-info-box::-webkit-scrollbar { width: 3px; }
.cot-info-box::-webkit-scrollbar-thumb { background: rgba(63,63,70,.15); border-radius: 2px; }

.cot-info-box-title {
  font-family: var(--title, monospace);
  font-size: .88rem;
  font-weight: 800;
  color: var(--accent, #2563eb);
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 20px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}

.cot-info-block {
  margin-bottom: 18px;
}

.cot-info-block-label {
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  margin-bottom: 8px;
  color: var(--accent, #2563eb);
}

.cot-info-block-desc {
  font-size: .78rem;
  color: rgba(255,255,255,.6);
  line-height: 1.7;
  white-space: pre-line;
}
.cot-info-block-desc strong { color: rgba(255,255,255,.9); }

.cot-info-tip {
  background: rgba(63,63,70,.05);
  border: 1px solid rgba(63,63,70,.12);
  border-radius: 8px;
  padding: 14px 16px;
  font-size: .76rem;
  color: rgba(255,255,255,.6);
  line-height: 1.7;
  margin-top: 20px;
}
.cot-info-tip strong { color: rgba(255,255,255,.9); }

.cot-info-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: rgba(56,189,248,.12);
  border: 1px solid rgba(56,189,248,.4);
  color: #38bdf8;
  font-size: .65rem;
  font-weight: 800;
  cursor: pointer;
  vertical-align: middle;
  transition: background .15s, border-color .15s;
}
.cot-info-btn:hover { background: rgba(56,189,248,.28); border-color:#38bdf8; color:#fff; }

/* ══════════════════════════════════════════════════════════
   RESPONSIVE MOBILE — Fear & Greed + Funding Panel
   ══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ── Fear & Greed : passer en colonne unique ── */
  .fg-grid {
    grid-template-columns: 1fr !important;
  }
  .fg-col-gauge {
    border-right: none !important;
    border-bottom: 1px solid rgba(255,255,255,.05) !important;
    padding: 16px 16px 14px !important;
  }
  .fg-col-compare {
    border-right: none !important;
    border-bottom: 1px solid rgba(255,255,255,.05) !important;
    padding: 16px !important;
  }
  /* Masquer l'historique 30j sur mobile (trop étroit pour Chart.js) */
  .fg-col-history {
    display: none !important;
  }
  /* Jauge SVG : réduire pour ne pas déborder */
  #fg-gauge-svg {
    width: 100% !important;
    max-width: 260px !important;
    height: auto !important;
  }
  #fg-current-val {
    font-size: 2rem !important;
  }

  /* ── Funding Panel : scroll horizontal ── */
  #fp-table-scroll {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    /* Indicateur scroll subtil */
    background:
      linear-gradient(to right, transparent 90%, rgba(63,63,70,.06)) local,
      linear-gradient(to right, rgba(63,63,70,.06), transparent) local;
    background-size: 100% 100%, 30px 100%;
    background-repeat: no-repeat;
    background-position: right center, right center;
  }
  .fp-table-header {
    min-width: 660px !important;
  }
  #fp-rows {
    min-width: 660px !important;
  }

  /* ── Funding header : empiler boutons ── */
  #funding-premium-panel > div:first-child {
    flex-direction: column !important;
    align-items: flex-start !important;
  }

  /* ── Tabs filtre : scroll horizontal ── */
  #funding-premium-panel [style*="display:flex;gap:4px;padding:10px"] {
    overflow-x: auto;
    flex-wrap: nowrap !important;
    padding-bottom: 8px !important;
  }

}

@media (max-width: 480px) {
  /* Très petits écrans : réduire davantage */
  .fg-col-gauge {
    padding: 12px 8px !important;
  }
  #fg-current-val {
    font-size: 1.7rem !important;
  }
}

/* ══════════════════════════════════════════════════════════
   SENTIMENT LEVIER — Sub-tabs (Funding + L/S Ratio)
   ══════════════════════════════════════════════════════════ */

.sl-tab-btn {
  padding: 8px 18px;
  font-size: .72rem;
  font-weight: 700;
  font-family: var(--title, monospace);
  letter-spacing: .06em;
  color: var(--muted, #6b7280);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: color .15s, border-color .15s;
  white-space: nowrap;
}
.sl-tab-btn:hover {
  color: var(--text, #fff);
}
.sl-tab-btn.active {
  color: var(--accent, #2563eb);
  border-bottom-color: var(--accent, #2563eb);
}

.sl-pane {
  /* transitions légères à l'affichage */
  animation: fadeIn .15s ease;
}

/* ── L/S Ratio Panel responsive ── */
@media (max-width: 768px) {
  #ls-table-scroll {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }
  .ls-table-header {
    min-width: 720px !important;
  }
  #ls-rows {
    min-width: 720px !important;
  }
  #ls-ratio-panel > div:first-child {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
}


/* ── Confluence Stats — période selector ── */
.conf-stat-period {
  padding: 4px 12px;
  font-size: .65rem;
  font-family: var(--title);
  font-weight: 700;
  letter-spacing: .05em;
  border: 1px solid rgba(255,255,255,.12);
  background: transparent;
  color: var(--muted);
  border-radius: 5px;
  cursor: pointer;
  transition: all .2s;
}
.conf-stat-period.active,
.conf-stat-period:hover {
  background: rgba(63,63,70,.1);
  border-color: rgba(63,63,70,.35);
  color: var(--accent);
}

/* ── Flash signal haute conviction ────────────────────────── */
@keyframes confFlashLong {
  0%,100% { background: rgba(52,211,153,.0); box-shadow:none; }
  20%     { background: rgba(52,211,153,.22); box-shadow:inset 0 0 24px rgba(52,211,153,.12); }
  60%     { background: rgba(52,211,153,.14); }
}
@keyframes confFlashShort {
  0%,100% { background: rgba(63,63,70,.0); box-shadow:none; }
  20%     { background: rgba(63,63,70,.22); box-shadow:inset 0 0 24px rgba(63,63,70,.12); }
  60%     { background: rgba(63,63,70,.14); }
}
.conf-flash-long  { animation: confFlashLong  2.2s ease 3; }
.conf-flash-short { animation: confFlashShort 2.2s ease 3; }

/* ── Heatmap tiles ─────────────────────────────────────────── */
.conf-hm-tile {
  border-radius: 10px;
  padding: 14px 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  border: 1px solid rgba(255,255,255,.06);
  position: relative;
  overflow: hidden;
  min-width: 0;
}
.conf-hm-tile:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(0,0,0,.45); }
.conf-hm-tile .hm-score { font-family:var(--title); font-weight:900; font-size:1.4rem; line-height:1; }
.conf-hm-tile .hm-name  { font-family:var(--title); font-weight:800; font-size:.72rem; }
.conf-hm-tile .hm-bar   { width:100%; height:3px; border-radius:2px; background:rgba(255,255,255,.1); overflow:hidden; }
.conf-hm-tile .hm-fill  { height:100%; border-radius:2px; transition:width .5s ease; }
.conf-hm-tile .hm-dir   { font-size:.54rem; font-weight:800; letter-spacing:.05em; font-family:var(--title); }
.conf-hm-tile .hm-change { font-family:monospace; font-size:.58rem; font-weight:700; }

/* ── Barre contexte macro ───────────────────────────────────── */
#conf-macro-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0;
  background: rgba(255,255,255,.025);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 10px;
  padding: 10px 16px;
  margin-bottom: 16px;
}
.cmb-item {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 3px 14px;
  border-right: 1px solid rgba(255,255,255,.07);
}
.cmb-item:first-child { padding-left: 0; }
.cmb-item:last-child  { border-right: none; }
.cmb-label { color:rgba(255,255,255,.32); font-family:var(--title); letter-spacing:.07em; font-size:.5rem; text-transform:uppercase; }
.cmb-val   { font-weight:700; font-family:monospace; font-size:.65rem; }

/* ── Countdown ─────────────────────────────────────────────── */
#conf-countdown {
  font-family: monospace;
  font-size: .62rem;
  padding: 4px 10px;
  border-radius: 6px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.07);
  letter-spacing: .04em;
  transition: color .4s, border-color .4s;
  white-space: nowrap;
}

/* ═══════════════════════════════════════════════════════════
   SESSION 22 — HOVER EFFECTS PREMIUM
   ═══════════════════════════════════════════════════════════ */

/* ── Forex Table Rows ────────────────────────────────────── */
#forex-body tr {
  cursor: pointer;
  transition: background .15s ease;
}
#forex-body tr:hover td {
  background: rgba(63,63,70,.07) !important;
  box-shadow: inset 3px 0 0 rgba(63,63,70,.55);
}
#forex-body tr:hover td:first-child b {
  text-shadow: 0 0 14px rgba(63,63,70,.6);
  color: #fff !important;
}
#forex-body tr:hover .dir-badge {
  transform: scale(1.1);
  transition: transform .12s ease, box-shadow .12s ease;
}
#forex-body tr:hover .dir-buy {
  box-shadow: 0 0 10px rgba(63,63,70,.5);
}
#forex-body tr:hover .dir-sell {
  box-shadow: 0 0 10px rgba(63,63,70,.5);
}
#forex-body .dir-badge {
  transition: transform .12s ease, box-shadow .12s ease;
}

/* ── Indices V11 Grid Cards ──────────────────────────────── */
#indices-grid-v11 .stat-card {
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
#indices-grid-v11 .stat-card:hover {
  transform: translateY(-5px) scale(1.02);
  box-shadow: 0 18px 42px rgba(0,0,0,.5), 0 0 0 1px rgba(63,63,70,.2);
  background: rgba(63,63,70,.04) !important;
}

/* ── COT 4 Asset Cards ───────────────────────────────────── */
.cot4-asset-card {
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease !important;
}
.cot4-asset-card:hover {
  transform: translateY(-4px) !important;
  box-shadow: 0 14px 36px rgba(0,0,0,.5), 0 0 0 1px rgba(63,63,70,.25) !important;
  border-color: rgba(63,63,70,.35) !important;
}

/* ── Seasonal Bar Columns + Tooltip ─────────────────────── */
.sbar-col {
  position: relative;
  transition: opacity .15s ease;
  cursor: crosshair;
}
.sbar-col:hover .sbar-val,
.sbar-col:hover .sbar-wr {
  transform: scale(1.15);
  font-weight: 900 !important;
}
.sbar-val, .sbar-wr { display: block; transition: transform .15s ease; }
.sbar-fill {
  transition: filter .15s ease, opacity .15s ease;
}
.sbar-col:hover .sbar-fill {
  filter: brightness(1.35) drop-shadow(0 0 4px currentColor);
  opacity: 1 !important;
}
/* Tooltip bulle */
.sbar-col::after {
  content: attr(data-tip);
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: rgba(10,14,24,.96);
  border: 1px solid rgba(63,63,70,.35);
  border-radius: 7px;
  padding: 6px 10px;
  font-size: .6rem;
  font-family: var(--mono);
  color: var(--text);
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity .15s ease;
  z-index: 20;
  box-shadow: 0 6px 20px rgba(0,0,0,.5);
}
.sbar-col:hover::after {
  opacity: 1;
}

/* ── Form-panel cards (carry rates etc.) ─────────────────── */
.form-panel {
  transition: border-color .2s ease, box-shadow .2s ease;
}
.form-panel:hover {
  border-color: rgba(63,63,70,.18) !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.25);
}

/* ── stat-card global (hors indices grid) ────────────────── */
.stat-card {
  transition: transform .2s ease, box-shadow .2s ease !important;
}
.stat-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 28px rgba(0,0,0,.4);
}


/* ═══════════════════════════════════════════════════════════
   MODE DÉMO — Banner + Paywall overlay
   ═══════════════════════════════════════════════════════════ */

/* ── Banner démo (strip fixé en haut) ─────────────────────── */
#demo-banner {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 10000;
  background: #18181A;
  border-bottom: 1px solid rgba(63,63,70,.2);
  padding: 10px 20px;
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-family: var(--title, 'Share Tech Mono', monospace);
  font-size: .72rem;
  letter-spacing: .5px;
  box-shadow: 0 2px 20px rgba(63,63,70,.08);
}
#demo-banner .demo-label {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--muted, #666);
  flex: 1;
  min-width: 0;
}
#demo-banner .demo-label strong {
  color: var(--accent, #2563eb);
  letter-spacing: 2px;
}
#demo-banner .demo-label .demo-dot {
  width: 6px; height: 6px;
  background: var(--accent, #2563eb);
  border-radius: 50%;
  animation: demoPulse 2s infinite;
  flex-shrink: 0;
}
@keyframes demoPulse {
  0%,100% { opacity:1; transform:scale(1); }
  50%      { opacity:.4; transform:scale(.7); }
}
#demo-banner .demo-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.demo-btn-cta {
  background: linear-gradient(135deg, rgba(63,63,70,.15), rgba(63,63,70,.08));
  border: 1px solid rgba(63,63,70,.35);
  color: var(--accent, #2563eb);
  padding: 5px 14px;
  border-radius: 6px;
  font-size: .68rem;
  font-family: var(--title, monospace);
  letter-spacing: 1px;
  cursor: pointer;
  text-decoration: none;
  transition: background .2s, box-shadow .2s;
  white-space: nowrap;
}
.demo-btn-cta:hover {
  background: rgba(63,63,70,.2);
  box-shadow: 0 0 12px rgba(63,63,70,.2);
}
.demo-btn-back {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.75);
  padding: 5px 12px;
  border-radius: 6px;
  font-size: .68rem;
  font-family: var(--title, monospace);
  letter-spacing: .5px;
  cursor: pointer;
  text-decoration: none;
  transition: background .2s, color .2s;
  white-space: nowrap;
}
.demo-btn-back:hover { background: rgba(255,255,255,.12); color: #fff; }
.demo-btn-login {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.1);
  color: var(--muted, #666);
  padding: 5px 12px;
  border-radius: 6px;
  font-size: .68rem;
  font-family: var(--title, monospace);
  letter-spacing: 1px;
  cursor: pointer;
  text-decoration: none;
  transition: background .2s;
  white-space: nowrap;
}
.demo-btn-login:hover { background: rgba(255,255,255,.08); color: #aaa; }
.demo-btn-close {
  background: none;
  border: none;
  color: var(--muted, #555);
  font-size: 1rem;
  cursor: pointer;
  padding: 2px 6px;
  line-height: 1;
  transition: color .2s;
  flex-shrink: 0;
}
.demo-btn-close:hover { color: #aaa; }

/* ── Décalage contenu quand banner visible ─────────────────── */
body.demo-active { padding-top: 42px; }

/* ── Overlay paywall ──────────────────────────────────────── */
#demo-paywall {
  position: fixed;
  inset: 0;
  background: rgba(5,5,5,.88);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  z-index: 9998;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
#demo-paywall.open { display: flex; }
.demo-paywall-card {
  background: #0e0e10;
  border: 1px solid rgba(63,63,70,.15);
  border-radius: 16px;
  padding: 48px 40px 40px;
  max-width: 460px;
  width: 100%;
  text-align: center;
  position: relative;
  box-shadow: 0 24px 80px rgba(0,0,0,.6), 0 0 40px rgba(63,63,70,.05);
  animation: paywallIn .25s cubic-bezier(.16,1,.3,1);
}
@keyframes paywallIn {
  from { opacity:0; transform:scale(.94) translateY(8px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}
.demo-paywall-close {
  position: absolute;
  top: 14px; right: 16px;
  background: none;
  border: none;
  color: var(--muted, #555);
  font-size: 1.1rem;
  cursor: pointer;
  padding: 4px 8px;
  transition: color .2s;
}
.demo-paywall-close:hover { color: #aaa; }
.demo-paywall-icon {
  font-size: 2.8rem;
  margin-bottom: 16px;
  display: block;
}
.demo-paywall-title {
  font-family: var(--title, monospace);
  font-size: 1.1rem;
  color: #fff;
  letter-spacing: 2px;
  margin-bottom: 12px;
}
.demo-paywall-desc {
  font-size: .8rem;
  color: var(--muted, #666);
  line-height: 1.6;
  margin-bottom: 28px;
}
.demo-paywall-cta {
  display: inline-block;
  background: linear-gradient(135deg, rgba(63,63,70,.18), rgba(63,63,70,.08));
  border: 1px solid rgba(63,63,70,.4);
  color: var(--accent, #2563eb);
  padding: 12px 28px;
  border-radius: 8px;
  font-family: var(--title, monospace);
  font-size: .78rem;
  letter-spacing: 1.5px;
  cursor: pointer;
  text-decoration: none;
  transition: all .2s;
  margin-bottom: 12px;
  display: block;
}
.demo-paywall-cta:hover {
  background: rgba(63,63,70,.22);
  box-shadow: 0 0 20px rgba(63,63,70,.2);
  color: var(--accent, #2563eb);
}
.demo-paywall-sub {
  font-size: .68rem;
  color: var(--muted, #555);
  margin-top: 10px;
}
.demo-paywall-sub a {
  color: rgba(63,63,70,.6);
  text-decoration: none;
}
.demo-paywall-sub a:hover { color: var(--accent, #2563eb); }

/* ── Scanner blur rows en demo ────────────────────────────── */
.demo-row-blur td {
  filter: blur(4px);
  user-select: none;
  pointer-events: none;
}
.demo-scanner-gate {
  text-align: center;
  padding: 20px;
  background: linear-gradient(180deg, transparent, rgba(5,5,5,.95) 40%);
  border-top: 1px solid rgba(63,63,70,.08);
}

/* ── INTEL Tab ────────────────────────────────────────────── */
.intel-tab-btn {
  padding: 8px 16px;
  font-size: .72rem;
  font-family: var(--title, 'Barlow Condensed', sans-serif);
  font-weight: 700;
  letter-spacing: 1.5px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  color: var(--muted, #6b7280);
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.intel-tab-btn.active {
  color: var(--accent, #00e5ff);
  border-bottom-color: var(--accent, #00e5ff);
}
.intel-tab-btn:hover { color: #d1d5db; }

.intel-asset-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 12px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: .78rem;
  font-weight: 600;
  color: #d1d5db;
  transition: background .12s;
  text-align: left;
}
.intel-asset-btn:hover { background: rgba(63,63,70,.25); }
.intel-asset-btn.active {
  background: rgba(0,229,255,.08);
  color: var(--accent, #00e5ff);
  border-right: 2px solid var(--accent, #00e5ff);
}
.intel-actor-card {
  background: var(--bg-secondary, #161b22);
  border: 1px solid rgba(63,63,70,.3);
  border-radius: 10px;
  padding: 14px 16px;
  margin-bottom: 10px;
}
.intel-sparkline {
  width: 100%;
  height: 40px;
}
.intel-metric-card {
  background: var(--bg-secondary, #161b22);
  border: 1px solid rgba(63,63,70,.3);
  border-radius: 10px;
  padding: 14px 16px;
}
.intel-metric-label {
  font-size: .62rem;
  color: var(--muted, #6b7280);
  font-family: var(--title, 'Barlow Condensed', sans-serif);
  letter-spacing: 1px;
  margin-bottom: 4px;
}
.intel-metric-value {
  font-size: 1.2rem;
  font-weight: 700;
  color: #f9fafb;
}

/* ─── INTEL — Sidebar groupes + Mobile responsive ─────────────────── */
.intel-asset-group-lbl {
  padding: 10px 12px 3px;
  font-family: var(--title, 'Inter', sans-serif);
  font-size: .54rem;
  color: var(--text-muted, #6b7280);
  letter-spacing: 1.8px;
}
.intel-asset-group-lbl:first-child { padding-top: 6px; }

/* Mobile bar — caché sur desktop */
.intel-mobile-bar { display: none; }
.intel-mobile-regime-bar { display: none; }

@media (max-width: 900px) {
  /* Tab intel — plein bord, retire le padding du .tab */
  #tab-intel {
    padding-left: 0 !important;
    padding-right: 0 !important;
    padding-top: 0 !important;
  }

  .intel-layout {
    flex-direction: column !important;
    height: auto !important;
    min-height: unset !important;
    overflow: visible !important;
  }
  #intel-sidebar { display: none !important; }

  .intel-mobile-bar {
    display: flex;
    overflow-x: auto;
    gap: 6px;
    padding: 8px 14px;
    background: var(--bg-secondary, #272729);
    border-bottom: 1px solid rgba(63,63,70,.3);
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    flex-shrink: 0;
  }
  .intel-mobile-bar::-webkit-scrollbar { display: none; }

  .intel-mobile-pill {
    flex-shrink: 0;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 700;
    font-family: var(--title, 'Inter', sans-serif);
    letter-spacing: .04em;
    border: 1px solid rgba(63,63,70,.3);
    color: var(--text-muted, #6b7280);
    background: var(--bg-tertiary, #303032);
    cursor: pointer;
    transition: color .15s, border-color .15s, background .15s;
    white-space: nowrap;
  }
  .intel-mobile-pill.active {
    background: rgba(37,99,235,.1);
    border-color: var(--accent, #2563eb);
    color: var(--accent, #2563eb);
  }
  .intel-mobile-pill:hover { border-color: rgba(255,255,255,.2); color: #d1d5db; }

  .intel-mobile-regime-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 14px;
    font-size: .65rem;
    border-bottom: 1px solid rgba(63,63,70,.2);
    background: var(--bg, #09090b);
  }

  /* Panel principal scrollable, padding réduit */
  .intel-layout > div:last-child {
    overflow-y: visible !important;
    padding: 10px 14px 28px !important;
  }

  /* Sub-tabs : empile si nécessaire, GUIDE visible */
  .intel-tab-row {
    flex-wrap: wrap;
    gap: 4px;
    padding: 0 4px;
  }
  .intel-tab-row > div { flex: 1; min-width: 0; }
  .intel-guide-btn {
    font-size: .65rem !important;
    padding: 5px 10px !important;
    margin-bottom: 6px !important;
    white-space: nowrap;
  }
  .intel-tab-btn { padding: 8px 12px !important; font-size: .68rem !important; }
}

/* ── TYPESET — floor font-size à 0.72rem (≈10px minimum viable) ── */
@media (max-width: 768px) {
  .hms-sym, .hero-metric-label, .hero-metric-sub,
  .hm-sub, .hm-label,
  .ai-side-title, .ai-key-info,
  .news-meta, .news-coin-btn,
  .pos-price, .form-group label,
  .dashboard-mode-copy, .cot-signal-badge,
  .lex-related-btn, .role-badge,
  [class*="-label"]:not(label), [class*="-sub"],
  [class*="-caption"], [class*="-meta"] {
    font-size: max(.72rem, 11px) !important;
  }
}

/* ── ORACLE LOADING — agent dot animation ── */
@keyframes oa-blink {
  0%,100% { opacity:1; transform:scale(1); box-shadow:0 0 0 0 rgba(37,99,235,.4); }
  50%      { opacity:.6; transform:scale(1.2); box-shadow:0 0 0 4px rgba(37,99,235,0); }
}
@media (max-width:600px) {
  #oracle-prog-agents { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ── TOUCH TARGETS — min 44×44px sur mobile (WCAG 2.5.5) ── */
@media (max-width: 768px) {
  button, [role="button"], a.btn, .btn, .tab-btn,
  .interval-btn, .chart-tab-btn, .nav-link-btn,
  .demo-btn-cta, .demo-btn-login, .demo-btn-back,
  .signal-tab-btn, .conf-tab-btn, .cot4-nav-btn {
    min-height: 44px;
    padding-top: max(8px, calc((44px - 1.4em) / 2));
    padding-bottom: max(8px, calc((44px - 1.4em) / 2));
  }
  /* ⓘ info buttons : zone cliquable élargie via pseudo-element */
  .opt-info-btn, .cot4-info-btn, .cot-info-btn {
    position: relative;
  }
  .opt-info-btn::after, .cot4-info-btn::after, .cot-info-btn::after {
    content: '';
    position: absolute;
    inset: -14px;
  }
}
