*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --aic-blue-dark:#0d2d5e;--aic-blue:#1a4a8a;--aic-blue-mid:#2962b8;
  --aic-blue-light:#4a80d4;--aic-blue-pale:#e8f0fb;--aic-blue-xpale:#f2f6fd;
  --aic-grey-dark:#2c3340;--aic-grey:#5a6478;--aic-grey-mid:#8c95a6;
  --aic-grey-light:#c8cdd8;--aic-grey-xlight:#e8eaee;--aic-grey-bg:#f4f5f7;
  --aic-white:#ffffff;--aic-accent:#f0a500;
  --aic-green:#1a7a4a;--aic-red:#c0392b;
  --net-color:#1a4a8a;--net-bg:#e8f0fb;
  --srv-color:#1a7a4a;--srv-bg:#e6f4ed;
  --sec-color:#c0392b;--sec-bg:#fbeaea;
  --radius:6px;--radius-lg:10px;
  --shadow-sm:0 1px 3px rgba(13,45,94,.08);--shadow:0 2px 8px rgba(13,45,94,.10);
  --font:'Barlow',sans-serif;--font-cond:'Barlow Condensed',sans-serif;
}
body{font-family:var(--font);background:var(--aic-grey-bg);color:var(--aic-grey-dark);font-size:14px;line-height:1.6}
/* LOGIN */
#screen-login{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:var(--aic-grey-bg);position:relative;overflow:hidden}
#screen-login::before{content:'';position:absolute;top:0;left:0;right:0;height:340px;background:linear-gradient(135deg,var(--aic-blue-dark) 0%,var(--aic-blue) 60%,var(--aic-blue-mid) 100%);z-index:0}
#screen-login::after{content:'';position:absolute;top:280px;left:0;right:0;height:80px;background:var(--aic-grey-bg);border-radius:50% 50% 0 0/40px 40px 0 0;z-index:0}
.login-wrap{position:relative;z-index:1;width:100%;max-width:420px;padding:2rem 1.5rem}
.login-header{text-align:center;margin-bottom:2rem}
.aic-logo-mark{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:14px;background:rgba(255,255,255,.15);border:1.5px solid rgba(255,255,255,.3);margin-bottom:1rem}
.aic-logo-mark svg{width:32px;height:32px}
.aic-name{font-family:var(--font-cond);font-size:26px;font-weight:700;letter-spacing:.04em;color:white;line-height:1}
.aic-name span{color:var(--aic-accent)}
.aic-meta{font-size:12px;color:rgba(255,255,255,.65);letter-spacing:.08em;text-transform:uppercase;margin-top:6px}
.login-card{background:var(--aic-white);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.75rem 2rem;border:1px solid var(--aic-grey-xlight)}
.login-card-title{font-family:var(--font-cond);font-size:16px;font-weight:600;color:var(--aic-blue-dark);margin-bottom:1.25rem;display:flex;align-items:center;gap:8px}
.login-card-title::before{content:'';display:block;width:3px;height:18px;background:var(--aic-blue-mid);border-radius:2px}
.login-error{color:#c0392b;font-size:13px;margin-top:10px;display:none;background:#fbeaea;border-radius:var(--radius);padding:8px 12px}
/* FIELDS */
.field-wrap{margin-bottom:1rem}
.field-wrap label{display:block;font-size:11px;font-weight:600;color:var(--aic-grey);text-transform:uppercase;letter-spacing:.07em;margin-bottom:5px}
.field-wrap input,.field-wrap select,.field-wrap textarea{width:100%;background:var(--aic-grey-bg);border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:9px 12px;color:var(--aic-grey-dark);font-family:var(--font);font-size:14px;outline:none;transition:border-color .15s,background .15s}
.field-wrap input:focus,.field-wrap select:focus,.field-wrap textarea:focus{border-color:var(--aic-blue-mid);background:var(--aic-white)}
.field-wrap textarea{min-height:80px;resize:vertical}
/* BUTTONS */
.btn{padding:9px 18px;border-radius:var(--radius);border:none;cursor:pointer;font-family:var(--font);font-size:14px;font-weight:500;transition:all .15s;display:inline-flex;align-items:center;gap:6px}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--aic-blue);color:white;justify-content:center;width:100%}
.btn-primary:hover{background:var(--aic-blue-dark)}
.btn-secondary{background:var(--aic-white);color:var(--aic-grey);border:1.5px solid var(--aic-grey-light);font-size:13px;padding:7px 14px}
.btn-secondary:hover{border-color:var(--aic-grey-mid);color:var(--aic-grey-dark)}
.btn-danger{background:#c0392b;color:white;font-size:12px;padding:5px 10px}
.btn-danger:hover{background:#a93226}
.btn-export{background:var(--aic-white);border:1.5px solid var(--aic-grey-xlight);color:var(--aic-grey);font-size:13px;padding:7px 14px}
.btn-export:hover{border-color:var(--aic-blue-light);color:var(--aic-blue)}
.btn-save{background:var(--aic-blue);color:white;padding:10px 28px;font-size:14px;font-weight:600}
.btn-save:hover{background:var(--aic-blue-dark)}
.btn-add-sm{background:var(--aic-blue-pale);color:var(--aic-blue);border:1.5px solid rgba(41,98,184,.25);font-size:13px;padding:7px 14px;font-weight:600}
.btn-add-sm:hover{border-color:var(--aic-blue-light)}
/* TOPBAR */
#screen-app{display:flex;flex-direction:column;min-height:100vh}
.topbar{height:56px;background:var(--aic-blue-dark);display:flex;align-items:center;padding:0 1.5rem;gap:14px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(13,45,94,.25)}
.topbar-brand{display:flex;align-items:center;gap:10px}
.topbar-icon{width:32px;height:32px;background:rgba(255,255,255,.12);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:16px}
.topbar-name{font-family:var(--font-cond);font-size:17px;font-weight:700;color:white;letter-spacing:.05em}
.topbar-name span{color:var(--aic-accent)}
.topbar-sep{width:1px;height:20px;background:rgba(255,255,255,.2)}
.topbar-module{font-size:12px;color:rgba(255,255,255,.55)}
.topbar-divider{flex:1}
.entity-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;font-family:var(--font-cond);letter-spacing:.04em;text-transform:uppercase}
.badge-reseau{background:rgba(74,128,212,.2);color:#7fb3f5;border:1px solid rgba(74,128,212,.3)}
.badge-serveurs{background:rgba(26,122,74,.2);color:#6fcf97;border:1px solid rgba(26,122,74,.3)}
.badge-surete{background:rgba(192,57,43,.2);color:#f1948a;border:1px solid rgba(192,57,43,.3)}
.badge-admin{background:rgba(106,61,154,.2);color:#c39bd3;border:1px solid rgba(106,61,154,.3)}
.badge-blue{background:rgba(74,128,212,.2);color:#7fb3f5;border:1px solid rgba(74,128,212,.3)}
.badge-green{background:rgba(26,122,74,.2);color:#6fcf97;border:1px solid rgba(26,122,74,.3)}
.badge-red{background:rgba(192,57,43,.2);color:#f1948a;border:1px solid rgba(192,57,43,.3)}
.badge-purple{background:rgba(106,61,154,.2);color:#c39bd3;border:1px solid rgba(106,61,154,.3)}
.badge-amber{background:rgba(240,165,0,.2);color:#f0a500;border:1px solid rgba(240,165,0,.3)}
.badge-teal{background:rgba(0,139,139,.2);color:#40e0d0;border:1px solid rgba(0,139,139,.3)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor}
/* Indicateur tunnel WireGuard (collecteur SNMP) */
.wg-tunnel{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:20px;font-size:11px;font-weight:600;font-family:var(--font-cond);letter-spacing:.03em;text-transform:uppercase;cursor:default;white-space:nowrap;transition:background .3s,color .3s}
.wg-tunnel .wg-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}
.wg-up{background:rgba(26,122,74,.2);color:#6fcf97;border:1px solid rgba(26,122,74,.35)}
.wg-up .wg-dot{box-shadow:0 0 0 0 rgba(111,207,151,.7);animation:wg-pulse 2s infinite}
.wg-down{background:rgba(192,57,43,.22);color:#f1948a;border:1px solid rgba(192,57,43,.4)}
.wg-unknown{background:rgba(255,255,255,.08);color:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.15)}
@keyframes wg-pulse{0%{box-shadow:0 0 0 0 rgba(111,207,151,.6)}70%{box-shadow:0 0 0 6px rgba(111,207,151,0)}100%{box-shadow:0 0 0 0 rgba(111,207,151,0)}}
.btn-logout{background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.15);font-size:12px;padding:6px 12px;border-radius:var(--radius);cursor:pointer;font-family:var(--font);transition:all .15s}
.btn-logout:hover{background:rgba(255,255,255,.15);color:white}
/* LAYOUT */
.app-body{display:flex;flex:1;min-height:calc(100vh - 56px)}
.sidebar{width:230px;background:var(--aic-white);border-right:1px solid var(--aic-grey-xlight);padding:1.25rem 0 80px;flex-shrink:0;position:relative}
.sidebar-section{padding:0 12px;margin-bottom:1.5rem}
.sidebar-label{font-size:10px;font-family:var(--font-cond);color:var(--aic-grey-mid);text-transform:uppercase;letter-spacing:.1em;font-weight:600;padding:0 8px;margin-bottom:6px}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--radius);cursor:pointer;color:var(--aic-grey);font-size:13px;transition:background .12s,color .12s;user-select:none;border-left:2px solid transparent;text-decoration:none}
.nav-item:hover{background:var(--aic-blue-xpale);color:var(--aic-blue)}
.nav-item.active{background:var(--aic-blue-xpale);color:var(--aic-blue);border-left-color:var(--aic-blue-mid);font-weight:500}
.nav-icon{font-size:14px;width:18px;text-align:center;flex-shrink:0}
.nav-count{margin-left:auto;background:var(--aic-blue-pale);color:var(--aic-blue-mid);font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px}
.sidebar-footer{position:absolute;bottom:0;left:0;right:0;padding:.875rem 1.25rem;border-top:1px solid var(--aic-grey-xlight);background:var(--aic-white)}
.sidebar-footer div{font-size:10px;color:var(--aic-grey-mid);line-height:1.6}
/* CONTENT */
.content{flex:1;padding:1.75rem 2rem;overflow-y:auto;background:var(--aic-grey-bg)}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}
.page-title{font-family:var(--font-cond);font-size:20px;font-weight:700;color:var(--aic-blue-dark);letter-spacing:.02em;margin-bottom:3px}
.page-subtitle{font-size:13px;color:var(--aic-grey)}
.page-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--aic-grey-mid);margin-bottom:1.25rem}
.breadcrumb span{color:var(--aic-grey);font-weight:500}
/* CARDS */
.form-card{background:var(--aic-white);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1rem;box-shadow:var(--shadow-sm)}
.form-card-header{display:flex;align-items:center;gap:10px;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--aic-grey-xlight)}
.form-card-icon{width:32px;height:32px;background:var(--aic-blue-pale);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.form-card-title{font-family:var(--font-cond);font-size:14px;font-weight:600;color:var(--aic-blue-dark);letter-spacing:.03em;text-transform:uppercase}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.form-grid .full{grid-column:1/-1}
/* BARS */
.info-bar{background:var(--aic-blue-pale);border:1px solid rgba(41,98,184,.18);border-left:3px solid var(--aic-blue-mid);border-radius:var(--radius);padding:10px 14px;font-size:12.5px;color:var(--aic-blue);margin-bottom:1.25rem;display:flex;gap:8px;align-items:flex-start}
.warn-bar{background:#fff8e6;border:1px solid rgba(240,165,0,.25);border-left:3px solid var(--aic-accent);border-radius:var(--radius);padding:10px 14px;font-size:12.5px;color:#8a5c00;margin-bottom:1.25rem;display:flex;gap:8px;align-items:flex-start}
/* TABLE */
.table-wrap{background:var(--aic-white);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}
.table-toolbar{display:flex;align-items:center;padding:12px 16px;gap:10px;border-bottom:1px solid var(--aic-grey-xlight);flex-wrap:wrap}
.ttitle{font-family:var(--font-cond);font-size:14px;font-weight:600;color:var(--aic-blue-dark);text-transform:uppercase;letter-spacing:.04em;flex:1}
.search-input{background:var(--aic-grey-bg);border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:6px 10px;color:var(--aic-grey-dark);font-family:var(--font);font-size:13px;outline:none;width:200px}
.search-input:focus{border-color:var(--aic-blue-light)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead tr{background:var(--aic-grey-bg)}
th{padding:9px 14px;text-align:left;font-size:10px;font-family:var(--font-cond);text-transform:uppercase;letter-spacing:.08em;color:var(--aic-grey-mid);font-weight:600;white-space:nowrap;border-bottom:1px solid var(--aic-grey-xlight)}
td{padding:10px 14px;border-bottom:1px solid var(--aic-grey-xlight);color:var(--aic-grey);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--aic-blue-xpale)}
td.primary{color:var(--aic-grey-dark);font-weight:500}
td.mono{font-family:'Courier New',monospace;font-size:12px;color:var(--aic-blue)}
.empty-state{padding:3rem;text-align:center;color:var(--aic-grey-mid);font-size:13px}
.empty-state .ei{font-size:36px;margin-bottom:12px;opacity:.5}
.empty-state p{margin-bottom:1rem;color:var(--aic-grey)}
/* TAGS */
.type-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-family:var(--font-cond);font-weight:600;letter-spacing:.03em;text-transform:uppercase}
.tag-net{background:var(--net-bg);color:var(--net-color)}.tag-srv{background:var(--srv-bg);color:var(--srv-color)}.tag-sec{background:var(--sec-bg);color:var(--sec-color)}.tag-snmp{background:var(--aic-blue-pale);color:var(--aic-blue)}
/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:1.5rem}
.stat-card{background:var(--aic-white);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--shadow-sm);border-top:3px solid transparent}
.stat-card .slbl{font-size:10px;font-family:var(--font-cond);text-transform:uppercase;letter-spacing:.08em;color:var(--aic-grey-mid);font-weight:600;margin-bottom:8px}
.stat-card .sval{font-size:32px;font-weight:600;font-family:var(--font-cond);line-height:1;color:var(--aic-blue-dark)}
.stat-card .ssub{font-size:11px;color:var(--aic-grey-mid);margin-top:6px}
.stat-total{border-top-color:var(--aic-blue-mid)}.stat-net{border-top-color:var(--net-color)}.stat-net .sval{color:var(--net-color)}
.stat-srv{border-top-color:var(--srv-color)}.stat-srv .sval{color:var(--srv-color)}.stat-sec{border-top-color:var(--sec-color)}.stat-sec .sval{color:var(--sec-color)}
/* PROG */
.pb{height:6px;background:var(--aic-grey-xlight);border-radius:3px;overflow:hidden}
.pf{height:100%;background:var(--aic-blue-mid);border-radius:3px;transition:width .4s}
/* SITE LIST */
.site-item{display:flex;align-items:center;background:var(--aic-grey-bg);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:10px 14px;gap:10px;margin-bottom:8px}
.site-icon{width:28px;height:28px;background:var(--aic-blue-pale);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0}
.site-info{flex:1}
.site-name{font-weight:600;color:var(--aic-grey-dark);font-size:13px}
.site-meta{font-size:11px;color:var(--aic-grey-mid);margin-top:1px}
.site-add-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.site-add-row .field-wrap{flex:1;min-width:160px;margin-bottom:0}
/* INFRA TABS */
.infra-tabs{display:flex;gap:4px;margin-bottom:1.25rem;background:var(--aic-grey-xlight);padding:4px;border-radius:var(--radius)}
.infra-tab{flex:1;text-align:center;padding:7px 6px;border-radius:calc(var(--radius) - 2px);font-size:12px;font-family:var(--font-cond);font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;color:var(--aic-grey-mid);transition:all .15s;border:none;background:transparent}
.infra-tab.active{background:var(--aic-white);color:var(--aic-blue);box-shadow:var(--shadow-sm)}
.infra-panel{display:none}.infra-panel.active{display:block}
/* MODAL */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(13,45,94,.45);z-index:200;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.modal-overlay.open{display:flex}
.modal{background:var(--aic-white);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius-lg);padding:1.75rem;width:100%;max-width:440px;margin:1rem;box-shadow:0 8px 32px rgba(13,45,94,.18)}
.modal h3{font-family:var(--font-cond);font-size:16px;font-weight:700;color:var(--aic-blue-dark);margin-bottom:.5rem}
.modal p{font-size:13px;color:var(--aic-grey);margin-bottom:1.25rem}
.modal-actions{display:flex;gap:8px;justify-content:flex-end}
/* TOAST */
.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast-msg{background:var(--aic-white);border:1px solid var(--aic-grey-xlight);border-left:3px solid var(--aic-blue-mid);border-radius:var(--radius);padding:10px 16px;font-size:13px;color:var(--aic-grey-dark);box-shadow:var(--shadow);animation:slideIn .2s ease;max-width:320px}
.toast-msg.success{border-left-color:#1a7a4a}.toast-msg.error{border-left-color:#c0392b;color:#c0392b}
@keyframes slideIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-bottom:2rem;padding-top:.5rem}
/* BADGES PARTIES (suivi des actions) */
.suivi-party{display:inline-block;padding:1px 7px;border-radius:4px;font-size:11px;font-weight:700;font-family:var(--font-cond);letter-spacing:.04em}
.suivi-aic{background:var(--aic-blue-pale);color:var(--aic-blue);border:1px solid rgba(41,98,184,.25)}
.suivi-eti{background:rgba(240,165,0,.12);color:#7a5000;border:1px solid rgba(240,165,0,.3)}

/* FORM GENERIQUE — modals et formulaires inline */
.form-group{margin-bottom:1rem}
.form-label{display:block;font-size:11px;font-weight:600;color:var(--aic-grey);text-transform:uppercase;letter-spacing:.07em;margin-bottom:5px}
.form-input{width:100%;background:var(--aic-grey-bg);border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:8px 10px;color:var(--aic-grey-dark);font-family:var(--font);font-size:13px;outline:none;transition:border-color .15s;resize:vertical}
.form-input:focus{border-color:var(--aic-blue-mid);background:var(--aic-white)}
.form-select{width:100%;background:var(--aic-grey-bg);border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:8px 10px;color:var(--aic-grey-dark);font-family:var(--font);font-size:13px;outline:none;cursor:pointer;transition:border-color .15s}
.form-select:focus{border-color:var(--aic-blue-mid);background:var(--aic-white)}
.snmp-box{background:var(--aic-grey-bg);border:1px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:1rem 1.25rem;font-family:'Courier New',monospace;font-size:12px;color:var(--aic-grey);line-height:1.9}
.snmp-key{color:var(--aic-blue);font-weight:600}.snmp-val{color:var(--aic-blue-dark)}

/* ============================================================
   MODULE GESTIONNAIRE DE PROJET
   ============================================================ */

/* PROJET — cartes stats */
.projet-header{background:var(--aic-blue-dark);color:white;border-radius:var(--radius-lg);padding:1.25rem 1.5rem;margin-bottom:1.25rem;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.projet-header-title{font-family:var(--font-cond);font-size:20px;font-weight:700;letter-spacing:.03em}
.projet-header-sub{font-size:12px;color:rgba(255,255,255,.6);margin-top:4px}
.projet-header-meta{display:flex;gap:2rem;flex-wrap:wrap}
.projet-header-item{font-size:12px;color:rgba(255,255,255,.7);display:flex;flex-direction:column;gap:2px}
.projet-header-item strong{color:white;font-size:13px}
.projet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:1.25rem}
.projet-card{background:white;border-radius:var(--radius-lg);border:1px solid var(--aic-grey-xlight);padding:1.1rem 1.25rem}
.pc-label{font-size:11px;font-weight:600;color:var(--aic-grey-mid);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px}
.pc-val{font-size:28px;font-weight:700;color:var(--aic-blue-dark);font-family:var(--font-cond);line-height:1}
.pc-sub{font-size:12px;color:var(--aic-grey-mid);margin-top:4px}
.pc-warn{border-left:3px solid var(--aic-accent)}
.pc-ok{border-left:3px solid var(--srv-color)}
.pc-alert{border-left:3px solid #c0392b}

/* PROGRESS BAR */
.pb{height:6px;background:var(--aic-grey-xlight);border-radius:3px;overflow:hidden}
.pf{height:100%;background:var(--aic-blue-mid);border-radius:3px;transition:width .4s}
.pf.green{background:var(--srv-color)}

/* PHASES */
.phase-block{background:white;border-radius:var(--radius-lg);border:1px solid var(--aic-grey-xlight);margin-bottom:1rem;overflow:hidden}
.phase-hdr{display:flex;align-items:center;gap:14px;padding:1rem 1.25rem;background:var(--aic-grey-bg);border-bottom:1px solid var(--aic-grey-xlight);cursor:pointer;user-select:none}
.phase-num{width:34px;height:34px;border-radius:50%;background:var(--aic-blue);color:white;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0;font-family:var(--font-cond)}
.phase-info{flex:1}
.phase-title{font-weight:700;color:var(--aic-blue-dark);font-family:var(--font-cond);font-size:14px;letter-spacing:.02em;text-transform:uppercase}
.phase-dates{font-size:11px;color:var(--aic-grey-mid);margin-top:2px}
.phase-pct{font-size:18px;font-weight:700;color:var(--aic-blue);font-family:var(--font-cond);min-width:42px;text-align:right}
.phase-statut{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px}
.ps-a_venir{background:var(--aic-grey-xlight);color:var(--aic-grey)}
.ps-en_cours{background:#fff3cd;color:#7a5000}
.ps-termine{background:#d1e7dd;color:#0a3622}
.phase-body{padding:0}

/* TÂCHES */
.tache-row{display:flex;align-items:center;gap:12px;padding:10px 1.25rem;border-bottom:1px solid var(--aic-grey-xlight)}
.tache-row:last-child{border-bottom:none}
.tache-dot{width:20px;height:20px;border-radius:50%;border:2px solid currentColor;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px}
.td-a_faire{color:var(--aic-grey-light)}
.td-en_cours{color:var(--aic-accent);background:rgba(240,165,0,.1)}
.td-realise{color:var(--srv-color);background:rgba(26,122,74,.1)}
.td-valide{color:#0a3622;background:#d1e7dd}
.tache-titre{flex:1;font-size:13px;color:var(--aic-grey-dark)}
.tache-resp{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}
.tr-aic{background:var(--aic-blue-pale);color:var(--aic-blue)}
.tr-eti{background:rgba(240,165,0,.15);color:#7a5000}
.tr-commun{background:var(--aic-grey-xlight);color:var(--aic-grey)}
.tache-dates{font-size:11px;color:var(--aic-grey-mid);white-space:nowrap}
.tache-status-sel{font-size:12px;border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:3px 6px;background:white;color:var(--aic-grey-dark);cursor:pointer}

/* LIVRABLES */
.livrable-row{display:flex;align-items:center;gap:10px;padding:8px 1.25rem;border-bottom:1px solid var(--aic-grey-xlight)}
.livrable-row:last-child{border-bottom:none}
.liv-ico{font-size:14px;flex-shrink:0}
.liv-titre{flex:1;font-size:13px;color:var(--aic-grey-dark)}
.liv-statut{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase}
.ls-attendu{background:var(--aic-grey-xlight);color:var(--aic-grey)}
.ls-remis{background:#fff3cd;color:#7a5000}
.ls-valide{background:#d1e7dd;color:#0a3622}

/* JALONS */
.jalon-row{display:flex;align-items:center;gap:12px;padding:10px 1.25rem;border-bottom:1px solid var(--aic-grey-xlight)}
.jalon-row:last-child{border-bottom:none}
.jalon-diamond{width:18px;height:18px;background:var(--aic-accent);transform:rotate(45deg);flex-shrink:0;border-radius:2px}
.jalon-diamond.ok{background:var(--srv-color)}
.jalon-titre{flex:1;font-size:13px;font-weight:600;color:var(--aic-grey-dark)}
.jalon-fact{font-size:11px;color:var(--aic-grey-mid)}
.jalon-date{font-size:12px;color:var(--aic-grey-mid)}

/* GANTT */
.gantt-outer{background:white;border-radius:var(--radius-lg);border:1px solid var(--aic-grey-xlight);overflow:hidden;margin-bottom:1.5rem}
.gantt-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.gantt-table{border-collapse:collapse;width:100%}
.gantt-th-label{position:sticky;left:0;z-index:3;background:var(--aic-blue-dark);color:rgba(255,255,255,.7);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:10px 14px;white-space:nowrap;min-width:230px;border-right:2px solid rgba(255,255,255,.1)}
.gantt-th-week{background:var(--aic-blue-dark);color:rgba(255,255,255,.8);font-size:11px;font-weight:600;padding:10px 0;text-align:center;min-width:110px;border-left:1px solid rgba(255,255,255,.08);white-space:nowrap}
.gantt-td-label{position:sticky;left:0;z-index:2;background:white;border-right:2px solid var(--aic-grey-xlight);border-bottom:1px solid var(--aic-grey-xlight);padding:0 14px;font-size:12px;white-space:nowrap;max-width:230px;overflow:hidden;text-overflow:ellipsis;height:38px}
.gantt-td-label.phase{background:var(--aic-grey-bg);font-weight:700;color:var(--aic-blue-dark);font-family:var(--font-cond);text-transform:uppercase;font-size:11px;letter-spacing:.04em}
.gantt-td-label.task{padding-left:28px;color:var(--aic-grey-dark)}
.gantt-td-label.jalon-row-lbl{padding-left:28px;color:var(--aic-grey-mid);font-style:italic;font-size:11px}
.gantt-td-bar{border-bottom:1px solid var(--aic-grey-xlight);border-left:1px solid var(--aic-grey-xlight);position:relative;height:38px;min-width:110px;background:white}
.gantt-td-bar.phase-bg{background:var(--aic-blue-xpale)}
.gantt-bar{position:absolute;border-radius:3px;height:20px;top:9px;display:flex;align-items:center;padding:0 6px;font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;pointer-events:none}
.gb-phase{height:26px;top:6px;border-radius:4px;color:white;font-size:11px}
.gb-p1{background:var(--aic-blue)}
.gb-p2{background:var(--aic-blue-dark)}
.gb-aic{background:var(--aic-blue-light);color:white}
.gb-eti{background:var(--aic-accent);color:#3d2600}
.gb-commun{background:var(--srv-color);color:white}
.gb-placeholder{background:var(--aic-grey-light);color:white;opacity:.5}
.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:#e74c3c;z-index:4}
.gantt-milestone-cell{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
.gantt-milestone-cell::before{content:'◆';color:var(--aic-accent);font-size:16px;display:block;line-height:1}
.gantt-no-dates{padding:2.5rem;text-align:center;color:var(--aic-grey-mid);font-size:13px}
.gantt-legend{display:flex;gap:16px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--aic-grey-xlight);font-size:11px}
.gantt-legend-item{display:flex;align-items:center;gap:5px;color:var(--aic-grey)}
.gantt-legend-dot{width:12px;height:12px;border-radius:2px}

/* JOURNAL */
.journal-wrap{display:flex;flex-direction:column;gap:10px}
.jentry{background:white;border-radius:var(--radius-lg);border:1px solid var(--aic-grey-xlight);overflow:hidden}
.jentry.pending{border-left:3px solid var(--aic-accent)}
.jentry.valide{border-left:3px solid var(--srv-color)}
.jentry.refuse{border-left:3px solid #c0392b}
.jentry-head{display:flex;align-items:flex-start;gap:12px;padding:12px 16px}
.javatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;font-family:var(--font-cond);letter-spacing:.03em}
.jav-admin{background:rgba(240,165,0,.15);color:#7a5000}
.jav-prestataire{background:var(--aic-blue-pale);color:var(--aic-blue)}
.jentry-meta{flex:1;min-width:0}
.jentry-who{font-weight:700;font-size:13px;color:var(--aic-grey-dark)}
.jentry-sub{font-size:11px;color:var(--aic-grey-mid);margin-top:2px}
.jentry-type{font-size:10px;font-weight:700;padding:2px 9px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;flex-shrink:0}
.jt-info{background:var(--aic-blue-pale);color:var(--aic-blue)}
.jt-action{background:rgba(240,165,0,.15);color:#7a5000}
.jt-livrable{background:#d1e7dd;color:#0a3622}
.jt-blocage{background:#fbeaea;color:#c0392b}
.jentry-body{padding:0 16px 14px 66px}
.jentry-title{font-weight:700;font-size:14px;color:var(--aic-grey-dark);margin-bottom:6px}
.jentry-desc{font-size:13px;color:var(--aic-grey);line-height:1.7;white-space:pre-wrap}
.jentry-foot{display:flex;align-items:center;gap:10px;padding:9px 16px;background:var(--aic-grey-bg);border-top:1px solid var(--aic-grey-xlight);flex-wrap:wrap}
.vbadge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px}
.vb-pending{background:#fff3cd;color:#7a5000}
.vb-ok{background:#d1e7dd;color:#0a3622}
.vb-ko{background:#fbeaea;color:#c0392b}
.btn-validate{background:#1a7a4a;color:white;font-size:12px;padding:5px 12px}
.btn-validate:hover{background:#145c38}
.btn-refuse{background:#c0392b;color:white;font-size:12px;padding:5px 12px}
.btn-refuse:hover{background:#a93226}

/* EMAIL LOG */
.email-log-table{width:100%;border-collapse:collapse;font-size:12px;background:white;border-radius:var(--radius);overflow:hidden;border:1px solid var(--aic-grey-xlight)}
.email-log-table thead tr{background:var(--aic-blue-pale)}
.email-log-table th{padding:8px 12px;text-align:left;font-size:11px;font-weight:700;color:var(--aic-grey);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--aic-grey-xlight)}
.email-log-table td{padding:9px 12px;border-bottom:1px solid var(--aic-grey-xlight);vertical-align:top;color:var(--aic-grey-dark)}
.email-log-table tbody tr:last-child td{border-bottom:none}
.email-log-table tbody tr:hover{background:var(--aic-blue-pale)}
.etag{font-size:10px;font-weight:700;padding:1px 7px;border-radius:8px}
.etag-ok{background:#d1e7dd;color:#0a3622}
.etag-err{background:#fbeaea;color:#c0392b}

/* TABS */
.tab-bar{display:flex;gap:2px;border-bottom:2px solid var(--aic-grey-xlight);margin-bottom:1.25rem}
.tab-btn{padding:8px 18px;background:none;border:none;cursor:pointer;font-family:var(--font);font-size:13px;font-weight:600;color:var(--aic-grey-mid);border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}
.tab-btn.active{color:var(--aic-blue);border-bottom-color:var(--aic-blue)}
.tab-panel{display:none}.tab-panel.active{display:block}

/* CONFIG FORM */
.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:640px){.config-grid{grid-template-columns:1fr}}
.inline-date{font-size:12px;border:1.5px solid var(--aic-grey-xlight);border-radius:var(--radius);padding:3px 7px;background:white;color:var(--aic-grey-dark);cursor:pointer;font-family:var(--font)}
.inline-date:focus{border-color:var(--aic-blue-mid);outline:none}

