/* ===== RESET & ROOT ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg:         #070b14;
  --bg2:        #0d1420;
  --bg3:        #121c2e;
  --border:     #1e2d4a;
  --border2:    #243655;
  --blue:       #2a7fff;
  --violet:     #7c3aed;
  --cyan:       #06b6d4;
  --red:        #ef4444;
  --green:      #22c55e;
  --amber:      #f59e0b;
  --text:       #c8d8f0;
  --text-dim:   #6b8aad;
  --text-bright:#e8f0ff;
  --sidebar-w:  260px;
  --font-mono:  'Share Tech Mono', monospace;
  --font-ui:    'Exo 2', sans-serif;
  --font-head:  'Rajdhani', sans-serif;
}

html { scroll-behavior: smooth; }
body { background: var(--bg); color: var(--text); font-family: var(--font-ui); font-size: 14px; line-height: 1.6; overflow-x: hidden; }

/* BG */
.bg-grid { position: fixed; inset: 0; z-index: 0; pointer-events: none; background-image: linear-gradient(rgba(42,127,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(42,127,255,.04) 1px,transparent 1px); background-size: 40px 40px; }
.bg-glow { position: fixed; z-index: 0; pointer-events: none; border-radius: 50%; filter: blur(120px); opacity: .12; }
.glow-1 { width:600px; height:600px; background:var(--blue); top:-200px; left:-200px; }
.glow-2 { width:500px; height:500px; background:var(--violet); bottom:-100px; right:-150px; }

/* SIDEBAR */
.sidebar { position:fixed; left:0; top:0; bottom:0; width:var(--sidebar-w); background:rgba(13,20,32,.97); border-right:1px solid var(--border); display:flex; flex-direction:column; z-index:100; backdrop-filter:blur(12px); transition:transform .3s ease; }
.sidebar-logo { display:flex; align-items:center; gap:10px; padding:24px 20px 20px; border-bottom:1px solid var(--border); }
.logo-icon { font-size:26px; color:var(--blue); filter:drop-shadow(0 0 8px var(--blue)); }
.logo-text { font-family:var(--font-head); font-size:17px; font-weight:700; letter-spacing:2px; color:var(--text-bright); text-transform:uppercase; }
.logo-text em { color:var(--blue); font-style:normal; }
.nav-links { list-style:none; padding:14px 0; flex:1; overflow-y:auto; }
.nav-links li { margin:2px 8px; }
.nav-link { display:flex; align-items:center; gap:10px; padding:9px 14px; border-radius:6px; color:var(--text-dim); text-decoration:none; font-size:13px; font-weight:600; transition:all .2s; cursor:pointer; }
.nav-link:hover { background:rgba(42,127,255,.1); color:var(--text-bright); }
.nav-link.active { background:rgba(42,127,255,.15); color:var(--blue); border-left:2px solid var(--blue); }
.nav-icon { font-size:15px; }
.sidebar-footer { padding:14px 20px; border-top:1px solid var(--border); display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.status-dot { width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 8px var(--green); animation:pulse-dot 2s infinite; }
@keyframes pulse-dot { 0%,100%{opacity:1} 50%{opacity:.4} }
.period-badge { width:100%; margin-top:4px; background:rgba(42,127,255,.1); color:var(--blue); padding:3px 8px; border-radius:3px; font-size:10px; border:1px solid rgba(42,127,255,.2); }

/* HAMBURGER */
.hamburger { display:none; position:fixed; top:14px; left:14px; z-index:200; background:var(--bg2); border:1px solid var(--border); border-radius:6px; padding:8px; cursor:pointer; flex-direction:column; gap:4px; }
.hamburger span { display:block; width:20px; height:2px; background:var(--blue); border-radius:2px; }

/* MAIN */
.main-content { margin-left:var(--sidebar-w); min-height:100vh; position:relative; z-index:1; }

/* TOPBAR */
.topbar { position:sticky; top:0; z-index:50; background:rgba(7,11,20,.92); backdrop-filter:blur(12px); border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; padding:14px 32px; }
.page-title { font-family:var(--font-head); font-size:21px; font-weight:700; color:var(--text-bright); letter-spacing:1px; text-transform:uppercase; }
.breadcrumb { font-family:var(--font-mono); font-size:11px; color:var(--text-dim); margin-top:2px; }
.topbar-right { display:flex; align-items:center; gap:16px; }
.live-clock { font-family:var(--font-mono); font-size:13px; color:var(--cyan); letter-spacing:1px; }
.disclaimer-badge { font-family:var(--font-mono); font-size:10px; background:rgba(245,158,11,.12); color:var(--amber); border:1px solid rgba(245,158,11,.3); padding:4px 10px; border-radius:4px; cursor:help; }

/* SECTIONS */
.section { display:none; padding:28px 32px; animation:fadeIn .35s ease; }
.section.active { display:block; }
@keyframes fadeIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }
.section-intro { margin-bottom:20px; }
.intro-text { color:var(--text-dim); font-size:13px; padding:11px 16px; border-left:2px solid var(--blue); background:rgba(42,127,255,.05); border-radius:0 4px 4px 0; }

/* HONESTY BANNER */
.honesty-banner { display:flex; gap:14px; align-items:flex-start; background:rgba(245,158,11,.07); border:1px solid rgba(245,158,11,.25); border-radius:8px; padding:16px 20px; margin-bottom:24px; }
.honesty-icon { font-size:20px; flex-shrink:0; margin-top:2px; }
.honesty-banner strong { color:var(--amber); display:block; margin-bottom:4px; }
.honesty-banner div { font-size:13px; color:var(--text-dim); }

/* CARDS */
.card { background:rgba(13,20,32,.85); border:1px solid var(--border); border-radius:10px; padding:22px; backdrop-filter:blur(8px); }
.card-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; padding-bottom:12px; border-bottom:1px solid var(--border); }
.card-header h2 { font-family:var(--font-head); font-size:15px; font-weight:700; color:var(--text-bright); text-transform:uppercase; letter-spacing:1px; }
.mt-4 { margin-top:22px; }
.mt-3 { margin-top:14px; }

/* TAGS */
.tag { font-family:var(--font-mono); font-size:10px; padding:3px 9px; border-radius:3px; text-transform:uppercase; letter-spacing:1px; }
.tag-blue   { background:rgba(42,127,255,.15); color:var(--blue);  border:1px solid rgba(42,127,255,.3); }
.tag-violet { background:rgba(124,58,237,.15); color:#a78bfa;      border:1px solid rgba(124,58,237,.3); }
.tag-cyan   { background:rgba(6,182,212,.15);  color:var(--cyan);  border:1px solid rgba(6,182,212,.3); }
.tag-red    { background:rgba(239,68,68,.15);  color:var(--red);   border:1px solid rgba(239,68,68,.3); }
.tag-green  { background:rgba(34,197,94,.15);  color:var(--green); border:1px solid rgba(34,197,94,.3); }

/* STAT GRID */
.stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:22px; }
.stat-card { background:rgba(13,20,32,.85); border:1px solid var(--border); border-radius:10px; padding:20px; text-align:center; transition:transform .2s; }
.stat-card:hover { transform:translateY(-2px); }
.stat-card[data-color="blue"]   { border-color:rgba(42,127,255,.4); }
.stat-card[data-color="violet"] { border-color:rgba(124,58,237,.4); }
.stat-card[data-color="cyan"]   { border-color:rgba(6,182,212,.4); }
.stat-card[data-color="amber"]  { border-color:rgba(245,158,11,.4); }
.stat-icon { font-size:26px; margin-bottom:8px; }
.stat-value { font-family:var(--font-mono); font-size:34px; font-weight:700; color:var(--text-bright); }
.stat-label { font-size:12px; color:var(--text-dim); margin-top:4px; text-transform:uppercase; letter-spacing:.5px; }
.stat-sub { font-family:var(--font-mono); font-size:10px; color:var(--text-dim); margin-top:6px; }

/* OBJECTIVES */
.objectives-grid { display:flex; flex-direction:column; gap:14px; }
.objective-item { display:flex; gap:14px; align-items:flex-start; }
.obj-horizon { min-width:38px; height:38px; border-radius:6px; display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-size:11px; font-weight:700; flex-shrink:0; }
.obj-horizon.h1 { background:rgba(34,197,94,.15); color:var(--green); border:1px solid rgba(34,197,94,.3); }
.obj-horizon.h2 { background:rgba(42,127,255,.15); color:var(--blue);  border:1px solid rgba(42,127,255,.3); }
.obj-horizon.h3 { background:rgba(124,58,237,.15); color:#a78bfa;      border:1px solid rgba(124,58,237,.3); }
.obj-content h3 { font-family:var(--font-head); font-size:14px; color:var(--text-bright); margin-bottom:3px; }
.obj-content p { font-size:12px; color:var(--text-dim); }
.obj-meta { display:flex; gap:12px; margin-top:6px; font-family:var(--font-mono); font-size:10px; color:var(--text-dim); }
.obj-status { padding:2px 7px; border-radius:3px; }
.obj-status.active  { background:rgba(42,127,255,.1); color:var(--blue); }
.obj-status.pending { background:rgba(124,58,237,.1); color:#a78bfa; }

/* CALENDAR */
.calendar-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:8px; }
.cal-item { border:1px solid var(--border); border-radius:6px; padding:10px 12px; text-align:center; font-family:var(--font-mono); font-size:11px; }
.cal-item.done      { background:rgba(34,197,94,.08);  border-color:rgba(34,197,94,.3); color:var(--green); }
.cal-item.done-data { background:rgba(42,127,255,.1);  border-color:rgba(42,127,255,.4); color:var(--blue); }
.cal-item.today     { background:rgba(6,182,212,.1);   border-color:var(--cyan); color:var(--cyan); }
.cal-item.future    { background:rgba(30,45,74,.3);    color:var(--text-dim); }
.cal-item.missed    { background:rgba(239,68,68,.07);  border-color:rgba(239,68,68,.2); color:var(--red); }
.cal-date { font-size:12px; font-weight:700; margin-bottom:3px; }
.cal-label { font-size:9px; opacity:.8; }
.cal-has-data { font-size:9px; color:var(--blue); margin-top:3px; }

/* SOURCES */
.sources-filter-bar { display:flex; gap:8px; margin-bottom:18px; flex-wrap:wrap; }
.filter-btn { padding:6px 14px; border-radius:4px; background:var(--bg2); border:1px solid var(--border); color:var(--text-dim); font-size:12px; cursor:pointer; transition:all .2s; }
.filter-btn.active, .filter-btn:hover { background:rgba(42,127,255,.15); border-color:var(--blue); color:var(--blue); }
.sources-real-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.source-real-card { background:rgba(13,20,32,.85); border:1px solid var(--border); border-radius:10px; padding:18px; transition:border-color .2s,transform .2s; }
.source-real-card:hover { border-color:rgba(42,127,255,.4); transform:translateY(-2px); }
.src-header { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.src-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.src-dot.cyber { background:var(--red); }
.src-dot.ia    { background:var(--blue); }
.src-dot.mixed { background:var(--violet); }
.src-domain-tag { font-family:var(--font-mono); font-size:10px; padding:2px 7px; border-radius:3px; }
.src-domain-tag.cyber { background:rgba(239,68,68,.12); color:var(--red); border:1px solid rgba(239,68,68,.25); }
.src-domain-tag.ia    { background:rgba(42,127,255,.12); color:var(--blue); border:1px solid rgba(42,127,255,.25); }
.src-domain-tag.mixed { background:rgba(124,58,237,.12); color:#a78bfa; border:1px solid rgba(124,58,237,.25); }
.src-freq-tag { font-family:var(--font-mono); font-size:10px; color:var(--text-dim); margin-left:auto; }
.source-real-card h3 { margin-bottom:8px; }
.source-real-card h3 a { font-family:var(--font-head); font-size:15px; font-weight:700; color:var(--text-bright); text-decoration:none; transition:color .2s; }
.source-real-card h3 a:hover { color:var(--blue); }
.src-desc { font-size:12px; color:var(--text-dim); line-height:1.55; margin-bottom:10px; }
.src-how { font-size:12px; color:var(--text); background:rgba(42,127,255,.05); border-left:2px solid rgba(42,127,255,.3); padding:8px 12px; border-radius:0 4px 4px 0; }
.src-how strong { color:var(--blue); }

/* SIGNALS */
.signals-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.signal-card { background:rgba(13,20,32,.85); border-radius:10px; padding:18px; border-left:4px solid var(--border); transition:transform .2s; }
.signal-card:hover { transform:translateY(-2px); }
.signal-card.level-3 { border-left-color:var(--red); }
.signal-card.level-2 { border-left-color:var(--amber); }
.signal-card.level-1 { border-left-color:var(--green); }
.signal-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.signal-level { font-family:var(--font-mono); font-size:10px; font-weight:700; }
.signal-date { font-family:var(--font-mono); font-size:10px; color:var(--text-dim); }
.signal-card h3 { font-family:var(--font-head); font-size:14px; color:var(--text-bright); margin-bottom:6px; }
.signal-card p { font-size:12px; color:var(--text-dim); line-height:1.5; }
.signal-extract { font-size:11px; color:var(--text); background:rgba(42,127,255,.05); border-left:2px solid rgba(42,127,255,.3); padding:6px 10px; margin:8px 0; border-radius:0 3px 3px 0; font-style:italic; }
.signal-source-link { font-family:var(--font-mono); font-size:10px; color:var(--blue); text-decoration:none; }
.signal-source-link:hover { color:var(--cyan); }
.signal-tags { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0; }
.signal-tags span { font-family:var(--font-mono); font-size:10px; padding:2px 6px; border-radius:3px; background:rgba(42,127,255,.1); color:var(--blue); border:1px solid rgba(42,127,255,.2); }
.signal-del { background:rgba(239,68,68,.1); border:1px solid rgba(239,68,68,.2); color:var(--red); padding:3px 8px; border-radius:3px; font-size:10px; cursor:pointer; margin-top:8px; font-family:var(--font-mono); }
.signal-del:hover { background:rgba(239,68,68,.2); }

/* KPI TABS — repris dans kpis directement */
.kpi-table-wrap { overflow-x:auto; }
.kpi-table { width:100%; border-collapse:collapse; font-size:12px; }
.kpi-table th { background:rgba(42,127,255,.08); color:var(--text-dim); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:1px; padding:9px 12px; text-align:left; border-bottom:1px solid var(--border); }
.kpi-table td { padding:11px 12px; border-bottom:1px solid rgba(30,45,74,.5); vertical-align:top; color:var(--text); }
.kpi-table tr:hover td { background:rgba(42,127,255,.03); }
.kpi-val { font-family:var(--font-mono); font-weight:700; padding:2px 7px; border-radius:3px; }
.kpi-val.good { color:var(--green); background:rgba(34,197,94,.1); }
.kpi-val.warn { color:var(--amber); background:rgba(245,158,11,.1); }

/* FORMULA */
.formula-box-standalone { background:rgba(42,127,255,.06); border:1px solid rgba(42,127,255,.2); border-radius:8px; padding:14px 18px; display:flex; flex-direction:column; gap:6px; }
.formula-title { font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.formula-eq { font-family:var(--font-mono); font-size:13px; color:var(--cyan); }

/* SCENARIOS */
.horizons-tabs { display:flex; gap:4px; margin-bottom:18px; flex-wrap:wrap; }
.hz-btn { padding:9px 18px; border-radius:5px; background:var(--bg2); border:1px solid var(--border); color:var(--text-dim); font-size:13px; font-weight:600; cursor:pointer; transition:all .2s; }
.hz-btn.active { background:rgba(42,127,255,.15); border-color:var(--blue); color:var(--blue); }
.hz-content { display:none; }
.hz-content.active { display:block; }
.scenario-item { border-left:3px solid var(--border2); padding:14px 18px; margin-bottom:14px; border-radius:0 8px 8px 0; background:rgba(18,28,46,.5); }
.scenario-item.alt { border-left-color:var(--violet); }
.scenario-item h3 { font-family:var(--font-head); font-size:14px; color:var(--text-bright); margin:6px 0 5px; }
.scenario-item p { font-size:12px; color:var(--text); }
.sc-label { font-family:var(--font-mono); font-size:10px; font-weight:700; padding:2px 9px; border-radius:3px; display:inline-block; margin-bottom:3px; }
.sc-label.active-sc  { background:rgba(42,127,255,.1); color:var(--blue); }
.sc-label.pending-sc { background:rgba(124,58,237,.1); color:#a78bfa; }
.sc-label.future-sc  { background:rgba(245,158,11,.1); color:var(--amber); }
.unknowns { margin:10px 0; background:rgba(13,20,32,.6); border-radius:6px; padding:10px 14px; }
.unknowns strong { font-size:12px; color:var(--text-dim); display:block; margin-bottom:5px; }
.unknowns ul { padding-left:14px; }
.unknowns li { font-size:12px; color:var(--text); margin-bottom:2px; }
.sc-method { font-size:12px; color:var(--text-dim); margin-top:8px; padding-top:8px; border-top:1px solid var(--border); }

/* QUALITY */
.two-col-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.checklist { display:flex; flex-direction:column; gap:12px; }
.check-item { display:flex; gap:10px; align-items:flex-start; }
.chk { width:22px; height:22px; border-radius:4px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; margin-top:1px; }
.check-item.todo .chk { background:rgba(30,45,74,.5); color:var(--text-dim); border:1px solid var(--border2); }
.check-item strong { font-size:13px; color:var(--text-bright); }
.check-item p { font-size:12px; color:var(--text-dim); margin-top:2px; }
.bias-list { display:flex; flex-direction:column; gap:13px; }
.bias-item { display:flex; gap:10px; align-items:flex-start; }
.bias-icon { font-size:18px; flex-shrink:0; margin-top:2px; }
.bias-item strong { font-size:13px; color:var(--text-bright); }
.bias-item p { font-size:12px; color:var(--text-dim); margin-top:2px; }
.bias-item em { color:var(--cyan); font-style:normal; }

/* SESSIONS LIST */
.session-card { background:rgba(13,20,32,.85); border:1px solid var(--border); border-radius:10px; padding:18px; margin-bottom:14px; }
.session-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.session-date { font-family:var(--font-head); font-size:16px; font-weight:700; color:var(--text-bright); }
.session-period { font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.session-stats { display:flex; gap:16px; margin-bottom:10px; flex-wrap:wrap; }
.session-stat { font-family:var(--font-mono); font-size:11px; color:var(--text-dim); }
.session-stat strong { color:var(--blue); }
.session-sources { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.session-src-tag { font-family:var(--font-mono); font-size:10px; padding:2px 6px; border-radius:3px; background:rgba(42,127,255,.1); color:var(--blue); border:1px solid rgba(42,127,255,.2); }
.session-notes { font-size:12px; color:var(--text-dim); border-left:2px solid rgba(42,127,255,.3); padding:6px 12px; background:rgba(42,127,255,.03); border-radius:0 4px 4px 0; }
.session-del { background:rgba(239,68,68,.08); border:1px solid rgba(239,68,68,.2); color:var(--red); padding:3px 8px; border-radius:3px; font-size:10px; cursor:pointer; font-family:var(--font-mono); }
.session-del:hover { background:rgba(239,68,68,.18); }

/* EMPTY STATE */
.empty-state { text-align:center; padding:60px 20px; color:var(--text-dim); }
.empty-icon { font-size:40px; margin-bottom:14px; opacity:.5; }
.empty-state p { font-size:14px; margin-bottom:6px; }
.empty-sub { font-size:12px; color:var(--text-dim); }
.empty-sub strong { color:var(--blue); }

/* FORMS */
.form-group { margin-bottom:14px; }
.form-group label { display:block; font-size:12px; font-weight:600; color:var(--text-dim); text-transform:uppercase; letter-spacing:.5px; margin-bottom:5px; font-family:var(--font-mono); }
.form-input, .form-textarea { width:100%; background:rgba(18,28,46,.8); border:1px solid var(--border2); border-radius:6px; padding:9px 12px; color:var(--text-bright); font-family:var(--font-ui); font-size:13px; transition:border-color .2s; }
.form-input:focus, .form-textarea:focus { outline:none; border-color:var(--blue); background:rgba(18,28,46,1); }
.form-textarea { min-height:90px; resize:vertical; }
.source-checkboxes { display:grid; grid-template-columns:1fr 1fr; gap:4px; max-height:160px; overflow-y:auto; padding:4px; background:rgba(18,28,46,.5); border:1px solid var(--border); border-radius:6px; }
.src-checkbox-label { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-dim); cursor:pointer; padding:3px 4px; border-radius:3px; }
.src-checkbox-label:hover { color:var(--text-bright); background:rgba(42,127,255,.05); }
.src-checkbox-label input { accent-color:var(--blue); }
.btn-primary { background:rgba(42,127,255,.2); border:1px solid rgba(42,127,255,.5); color:var(--blue); padding:10px 20px; border-radius:6px; font-family:var(--font-ui); font-size:13px; font-weight:700; cursor:pointer; transition:all .2s; width:100%; margin-top:4px; }
.btn-primary:hover { background:rgba(42,127,255,.35); }
.btn-secondary { background:rgba(13,20,32,.8); border:1px solid var(--border2); color:var(--text-dim); padding:8px 14px; border-radius:6px; font-size:12px; cursor:pointer; transition:all .2s; }
.btn-secondary:hover { color:var(--text-bright); border-color:var(--blue); }
.btn-danger { background:rgba(239,68,68,.08); border:1px solid rgba(239,68,68,.2); color:var(--red); padding:8px 14px; border-radius:6px; font-size:12px; cursor:pointer; transition:all .2s; }
.btn-danger:hover { background:rgba(239,68,68,.18); }
.form-feedback { margin-top:10px; font-family:var(--font-mono); font-size:12px; min-height:20px; }
.form-feedback.ok  { color:var(--green); }
.form-feedback.err { color:var(--red); }

/* RESPONSIVE */
@media (max-width:1100px) {
  .stat-grid { grid-template-columns:repeat(2,1fr); }
  .sources-real-grid { grid-template-columns:1fr; }
  .signals-grid { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  :root { --sidebar-w:0px; }
  .sidebar { transform:translateX(-260px); width:260px; }
  .sidebar.open { transform:translateX(0); }
  .hamburger { display:flex; }
  .main-content { margin-left:0; }
  .topbar { padding-left:56px; }
  .two-col-grid { grid-template-columns:1fr; }
  .section { padding:18px 14px; }
}
@media (max-width:600px) {
  .stat-grid { grid-template-columns:1fr 1fr; }
  .horizons-tabs { flex-direction:column; }
  .cal-grid { grid-template-columns:repeat(2,1fr); }
}
