';
/* ═══════════════════════════════════════════════════════
VERANOT DESIGN SYSTEM v4
Couleurs officielles: Bleu #00AEEF · Blanc · Gris #6D6E71
3 thèmes: veranot (défaut) · light · dark
Adaptation automatique au système OS/navigateur
═══════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════
VERANOT — SYSTÈME DE THÈMES COMPLET
Mode Veranot (défaut) :
• Contenu : fond blanc/gris clair · texte bleu marine
• Sidebar : fond BLEU #00AEEF · texte BLANC
Mode Light (système clair) :
• Contenu : fond blanc pur · texte gris foncé
• Sidebar : fond gris ardoise #1e293b · texte blanc
Mode Dark (système sombre) :
• Contenu : fond marine profond · texte bleu clair
• Sidebar : fond noir #07111c · texte bleu pâle
Le mode se détecte automatiquement depuis l'OS/navigateur
(prefers-color-scheme). Le bouton dans la topbar permet
de forcer un mode manuellement.
═══════════════════════════════════════════════════════════════════ */
/* ─── AUTO-DETECT OS: si aucun data-theme défini ─────────────────── */
@media (prefers-color-scheme: light) {
html:not([data-theme]) {
/* Contenu clair */
--bg:#f0f6fb; --bg2:#ffffff; --bg3:#e4f0f9; --bg4:#d6e8f5;
--card:#ffffff; --card2:#f5f9fd;
--b1:rgba(0,174,239,.16); --b2:rgba(0,174,239,.28);
--b3:rgba(0,55,90,.09); --b4:rgba(0,55,90,.04);
--shadow:0 2px 16px rgba(0,100,160,.08);
--shadow-lg:0 8px 40px rgba(0,100,160,.13);
--text:#07111c; --text2:#355e7a; --text3:#7aaabb;
/* Sidebar bleue Veranot · tout blanc */
--sidebar:#00AEEF;
--sb-border:rgba(255,255,255,.30);
--sb-lbl:rgba(255,255,255,.70);
--sb-text:#ffffff;
--sb-text-on:#ffffff;
--sb-item-hover:rgba(255,255,255,.18);
--sb-item-on:rgba(0,0,0,.20);
--sb-uc-bg:rgba(0,0,0,.18);
--sb-logo-bar:rgba(255,255,255,.30);
}
}
@media (prefers-color-scheme: dark) {
html:not([data-theme]) {
/* Contenu sombre */
--bg:#07111c; --bg2:#0d1e2e; --bg3:#132840; --bg4:#1a3355;
--card:#0f1d2c; --card2:#152233;
--b1:rgba(0,174,239,.15); --b2:rgba(0,174,239,.25);
--b3:rgba(255,255,255,.07); --b4:rgba(255,255,255,.04);
--shadow:0 2px 16px rgba(0,0,0,.4);
--shadow-lg:0 8px 40px rgba(0,0,0,.5);
--text:#e8f4ff; --text2:#7ea8c4; --text3:#3d6880;
/* Sidebar noire */
--sidebar:#07111c;
--sb-border:rgba(0,174,239,.13);
--sb-lbl:#2d5a70;
--sb-text:#5a90aa;
--sb-text-on:#c8e8ff;
--sb-item-hover:rgba(0,174,239,.09);
--sb-item-on:rgba(0,174,239,.2);
--sb-uc-bg:rgba(0,174,239,.07);
--sb-logo-bar:rgba(0,174,239,.18);
}
}
/* ─── THÈME VERANOT (bouton 🔵, défaut manuel) ────────────────────── */
[data-theme="veranot"] {
/* Contenu : fond clair bleuté, typique Veranot */
--bg: #f0f6fb;
--bg2: #ffffff;
--bg3: #e4f0f9;
--bg4: #d6e8f5;
--card: #ffffff;
--card2: #f5f9fd;
--b1: rgba(0,174,239,.16);
--b2: rgba(0,174,239,.28);
--b3: rgba(0,55,90,.09);
--b4: rgba(0,55,90,.04);
--shadow: 0 2px 16px rgba(0,100,160,.08);
--shadow-lg: 0 8px 40px rgba(0,100,160,.13);
--text: #07111c;
--text2: #355e7a;
--text3: #7aaabb;
/* Sidebar : fond bleu Veranot #00AEEF · tout en blanc pur */
--sidebar: #00AEEF;
--sb-border: rgba(255,255,255,.30);
--sb-lbl: rgba(255,255,255,.70);
--sb-text: #ffffff;
--sb-text-on: #ffffff;
--sb-item-hover: rgba(255,255,255,.18);
--sb-item-on: rgba(0,0,0,.20);
--sb-uc-bg: rgba(0,0,0,.18);
--sb-logo-bar: rgba(255,255,255,.30);
}
/* ─── THÈME LIGHT (bouton ☀️) ─────────────────────────────────────── */
[data-theme="light"] {
/* Contenu : fond blanc pur, texte gris foncé */
--bg: #f8fafc;
--bg2: #ffffff;
--bg3: #f0f4f8;
--bg4: #e2eaf2;
--card: #ffffff;
--card2: #f8fafc;
--b1: rgba(0,174,239,.14);
--b2: rgba(0,174,239,.24);
--b3: rgba(0,0,0,.07);
--b4: rgba(0,0,0,.03);
--shadow: 0 2px 12px rgba(0,0,0,.06);
--shadow-lg: 0 8px 32px rgba(0,0,0,.09);
--text: #0f172a;
--text2: #475569;
--text3: #94a3b8;
/* Sidebar : gris ardoise foncé · texte blanc */
--sidebar: #1e293b;
--sb-border: rgba(255,255,255,.09);
--sb-lbl: rgba(255,255,255,.38);
--sb-text: rgba(255,255,255,.65);
--sb-text-on: #ffffff;
--sb-item-hover: rgba(255,255,255,.08);
--sb-item-on: rgba(0,174,239,.25);
--sb-uc-bg: rgba(255,255,255,.07);
--sb-logo-bar: rgba(255,255,255,.1);
}
/* ─── THÈME DARK (bouton 🌙) ──────────────────────────────────────── */
[data-theme="dark"] {
/* Contenu : fond marine profond */
--bg: #07111c;
--bg2: #0d1e2e;
--bg3: #132840;
--bg4: #1a3355;
--card: #0f1d2c;
--card2: #152233;
--b1: rgba(0,174,239,.15);
--b2: rgba(0,174,239,.25);
--b3: rgba(255,255,255,.07);
--b4: rgba(255,255,255,.04);
--shadow: 0 2px 16px rgba(0,0,0,.4);
--shadow-lg: 0 8px 40px rgba(0,0,0,.5);
--text: #e8f4ff;
--text2: #7ea8c4;
--text3: #3d6880;
/* Sidebar : fond noir profond · texte bleu pâle */
--sidebar: #07111c;
--sb-border: rgba(0,174,239,.13);
--sb-lbl: #2d5a70;
--sb-text: #5a90aa;
--sb-text-on: #c8e8ff;
--sb-item-hover: rgba(0,174,239,.09);
--sb-item-on: rgba(0,174,239,.2);
--sb-uc-bg: rgba(0,174,239,.07);
--sb-logo-bar: rgba(0,174,239,.18);
}
/* ── BRAND CONSTANTS (never change) ── */
:root {
--vb: #00AEEF;
--vb2: #0096cc;
--vb3: #33c9ff;
--vbd: rgba(0,174,239,.12);
--vg: #6D6E71;
--vg2: #8a8b8e;
--vw: #ffffff;
--green: #22c55e;
--gd: rgba(34,197,94,.12);
--amber: #f59e0b;
--ad: rgba(245,158,11,.12);
--gold: #f5b800;
--gold2: #ffd54f;
--goldd: rgba(245,184,0,.14);
--red: #ef4444;
--rd: rgba(239,68,68,.12);
--purp: #a78bfa;
--pd: rgba(167,139,250,.12);
--mono: 'JetBrains Mono', 'Courier New', monospace;
--font: 'Sora', 'Segoe UI', Arial, sans-serif;
--r: 8px;
--rl: 14px;
--rxl: 20px;
}
/* ── RESET ── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{height:100%;}
body{
font-family:var(--font);
background:var(--bg);
color:var(--text);
font-size:14px;
line-height:1.6;
height:100%;
overflow:hidden;
transition:background .3s, color .3s;
}
/* All themed elements transition smoothly */
*, *::before, *::after {
transition-property: background-color, border-color, color, box-shadow;
transition-duration: .25s;
transition-timing-function: ease;
}
/* But NOT layout-affecting properties */
.ni, .card, .btn, input, select, textarea {
transition: all .15s ease;
}
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--b2);border-radius:2px;}
/* ═══════════════════════════════════════════════════════
LAYOUT
═══════════════════════════════════════════════════════ */
.app{display:flex;height:100vh;overflow:hidden;}
/* ═══════════════════════════════════════════════════════
SIDEBAR — Fond bleu Veranot (thème défaut), adaptatif
Texte blanc. Barre horizontale sous le logo.
═══════════════════════════════════════════════════════ */
.sidebar{
width:230px; min-width:230px;
background: var(--sidebar);
border-right: 1px solid var(--sb-border);
display: flex; flex-direction: column;
transition: background .3s, border-color .3s;
box-shadow: 2px 0 16px rgba(0,0,0,.08);
}
/* ── Zone logo ── */
.sb-head{
padding: 0;
display: flex; flex-direction: column;
flex-shrink: 0;
}
.sb-logo-inner{
display: flex; align-items: center; gap: 10px;
padding: 18px 16px 16px;
}
/* Barre décorative sous le logo */
.sb-logo-bar{
height: 2px;
background: var(--sb-logo-bar);
margin: 0 0 0 0;
flex-shrink: 0;
}
/* Logo SVG */
.vlogo{ display: flex; align-items: center; gap: 10px; }
.vlogo img{ height:44px;width:auto;transition:filter .3s; }
/* Light theme: show original logo colors on white sidebar */
[data-theme="light"] .vlogo img { filter: none!important; }
/* Dark theme: white logo on dark sidebar */
[data-theme="dark"] .vlogo img { filter: brightness(0) invert(.7) sepia(1) saturate(3) hue-rotate(170deg)!important; }
/* Veranot theme: white logo on blue sidebar */
[data-theme="veranot"] .vlogo img { filter: brightness(0) invert(1)!important; }
.vlogo-text{
font-size: 18px; font-weight: 800;
color: #ffffff;
letter-spacing: -0.5px;
opacity: 1;
font-family: var(--font);
}
.vlogo-dot{ /* Point coloré après le nom */
width: 7px; height: 7px; border-radius: 50%;
background: rgba(255,255,255,.5);
flex-shrink: 0;
align-self: center;
}
/* ── Navigation ── */
.sb-nav{
flex: 1; overflow-y: auto;
padding: 14px 10px 8px;
}
.sb-nav::-webkit-scrollbar{ width: 3px; }
.sb-nav::-webkit-scrollbar-thumb{ background: var(--sb-border); border-radius: 2px; }
.sb-sec{ margin-bottom: 6px; }
.sb-lbl{
font-family: var(--mono); font-size: 9px; font-weight: 700;
color: var(--sb-lbl);
text-transform: uppercase; letter-spacing: 1.8px;
padding: 10px 10px 5px;
display: block;
/* toujours bien lisible sur fond coloré */
text-shadow: 0 1px 2px rgba(0,0,0,.15);
}
.ni{
display: flex; align-items: center; gap: 9px;
padding: 9px 11px;
border-radius: 9px;
cursor: pointer;
color: var(--sb-text);
font-size: 12.5px; font-weight: 600;
transition: all .15s;
border: 1px solid transparent;
margin-bottom: 2px;
letter-spacing: .01em;
}
.ni:hover{
background: var(--sb-item-hover);
color: var(--sb-text-on);
border-color: rgba(255,255,255,.15);
}
.ni.on{
background: var(--sb-item-on);
color: #ffffff;
font-weight: 700;
border-color: rgba(255,255,255,.18);
box-shadow: 0 2px 8px rgba(0,0,0,.2);
text-shadow: 0 1px 2px rgba(0,0,0,.2);
}
/* Active item: barre gauche colorée */
.ni.on::before{
content: '';
position: absolute; left: 0; top: 0; bottom: 0;
width: 3px; border-radius: 0 3px 3px 0;
background: rgba(255,255,255,.7);
}
.ni{ position: relative; }
.ni.star-on{
background: rgba(245,184,0,.2);
color: var(--gold2);
border-color: rgba(245,184,0,.25);
}
.ni-ic{
font-size: 14px; width: 18px; text-align: center;
flex-shrink: 0; opacity: .9;
}
.ni-badge{
margin-left: auto;
background: var(--red); color: #fff;
font-family: var(--mono); font-size: 9px;
padding: 1px 6px; border-radius: 8px; font-weight: 700;
}
.ni-badge-g{ background: var(--gold); color: #07111c; }
.ni-badge-b{ background: rgba(255,255,255,.25); color: var(--sb-text-on); }
/* ── Séparateur section ── */
.sb-sep{
height: 1px;
background: var(--sb-border);
margin: 8px 10px;
}
/* ── User card en bas ── */
.sb-user{
padding: 12px;
border-top: 1px solid var(--sb-border);
flex-shrink: 0;
}
.sb-uc{
display: flex; align-items: center; gap: 9px;
padding: 9px 10px;
background: var(--sidebar2);
border-radius: 10px;
border: 1px solid var(--sb-border);
transition: background .3s;
}
.sbu-av{
width: 34px; height: 34px; border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 12px; font-weight: 800; flex-shrink: 0;
border: 2px solid rgba(255,255,255,.25);
}
.sbu-name{ font-size: 12px; font-weight: 700; color: #ffffff; }
.sbu-role{ font-size: 10px; color: rgba(255,255,255,.75); margin-top: 1px; }
.sbu-dot{
width: 8px; height: 8px; border-radius: 50%;
background: var(--green);
margin-left: auto; flex-shrink: 0;
border: 1.5px solid rgba(255,255,255,.3);
box-shadow: 0 0 6px rgba(34,197,94,.5);
}
/* ═══════════════════════════════════════════════════════
TOPBAR
═══════════════════════════════════════════════════════ */
.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.topbar{
height:54px;
background:var(--card);
border-bottom:1px solid var(--b3);
display:flex;align-items:center;padding:0 22px;gap:14px;
flex-shrink:0;
box-shadow:var(--shadow);
transition:background .3s,border-color .3s;
}
.pg-title{font-size:14px;font-weight:700;color:var(--text);}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:8px;}
/* Search */
.sbar{
display:flex;align-items:center;gap:7px;
background:var(--bg3);border:1px solid var(--b3);
border-radius:var(--r);padding:6px 11px;max-width:220px;
transition:border .15s,background .3s;
}
.sbar:focus-within{border-color:var(--vb);}
.sbar input{background:none;border:none;color:var(--text);font-family:var(--font);font-size:12px;outline:none;width:160px;}
.sbar input::placeholder{color:var(--text3);}
/* Theme switcher */
.theme-switcher{
display:flex;gap:2px;background:var(--bg3);
border:1px solid var(--b3);border-radius:7px;padding:2px;
transition:background .3s,border-color .3s;
}
.th-btn{
width:26px;height:26px;border-radius:5px;border:none;
background:transparent;cursor:pointer;font-size:13px;
display:flex;align-items:center;justify-content:center;
transition:all .15s;
}
.th-btn.on{background:var(--vb);box-shadow:0 2px 8px rgba(0,174,239,.3);}
.th-btn:hover:not(.on){background:var(--b3);}
.ic-btn{
width:32px;height:32px;border-radius:var(--r);
background:var(--bg3);border:1px solid var(--b3);
display:flex;align-items:center;justify-content:center;
cursor:pointer;font-size:14px;position:relative;
transition:background .3s,border-color .15s;
}
.ic-btn:hover{border-color:var(--vb);}
.ic-btn .dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--red);border-radius:50%;border:1.5px solid var(--card);}
/* Lang bar */
.lang-row{display:flex;gap:3px;}
.lc{
padding:4px 8px;border-radius:5px;font-family:var(--mono);font-size:10px;font-weight:600;
cursor:pointer;border:1px solid var(--b3);background:transparent;color:var(--text3);
transition:all .15s;font-family:var(--font);
}
.lc.on{background:var(--vb);color:#fff;border-color:var(--vb);}
.lc:hover:not(.on){border-color:var(--vb);color:var(--vb);}
.pc{flex:1;overflow-y:auto;padding:22px;}
/* ═══════════════════════════════════════════════════════
DESIGN COMPONENTS
═══════════════════════════════════════════════════════ */
/* Cards */
.card{
background:var(--card);border:1px solid var(--b3);border-radius:var(--rl);
transition:background .3s,border-color .15s,box-shadow .15s;
}
.card:hover{border-color:var(--b2);}
.cp{padding:18px;}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.ct{font-size:13px;font-weight:800;color:var(--text);}
/* Metric card with gradient top accent */
.mc{
background:var(--card);border:1px solid var(--b3);
border-radius:var(--rl);padding:18px;position:relative;overflow:hidden;
transition:all .2s;
}
.mc::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--rl) var(--rl) 0 0;}
.mc-b::before{background:var(--vb);}
.mc-g::before{background:var(--green);}
.mc-r::before{background:var(--red);}
.mc-a::before{background:var(--amber);}
.mc-gold::before{background:var(--gold);}
.ml{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--text3);margin-bottom:8px;font-weight:600;}
.mv{font-size:28px;font-weight:800;line-height:1;font-family:var(--mono);color:var(--text);}
.mv-b{color:var(--vb);} .mv-g{color:var(--green);}
.mv-r{color:var(--red);} .mv-a{color:var(--amber);} .mv-gold{color:var(--gold2);}
.mtr{display:inline-flex;align-items:center;gap:3px;font-size:10px;margin-top:6px;padding:2px 6px;border-radius:4px;font-weight:600;}
.tr-up{background:var(--gd);color:var(--green);}
.tr-dn{background:var(--rd);color:var(--red);}
.tr-eq{background:var(--b3);color:var(--text3);}
/* Grids */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.mb{margin-bottom:14px;} .mb2{margin-bottom:20px;}
/* Pills */
.pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700;}
.p-g{background:var(--gd);color:var(--green);}
.p-b{background:var(--vbd);color:var(--vb);}
.p-a{background:var(--ad);color:var(--amber);}
.p-r{background:var(--rd);color:var(--red);}
.p-gold{background:var(--goldd);color:var(--gold2);}
.p-x{background:var(--b3);color:var(--text2);}
.pdot{width:4px;height:4px;border-radius:50%;background:currentColor;}
.vbadge{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border-radius:4px;background:var(--vbd);color:var(--vb);font-size:9px;font-weight:700;margin-left:5px;}
/* Level badges */
.lv{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;font-size:10px;font-weight:700;}
.lv-pt{background:rgba(229,228,226,.12);color:#aab0b8;border:1px solid rgba(180,180,180,.25);}
.lv-go{background:var(--goldd);color:var(--gold2);border:1px solid rgba(245,184,0,.28);}
.lv-si{background:rgba(192,192,192,.1);color:var(--text2);border:1px solid var(--b3);}
.lv-br{background:rgba(205,127,50,.1);color:#cd7f32;border:1px solid rgba(205,127,50,.22);}
.lv-nw{background:var(--vbd);color:var(--vb);border:1px solid var(--b1);}
/* Category A-F */
.cat{font-size:10px;font-weight:800;padding:3px 8px;border-radius:5px;}
.cA{background:var(--gd);color:var(--green);}
.cB{background:var(--ad);color:var(--amber);}
.cC{background:var(--vbd);color:var(--vb);}
.cD{background:var(--rd);color:var(--red);}
.cE{background:rgba(239,68,68,.18);color:#ff8080;}
.cF{background:rgba(239,68,68,.25);color:#ffaaaa;}
/* Actor badges */
.abadge{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;}
.ab-ok{background:var(--gd);color:var(--green);border:1px solid rgba(34,197,94,.2);}
.ab-ko{background:var(--rd);color:var(--red);border:1px solid rgba(239,68,68,.2);}
/* Progress bar */
.pb{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden;}
.pb-fill{height:100%;border-radius:3px;transition:width 1.2s cubic-bezier(.4,0,.2,1);}
.pbf-b{background:linear-gradient(90deg,var(--vb2),var(--vb3));}
.pbf-g{background:linear-gradient(90deg,#16a34a,var(--green));}
.pbf-r{background:linear-gradient(90deg,#b91c1c,var(--red));}
.pbf-a{background:linear-gradient(90deg,#b45309,var(--amber));}
.pbf-gold{background:linear-gradient(90deg,#c8900a,var(--gold),var(--gold2));}
.pbf-e{background:linear-gradient(90deg,#991111,#ff8080);}
.pbf-f{background:linear-gradient(90deg,#660000,#ffaaaa);}
/* Gauge big */
.gauge-wrap{margin:10px 0;}
.gauge-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.gauge-lbl{font-size:10px;color:var(--text3);font-weight:600;text-transform:uppercase;letter-spacing:.7px;}
.gauge-pct{font-family:var(--mono);font-size:14px;font-weight:800;color:var(--vb);}
.gauge-track{height:10px;background:var(--bg3);border-radius:5px;overflow:hidden;}
.gauge-fill{height:100%;border-radius:5px;transition:width 1.2s cubic-bezier(.4,0,.2,1);}
.gauge-steps{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
.gst{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--text3);}
.gsd{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.gsd-ok{background:var(--green);}
.gsd-act{background:var(--amber);animation:pulse 1.5s infinite;}
.gsd-wait{background:var(--bg4);border:1px solid var(--b3);}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}
/* Buttons */
.btn{padding:6px 13px;border-radius:7px;font-family:var(--font);font-size:11px;font-weight:600;cursor:pointer;border:1px solid var(--b3);background:transparent;color:var(--text2);transition:all .15s;}
.btn:hover{background:var(--bg3);color:var(--text);border-color:var(--b2);}
.btn-blue{background:var(--vb);color:#fff;border-color:var(--vb);}
.btn-blue:hover{background:var(--vb2);}
.btn-gold{background:var(--gold);color:#07111c;border-color:var(--gold);}
.btn-gold:hover{background:#e5a800;}
.btn-green{background:var(--green);color:#fff;border-color:var(--green);}
.btn-red{background:var(--rd);color:var(--red);border-color:rgba(239,68,68,.3);}
.btn-full{width:100%;padding:13px;border-radius:var(--r);border:none;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;}
.btn-full-vb{background:var(--vb);color:#fff;}
.btn-full-vb:hover{background:var(--vb2);}
/* Track code */
.tcode{font-family:var(--mono);font-size:11px;color:var(--vb);background:var(--vbd);padding:2px 7px;border-radius:4px;display:inline-block;}
/* Data table */
.dt{width:100%;border-collapse:collapse;}
.dt th{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--text3);padding:8px 12px;text-align:left;border-bottom:1px solid var(--b3);font-weight:600;background:var(--bg3);}
.dt td{padding:10px 12px;border-bottom:1px solid var(--b3);font-size:12px;vertical-align:middle;color:var(--text);}
.dt tr:last-child td{border-bottom:none;}
.dt tr:hover td{background:var(--bg4);}
/* Tabs */
.tabs{display:flex;background:var(--bg3);border-radius:var(--r);padding:3px;}
.tab{flex:1;padding:7px;text-align:center;border-radius:6px;font-size:12px;cursor:pointer;color:var(--text3);transition:all .15s;font-weight:600;}
.tab.on{background:var(--card);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.1);}
/* Timeline */
.tl{position:relative;padding-left:26px;}
.tl::before{content:'';position:absolute;left:9px;top:10px;bottom:10px;width:1px;background:var(--b3);}
.tl-item{position:relative;margin-bottom:14px;}
.tl-dot{position:absolute;left:-26px;top:2px;width:16px;height:16px;border-radius:50%;border:2px solid;display:flex;align-items:center;justify-content:center;font-size:8px;background:var(--card);}
.tld-ok{border-color:var(--green);color:var(--green);}
.tld-act{border-color:var(--amber);color:var(--amber);animation:pulse 1.5s infinite;}
.tld-wait{border-color:var(--b3);color:var(--text3);}
.tl-t{font-size:12px;font-weight:600;color:var(--text);}
.tl-s{font-size:11px;color:var(--text3);}
.tl-d{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:2px;}
/* Modal */
.modal-bg{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.7);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;}
.modal-bg.open{display:flex;}
.modal{background:var(--card);border:1px solid var(--b2);border-radius:var(--rxl);padding:32px;width:460px;max-width:95vw;max-height:90vh;overflow-y:auto;animation:mIn .22s ease;box-shadow:var(--shadow-lg);}
@keyframes mIn{from{opacity:0;transform:translateY(12px) scale(.97)}}
.modal-head{display:flex;align-items:center;gap:12px;margin-bottom:22px;}
.modal-title{font-size:16px;font-weight:800;color:var(--text);}
.modal-sub{font-size:12px;color:var(--text3);margin-top:2px;}
.close-x{margin-left:auto;width:28px;height:28px;border-radius:7px;background:var(--bg3);border:1px solid var(--b3);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:var(--text2);}
/* Form */
.ff{margin-bottom:14px;}
.ff label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--text3);margin-bottom:5px;font-weight:600;}
.ff input,.ff select,.ff textarea{width:100%;background:var(--bg3);border:1px solid var(--b3);border-radius:var(--r);padding:10px 13px;color:var(--text);font-family:var(--font);font-size:13px;outline:none;transition:border .15s;}
.ff input:focus,.ff select:focus,.ff textarea:focus{border-color:var(--vb);}
.ff select option{background:var(--card);}
.ff textarea{resize:none;}
/* Avatar menu items */
.av-mi{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;font-size:12px;color:var(--text2);transition:all .1s;margin-bottom:1px;}
.av-mi:hover{background:var(--bg3);color:var(--text);}
/* Toast */
.toast{position:fixed;top:66px;right:18px;z-index:3000;background:var(--card);border:1px solid var(--b2);border-radius:var(--rl);padding:13px 16px;width:300px;display:none;animation:tIn .25s ease;box-shadow:var(--shadow-lg);}
.toast.open{display:block;}
@keyframes tIn{from{opacity:0;transform:translateX(14px)}}
.toast-title{font-size:13px;font-weight:700;margin-bottom:3px;color:var(--text);}
.toast-body{font-size:12px;color:var(--text2);line-height:1.5;}
/* Notif panel */
.notif-panel{position:fixed;top:54px;right:0;z-index:500;width:320px;height:calc(100vh - 54px);background:var(--card);border-left:1px solid var(--b3);transform:translateX(100%);transition:transform .25s;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);}
.notif-panel.open{transform:translateX(0);}
.np-head{padding:16px;border-bottom:1px solid var(--b3);display:flex;align-items:center;justify-content:space-between;}
.notif-item{display:flex;gap:9px;padding:11px 14px;border-bottom:1px solid var(--b3);cursor:pointer;transition:background .1s;}
.notif-item:hover{background:var(--bg3);}
.notif-item.unread{background:rgba(0,174,239,.04);}
.ni2-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:4px;}
.ni2-text{font-size:12px;line-height:1.5;color:var(--text);}
.ni2-time{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:2px;}
/* Map box */
.map-box{background:var(--bg3);border-radius:var(--r);overflow:hidden;position:relative;}
.map-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(0,174,239,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,174,239,.04) 1px,transparent 1px);background-size:20px 20px;}
.map-svg{width:100%;height:100%;}
/* Upload zone */
.uzone{border:2px dashed var(--b2);border-radius:var(--rl);padding:20px;text-align:center;cursor:pointer;transition:border .15s;}
.uzone:hover{border-color:var(--vb);}
/* Doc flow item */
.dfi{display:flex;align-items:center;gap:9px;padding:9px;border-radius:var(--r);border:1px solid var(--b3);margin-bottom:6px;cursor:pointer;transition:all .15s;background:var(--card);}
.dfi:hover{border-color:var(--b2);}
.dfi.done{border-color:rgba(34,197,94,.2);background:rgba(34,197,94,.03);}
.dfi.active{border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.04);}
.dfi-ic{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;}
.dfi-ic-g{background:var(--gd);}
.dfi-ic-a{background:var(--ad);}
.dfi-ic-x{background:var(--b3);}
.dfi-t{font-size:12px;font-weight:600;color:var(--text);}
.dfi-s{font-size:10px;color:var(--text3);}
/* Profile hero */
.ph{background:var(--card);border:1px solid var(--b3);border-radius:var(--rl);overflow:hidden;margin-bottom:14px;}
.ph-banner{height:80px;background:linear-gradient(135deg,var(--vb2),var(--vb),var(--vb3));position:relative;overflow:hidden;}
.ph-banner::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 60% 50%,rgba(255,255,255,.15) 0%,transparent 60%);}
.ph-body{padding:0 18px 16px;}
.ph-logo{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:#fff;margin-top:-28px;margin-bottom:9px;border:3px solid var(--card);}
.ph-name{font-size:18px;font-weight:800;color:var(--text);}
.ph-tag{font-size:12px;color:var(--text3);margin:2px 0 10px;}
.ph-stats{display:flex;gap:22px;}
.ph-sv{font-family:var(--mono);font-size:16px;font-weight:700;color:var(--vb);}
.ph-sl{font-size:10px;color:var(--text3);}
/* Feed */
.fp{background:var(--card);border:1px solid var(--b3);border-radius:var(--rl);padding:16px;margin-bottom:12px;transition:border .15s;}
.fp:hover{border-color:var(--b2);}
.fp-head{display:flex;align-items:center;gap:9px;margin-bottom:10px;}
.fp-av{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff;flex-shrink:0;}
.fp-name{font-size:13px;font-weight:700;color:var(--text);}
.fp-meta{font-size:11px;color:var(--text3);}
.fp-follow{margin-left:auto;padding:5px 12px;border-radius:6px;border:1px solid var(--b2);background:transparent;color:var(--vb);font-size:11px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s;}
.fp-follow:hover{background:var(--vbd);}
.fp-content{font-size:13px;color:var(--text2);line-height:1.7;margin-bottom:10px;}
.fp-tags{margin-bottom:10px;}
.fp-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600;background:var(--vbd);color:var(--vb);margin-right:4px;}
.fp-actions{display:flex;gap:18px;padding-top:9px;border-top:1px solid var(--b3);}
.fp-act{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text3);cursor:pointer;border:none;background:none;font-family:var(--font);transition:color .15s;}
.fp-act:hover{color:var(--vb);}
/* ═══════════════════════════════════════════════════════
SCORE SYSTEM — Automatique depuis catégories A-F
═══════════════════════════════════════════════════════ */
/* Points par catégorie (affiché dans l'UI) */
.score-legend{
background:var(--bg3);border:1px solid var(--b3);
border-radius:var(--rl);padding:14px;margin-bottom:16px;
}
.score-legend-title{font-size:11px;font-weight:800;color:var(--text);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;}
.sl-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.sl-item{text-align:center;padding:8px 4px;border-radius:8px;background:var(--card);}
.sl-cat{font-size:11px;font-weight:800;margin-bottom:3px;}
.sl-pts{font-family:var(--mono);font-size:14px;font-weight:700;}
.sl-desc{font-size:9px;color:var(--text3);margin-top:2px;line-height:1.3;}
/* Score ring */
.score-ring-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;}
.score-ring{position:relative;width:120px;height:120px;}
.score-ring svg{transform:rotate(-90deg);}
.score-ring-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.srn-val{font-family:var(--mono);font-size:22px;font-weight:800;color:var(--text);line-height:1;}
.srn-max{font-size:10px;color:var(--text3);margin-top:2px;}
.score-stars{display:flex;gap:2px;}
.sstar{font-size:16px;}
.sstar-f{color:var(--gold);}
.sstar-e{color:var(--b3);}
/* Score breakdown bar */
.score-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.sbr-cat{min-width:48px;}
.sbr-label{font-size:11px;color:var(--text2);flex:1;}
.sbr-count{font-family:var(--mono);font-size:11px;color:var(--text3);min-width:40px;text-align:right;}
.sbr-pts{font-family:var(--mono);font-size:12px;font-weight:700;min-width:50px;text-align:right;}
/* Ranking position */
.rank-badge{
display:inline-flex;align-items:center;gap:6px;
padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;
background:var(--goldd);color:var(--gold2);border:1px solid rgba(245,184,0,.28);
}
/* Leaderboard */
.lb-head{display:grid;grid-template-columns:44px 1fr 100px 80px 80px 80px;gap:10px;padding:8px 12px;background:var(--bg3);border-radius:10px 10px 0 0;font-family:var(--mono);font-size:9px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.7px;}
.lb-row{display:grid;grid-template-columns:44px 1fr 100px 80px 80px 80px;gap:10px;padding:10px 12px;background:var(--card);border-bottom:1px solid var(--b3);align-items:center;transition:background .15s;cursor:pointer;}
.lb-row:hover{background:var(--bg4);}
.lb-row:last-child{border-bottom:none;border-radius:0 0 10px 10px;}
.lb-rank{font-family:var(--mono);font-size:15px;font-weight:700;text-align:center;}
.rank-1{color:var(--gold2);} .rank-2{color:#c0c0c0;} .rank-3{color:#cd7f32;} .rank-n{color:var(--text3);}
.lb-co{display:flex;align-items:center;gap:8px;}
.lb-av{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;flex-shrink:0;}
.lb-name{font-size:12px;font-weight:700;color:var(--text);}
.lb-role{font-size:10px;color:var(--text3);}
.lb-score{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--gold2);}
.lb-pts{font-family:var(--mono);font-size:12px;color:var(--text2);}
.lb-trend{font-family:var(--mono);font-size:12px;font-weight:700;}
.tr-up2{color:var(--green);} .tr-dn2{color:var(--red);} .tr-eq2{color:var(--text3);}
/* ── RAPPORT EXPORTS ── */
.report-btn {
display:inline-flex;align-items:center;gap:6px;
padding:7px 14px;border-radius:8px;font-size:12px;font-weight:700;
cursor:pointer;border:none;font-family:var(--font);transition:all .2s;
}
.rb-pdf { background:#ef4444;color:#fff; }
.rb-xls { background:#22c55e;color:#fff; }
.rb-csv { background:#6D6E71;color:#fff; }
.rb-word { background:#2563eb;color:#fff; }
.rb-pdf:hover { background:#dc2626;transform:translateY(-1px); }
.rb-xls:hover { background:#16a34a;transform:translateY(-1px); }
.rb-csv:hover { background:#4b5563;transform:translateY(-1px); }
.rb-word:hover { background:#1d4ed8;transform:translateY(-1px); }
.report-header {
background:linear-gradient(135deg,var(--vb2),var(--vb));
border-radius:var(--rl);padding:18px 22px;margin-bottom:16px;
display:flex;align-items:center;gap:14px;
}
.report-section { margin-bottom:20px; }
.report-section-title {
font-size:11px;font-weight:700;text-transform:uppercase;
letter-spacing:1.2px;color:var(--text3);margin-bottom:10px;
display:flex;align-items:center;gap:8px;
}
.report-section-title::after{content:'';flex:1;height:1px;background:var(--b3);}
@media print {
.sidebar,.topbar,.nb-btn { display:none!important; }
.pc { padding:0!important; }
body { background:#fff!important; }
}
/* Responsive */
@media(max-width:768px){
.sidebar{display:none;}
.g4{grid-template-columns:repeat(2,1fr);}
.g3,.g2{grid-template-columns:1fr;}
.lb-head,.lb-row{grid-template-columns:36px 1fr 80px 70px;}
.lb-head>*:nth-child(n+5),.lb-row>*:nth-child(n+5){display:none;}
}
/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.anim{animation:fadeUp .3s ease both;}
.a1{animation-delay:.05s;} .a2{animation-delay:.10s;}
.a3{animation-delay:.15s;} .a4{animation-delay:.20s;}