/* GOD EYE SOC by DJIENI - feuille de style de la console */
:root{
  --ink:#070A14; --surface:#0F1526; --surface-2:#131A2B; 
  --panel:#131A2B; --line:#232C45; --line-soft:#1B2338;
  --text:#E7ECF7; --muted:#8892B0; --dim:#5B6684;
  --iris:#6C7BFF; --iris-soft:rgba(108,123,255,.14); --gold:#E8B84B;
  --up:#34D399; --warn:#F5A524; --down:#F26D6D; --crit:#C0396B; --info:#3FA7D6;
  --radius:14px; --radius-sm:9px;
  --shadow:0 18px 45px rgba(3,6,15,.55);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"JetBrains Mono","SFMono-Regular",Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:radial-gradient(1200px 600px at 15% -10%,rgba(108,123,255,.10),transparent 60%),
             radial-gradient(900px 500px at 100% 0%,rgba(232,184,75,.06),transparent 55%),var(--ink);
  color:var(--text);font-family:var(--font);font-size:14px;line-height:1.55;min-height:100vh;
}
a{color:var(--iris);text-decoration:none;}
a:hover{text-decoration:underline;}
h1,h2,h3,h4{margin:0 0 .5rem;font-weight:650;letter-spacing:-.01em;}
h1{font-size:1.45rem;} h2{font-size:1.1rem;} h3{font-size:.98rem;}
.eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);}
.muted{color:var(--muted);} .dim{color:var(--dim);} .mono{font-family:var(--mono);}
.small{font-size:12px;}

/* ---------- structure ---------- */
.shell{display:flex;min-height:100vh;}
.sidebar{
  width:246px;flex:0 0 246px;background:linear-gradient(180deg,#0C1120,#0A0E1A);
  border-right:1px solid var(--line);padding:18px 14px;position:sticky;top:0;height:100vh;overflow-y:auto;
}
.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px;}
.brand-eye{width:34px;height:34px;flex:0 0 34px;}
.brand-name{font-weight:750;font-size:14px;letter-spacing:.04em;line-height:1.1;}
.brand-sub{font-size:10px;letter-spacing:.22em;color:var(--dim);text-transform:uppercase;}
.nav-group{margin:14px 0 6px;padding:0 10px;font-size:10px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase;}
.nav a{
  display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--radius-sm);
  color:var(--muted);font-size:13.5px;margin-bottom:2px;border:1px solid transparent;
}
.nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none;}
.nav a.active{background:var(--iris-soft);color:#fff;border-color:rgba(108,123,255,.35);}
.nav .pill{margin-left:auto;background:var(--crit);color:#fff;font-size:10px;padding:1px 7px;border-radius:99px;}
.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{
  display:flex;align-items:center;gap:16px;padding:14px 24px;border-bottom:1px solid var(--line);
  background:rgba(10,14,26,.82);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20;
}
.topbar .spacer{flex:1;}
.content{padding:22px 24px 48px;}
.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px;}
.page-head .spacer{flex:1;}

/* ---------- cartes ---------- */
.card{
  background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);
}
.card + .card{margin-top:16px;}
.card-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.card-head .spacer{flex:1;}
.grid{display:grid;gap:16px;}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr));}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.g-4{grid-template-columns:repeat(4,minmax(0,1fr));}
.g-sidebar{grid-template-columns:minmax(0,2.1fr) minmax(0,1fr);}
.kpi{display:flex;flex-direction:column;gap:4px;}
.kpi .value{font-size:1.9rem;font-weight:700;letter-spacing:-.02em;font-family:var(--mono);}
.kpi .label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.kpi .trend{font-size:12px;color:var(--muted);}

/* ---------- l'oeil : jauge de Cyber Score ---------- */
.eye-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.eye{position:relative;width:190px;height:190px;flex:0 0 190px;}
.eye svg{transform:rotate(-90deg);}
.eye .pupil{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.eye .score{font-size:2.5rem;font-weight:750;font-family:var(--mono);letter-spacing:-.03em;}
.eye .grade{font-size:11px;letter-spacing:.24em;color:var(--gold);text-transform:uppercase;}
.pillars{flex:1;min-width:240px;display:flex;flex-direction:column;gap:11px;}
.pillar-row{display:flex;align-items:center;gap:12px;}
.pillar-row .name{width:112px;font-size:12.5px;color:var(--muted);}
.bar{flex:1;height:7px;border-radius:99px;background:var(--surface-2);overflow:hidden;}
.bar span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--iris),var(--gold));}
.pillar-row .val{width:44px;text-align:right;font-family:var(--mono);font-size:12.5px;}

/* ---------- etats ---------- */
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 8px;}
.dot.up{background:var(--up);box-shadow:0 0 0 3px rgba(52,211,153,.15);}
.dot.degraded{background:var(--warn);box-shadow:0 0 0 3px rgba(245,165,36,.15);}
.dot.down{background:var(--down);box-shadow:0 0 0 3px rgba(242,109,109,.16);}
.dot.pending,.dot.unknown{background:var(--dim);}
.tag{
  display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:99px;font-size:11px;
  border:1px solid var(--line);background:var(--surface-2);color:var(--muted);white-space:nowrap;
}
.tag.up{color:var(--up);border-color:rgba(52,211,153,.35);}
.tag.degraded,.tag.medium,.tag.alerte{color:var(--warn);border-color:rgba(245,165,36,.35);}
.tag.down,.tag.high,.tag.critique{color:var(--down);border-color:rgba(242,109,109,.35);}
.tag.critical{color:#fff;background:var(--crit);border-color:var(--crit);}
.tag.info,.tag.low{color:var(--info);border-color:rgba(63,167,214,.35);}
.tag.gold{color:var(--gold);border-color:rgba(232,184,75,.4);}
.tag.conforme{color:var(--up);border-color:rgba(52,211,153,.35);}

/* ---------- tableaux ---------- */
table{width:100%;border-collapse:collapse;}
th{
  text-align:left;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);
  padding:9px 10px;border-bottom:1px solid var(--line);font-weight:600;white-space:nowrap;
}
td{padding:11px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle;}
tr:last-child td{border-bottom:none;}
tbody tr:hover{background:rgba(108,123,255,.05);}
.table-wrap{overflow-x:auto;}
.empty{padding:34px 18px;text-align:center;color:var(--muted);}
.empty strong{display:block;color:var(--text);margin-bottom:6px;}

/* ---------- formulaires ---------- */
label{display:block;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:6px;}
input,select,textarea{
  width:100%;background:var(--surface);border:1px solid var(--line);color:var(--text);
  border-radius:var(--radius-sm);padding:9px 11px;font-family:var(--font);font-size:13.5px;
}
textarea{min-height:96px;font-family:var(--mono);font-size:12.5px;}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(108,123,255,.5);outline-offset:1px;border-color:var(--iris);}
.field{margin-bottom:14px;}
.field-row{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));}
.check{display:flex;align-items:center;gap:9px;margin-bottom:10px;}
.check input{width:16px;height:16px;}
.check label{margin:0;text-transform:none;letter-spacing:0;font-size:13px;color:var(--text);}
.hint{font-size:11.5px;color:var(--dim);margin-top:5px;}
fieldset{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;margin:0 0 16px;}
legend{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);padding:0 8px;}

/* ---------- boutons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:13px;
  font-weight:600;cursor:pointer;font-family:var(--font);
}
.btn:hover{border-color:var(--iris);text-decoration:none;}
.btn.primary{background:var(--iris);border-color:var(--iris);color:#0A0E1A;}
.btn.primary:hover{filter:brightness(1.08);}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#151005;}
.btn.ghost{background:transparent;}
.btn.danger{border-color:rgba(242,109,109,.45);color:var(--down);background:transparent;}
.btn.danger:hover{background:rgba(242,109,109,.12);}
.btn.small{padding:5px 10px;font-size:12px;}
.btn-row{display:flex;gap:9px;flex-wrap:wrap;align-items:center;}
form.inline{display:inline;}

/* ---------- alertes ---------- */
.flash{
  display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--surface-2);margin-bottom:12px;font-size:13.5px;
}
.flash.success{border-color:rgba(52,211,153,.4);}
.flash.danger{border-color:rgba(242,109,109,.45);}
.flash.warning{border-color:rgba(245,165,36,.45);}
.banner{padding:9px 14px;border-radius:var(--radius-sm);background:rgba(232,184,75,.1);
  border:1px solid rgba(232,184,75,.35);color:var(--gold);font-size:13px;margin-bottom:16px;}

/* ---------- flux temps reel ---------- */
.feed{max-height:430px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
.feed-item{display:flex;gap:11px;padding:10px 8px;border-bottom:1px solid var(--line-soft);}
.feed-item:last-child{border-bottom:none;}
.feed-item .when{font-family:var(--mono);font-size:11.5px;color:var(--dim);white-space:nowrap;}
.feed-item .txt{flex:1;min-width:0;}
.feed-item .txt strong{display:block;font-weight:600;font-size:13px;}
.feed-item .txt span{font-size:12px;color:var(--muted);}
.live{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--muted);}
.live i{width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 2s infinite;}
.live.offline i{background:var(--warn);animation:none;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.25;}}

/* ---------- sparkline / barres ---------- */
.spark{display:flex;align-items:flex-end;gap:2px;height:34px;}
.spark i{flex:1;min-width:2px;border-radius:2px 2px 0 0;background:var(--iris);opacity:.75;}
.spark i.degraded{background:var(--warn);} .spark i.down{background:var(--down);opacity:1;}
.beats{display:flex;gap:3px;flex-wrap:wrap;}
.beats i{width:7px;height:20px;border-radius:2px;background:var(--up);}
.beats i.degraded{background:var(--warn);} .beats i.down{background:var(--down);}
.beats i.pending{background:var(--dim);}

/* ---------- carte reseau ---------- */
.map-canvas{width:100%;height:620px;border-radius:var(--radius);border:1px solid var(--line);
  background:radial-gradient(700px 400px at 50% 0%,rgba(108,123,255,.08),transparent 65%),var(--surface);}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);}
.legend span{display:inline-flex;align-items:center;gap:7px;}

/* ---------- assistant ---------- */
.chat{display:flex;flex-direction:column;gap:12px;}
.bubble{padding:13px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-2);
  white-space:pre-wrap;font-size:13.5px;line-height:1.65;}
.bubble.me{background:var(--iris-soft);border-color:rgba(108,123,255,.35);align-self:flex-end;max-width:70%;}
.suggestions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.suggestions button{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);
  padding:6px 12px;border-radius:99px;font-size:12px;cursor:pointer;}
.suggestions button:hover{color:var(--text);border-color:var(--iris);}

/* ---------- authentification ---------- */
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.auth-card{width:100%;max-width:412px;}
.auth-card .card{padding:28px;}
.auth-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px;}
.auth-brand .brand-name{font-size:19px;letter-spacing:.05em;}

/* ---------- divers ---------- */
.split{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.stat-line{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13px;}
.stat-line:last-child{border-bottom:none;}
.stat-line span:first-child{color:var(--muted);}
.gauge{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden;}
.gauge i{display:block;height:100%;background:var(--iris);}
.gauge i.warn{background:var(--warn);} .gauge i.down{background:var(--down);} .gauge i.up{background:var(--up);}
code{font-family:var(--mono);background:var(--surface);border:1px solid var(--line);
  padding:1px 6px;border-radius:5px;font-size:12.5px;}
.scroll-x{overflow-x:auto;}
.hide-sm{display:initial;}

@media (max-width:1180px){ .g-4{grid-template-columns:repeat(2,minmax(0,1fr));} .g-sidebar{grid-template-columns:1fr;} }
@media (max-width:920px){
  .shell{flex-direction:column;}
  .sidebar{width:100%;flex:none;height:auto;position:relative;border-right:none;border-bottom:1px solid var(--line);}
  .nav{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;}
  .g-2,.g-3,.g-4{grid-template-columns:1fr;}
  .content{padding:18px 14px 40px;}
  .hide-sm{display:none;}
}
@media (prefers-reduced-motion:reduce){ *{animation:none!important;transition:none!important;} }
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
