/* TRiADS Cockpit — feuille de style partagée */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0b0e17;--surf:#131720;--surf2:#1a1f2e;--brd:#252a40;--brd2:#2e3450;
  --txt:#e2e8f4;--mut:#6b7a9a;--dim:#3d4a6a;
  --blu:#4d7fff;--blu2:#7aa3ff;--grn:#4ade80;--org:#fb923c;--red:#f87171;--ylw:#fbbf24;--pur:#a78bfa;
}
body{background:var(--bg);color:var(--txt);font-family:'Segoe UI',system-ui,sans-serif;font-size:14px;min-height:100vh}
button{cursor:pointer;font-family:inherit}
a{color:var(--blu)}

/* ── Layout ────────────────────────────────────────────────────────────────── */
#wrap{display:flex;flex-direction:column;min-height:100vh}
#hdr{background:var(--surf);border-bottom:1px solid var(--brd);padding:.65rem 1.25rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;position:sticky;top:0;z-index:10}
.logo{font-weight:800;font-size:.95rem;color:var(--txt)}
.logo em{color:var(--blu);font-style:normal}
#ticker{flex:1;font-size:.78rem;color:var(--mut);min-width:160px}
#ticker.live{color:var(--blu2);font-weight:600}
#main{flex:1;padding:1.25rem;max-width:1100px;width:100%;margin:0 auto}

/* ── Tabs ──────────────────────────────────────────────────────────────────── */
.tabs{display:flex;gap:.25rem;flex-wrap:wrap}
.tab{padding:.35rem .85rem;border-radius:6px;border:none;background:none;color:var(--mut);font-size:.78rem;font-weight:500;transition:all .15s;text-decoration:none;display:inline-flex;align-items:center;cursor:pointer}
.tab:hover{color:var(--txt);background:var(--surf2)}
.tab.on{color:var(--blu);background:#1a2a4a}

/* ── Buttons ───────────────────────────────────────────────────────────────── */
.btn-p{background:var(--blu);color:#fff;border:none;padding:.45rem 1rem;border-radius:6px;font-size:.82rem;font-weight:600}
.btn-p:hover{background:var(--blu2)}
.btn-g{background:none;border:1px solid var(--brd);color:var(--mut);padding:.4rem .85rem;border-radius:6px;font-size:.78rem}
.btn-g:hover{border-color:var(--brd2);color:var(--txt)}
.btn-d{background:#3a1010;color:var(--red);border:1px solid #5a1a1a;padding:.42rem .9rem;border-radius:6px;font-size:.8rem}
.btn-d:hover{background:#4a1515}

/* ── KPIs ──────────────────────────────────────────────────────────────────── */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem;margin-bottom:1.25rem}
.kpi{background:var(--surf);border:1px solid var(--brd);border-radius:10px;padding:.85rem 1rem}
.kv{font-size:1.5rem;font-weight:700;line-height:1;margin-bottom:.2rem}
.kl{font-size:.68rem;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.kpi.c-b .kv{color:var(--blu2)} .kpi.c-p .kv{color:var(--pur)}
.kpi.c-y .kv{color:var(--ylw)} .kpi.c-g .kv{color:var(--grn)} .kpi.c-r .kv{color:var(--red)}

/* ── Active banner ─────────────────────────────────────────────────────────── */
#banner{background:#0d1a35;border:1px solid #1e3a6e;border-radius:10px;padding:.75rem 1.1rem;margin-bottom:1.25rem;display:none;align-items:center;gap:1rem;flex-wrap:wrap}
.bn-lbl{font-size:.68rem;color:#7aa3ff;text-transform:uppercase;letter-spacing:.1em;font-weight:600}
.bn-ttl{font-weight:600;flex:1;min-width:120px}
.bn-tmr{font-size:1.3rem;font-weight:700;font-family:'Courier New',monospace;color:var(--blu2);min-width:90px;text-align:center}
.bn-btn{padding:.38rem .8rem;border-radius:6px;border:none;font-size:.78rem;font-weight:600}
.bn-pause{background:#1e3a6e;color:#7aa3ff} .bn-pause:hover{background:#254d91}
.bn-done{background:#2d1a0a;color:var(--org)} .bn-done:hover{background:#3d240f}

/* ── Filters ───────────────────────────────────────────────────────────────── */
.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;align-items:center}
.fsel{background:var(--surf);border:1px solid var(--brd);color:var(--txt);padding:.32rem .6rem;border-radius:6px;font-size:.77rem}
.fsel:focus{outline:none;border-color:var(--blu)}
.sp{flex:1}

/* ── Cards ─────────────────────────────────────────────────────────────────── */
.cards{display:flex;flex-direction:column;gap:.55rem}
.card{background:var(--surf);border:1px solid var(--brd);border-radius:8px;padding:.75rem 1rem;display:flex;align-items:flex-start;gap:.75rem;transition:border-color .15s}
.card:hover{border-color:var(--brd2)}
.card.run{border-color:#1e3a6e;background:#0d1a35}
.card.done{opacity:.5}
.pbar{width:3px;border-radius:2px;align-self:stretch;flex-shrink:0}
.p1{background:var(--red)} .p2{background:var(--ylw)} .p3{background:var(--dim)}
.cmain{flex:1;min-width:0}
.ctitle{font-weight:600;font-size:.875rem;margin-bottom:.3rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmeta{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.bdg{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:999px;font-size:.68rem;font-weight:600;white-space:nowrap}
.s-todo{background:#1e2535;color:#94a3b8} .s-ip{background:#1a2d5a;color:#60a5fa}
.s-done{background:#14301f;color:#4ade80} .s-def{background:#2d1a0a;color:#fb923c}
.b-dom{background:var(--surf2);color:var(--mut);border:1px solid var(--brd)} .b-act{background:#1f1535;color:#a78bfa}
.ctime{font-size:.8rem;font-family:'Courier New',monospace;color:var(--mut);min-width:58px;text-align:right;padding-top:.1rem}
.ctime.run{color:var(--blu2);font-weight:700}
.csd{font-size:.7rem;color:var(--dim);margin-top:.15rem}
.cacts{display:flex;gap:.3rem;flex-shrink:0}
.ib{width:28px;height:28px;border-radius:6px;border:1px solid var(--brd);background:none;color:var(--mut);font-size:.8rem;display:flex;align-items:center;justify-content:center;transition:all .15s}
.ib:hover{border-color:var(--brd2);color:var(--txt);background:var(--surf2)}
.ib.run{color:var(--blu);border-color:#1e3a6e} .ib.run:hover{background:#1a2d5a}
.ib.ok{color:var(--grn);border-color:#163020} .ib.ok:hover{background:#14301f}
.empty{text-align:center;padding:3rem 1rem;color:var(--mut)}

/* ── Journal ───────────────────────────────────────────────────────────────── */
.jnav{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap}
.jnav h2{font-size:1rem;font-weight:700}
.jdate{font-weight:600;font-size:.88rem;min-width:180px;text-align:center}
.jnav button{width:28px;height:28px;border:1px solid var(--brd);background:none;color:var(--mut);border-radius:6px;font-size:.9rem}
.jnav button:hover{border-color:var(--brd2);color:var(--txt)}
.jtotals{background:var(--surf);border:1px solid var(--brd);border-radius:8px;padding:.85rem 1rem;margin-bottom:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.5rem}
.jti{text-align:center} .jti .v{font-size:1.1rem;font-weight:700} .jti .l{font-size:.68rem;color:var(--mut);text-transform:uppercase}
.dhdr{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--surf2);border-radius:8px;margin-bottom:.4rem;border:1px solid var(--brd)}
.dname{font-weight:600;font-size:.83rem} .dtime{font-family:'Courier New',monospace;font-size:.82rem;color:var(--blu2)}
.dsec{margin-bottom:1.25rem}

/* ── Modal ─────────────────────────────────────────────────────────────────── */
#ov{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);z-index:9999}
#mbox{background:var(--surf);border:1px solid var(--brd2);border-radius:12px;width:90%;max-width:560px;max-height:88vh;overflow-y:auto;padding:1.5rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
#mbox h2{font-size:1rem;font-weight:700;margin-bottom:1.25rem}
.frow{display:grid;gap:.75rem;margin-bottom:.75rem}
.frow.r1{grid-template-columns:1fr} .frow.r2{grid-template-columns:1fr 1fr} .frow.r3{grid-template-columns:1fr 1fr 1fr}
.fl label{display:block;font-size:.72rem;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.3rem;font-weight:600}
.fl input,.fl select,.fl textarea{width:100%;background:var(--bg);border:1px solid var(--brd);color:var(--txt);padding:.5rem .65rem;border-radius:6px;font-family:inherit;font-size:.83rem}
.fl input:focus,.fl select:focus,.fl textarea:focus{outline:none;border-color:var(--blu)}
.fl textarea{resize:vertical;min-height:64px}
.mfooter{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.25rem}
.time-cur{font-size:.78rem;color:var(--blu2);font-family:'Courier New',monospace;margin-top:.28rem}
.time-warn{font-size:.72rem;color:var(--ylw);margin-top:.32rem}

/* ── Auth overlay ──────────────────────────────────────────────────────────── */
#auth-ov{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg);z-index:99999;display:flex;align-items:center;justify-content:center}
.auth-box{background:var(--surf);border:1px solid var(--brd2);border-radius:16px;padding:2.25rem 2rem;width:90%;max-width:400px}
.auth-logo{font-size:2rem;font-weight:800;margin-bottom:.15rem;letter-spacing:-.01em;text-align:center}
.auth-logo em{color:var(--blu);font-style:normal}
.auth-sub{font-size:.68rem;color:var(--mut);text-transform:uppercase;letter-spacing:.12em;margin-bottom:1.75rem;text-align:center}
.auth-lbl{font-size:.8rem;color:var(--mut);margin-bottom:.9rem;line-height:1.5;text-align:center}
.auth-info{font-size:.82rem;color:var(--grn);margin-bottom:1.25rem;line-height:1.6;text-align:center;padding:.75rem;background:#0e1f12;border-radius:8px;border:1px solid #1e4030}
.auth-inp{width:100%;background:var(--bg);border:1px solid var(--brd);color:var(--txt);padding:.62rem .85rem;border-radius:8px;font-family:inherit;font-size:.92rem;margin-bottom:.5rem;display:block}
.auth-inp:focus{outline:none;border-color:var(--blu)}
.auth-pwd-wrap{position:relative;width:100%;margin-bottom:.5rem}
.auth-pwd-wrap .auth-inp{margin-bottom:0;padding-right:2.75rem;letter-spacing:.15em}
.eye-btn{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--mut);cursor:pointer;padding:.2rem;line-height:1;display:flex;align-items:center;justify-content:center}
.eye-btn:hover{color:var(--txt)}
.auth-err{font-size:.73rem;color:var(--red);min-height:1.1rem;margin-bottom:.5rem;line-height:1.4}
.auth-btn{width:100%;padding:.65rem;border-radius:8px;border:none;background:var(--blu);color:#fff;font-family:inherit;font-size:.88rem;font-weight:700;cursor:pointer;margin-bottom:.75rem}
.auth-btn:hover{background:var(--blu2)}
.auth-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.25rem}
.auth-lnk{background:none;border:none;color:var(--mut);font-size:.72rem;cursor:pointer;text-decoration:underline;font-family:inherit;padding:0}
.auth-lnk:hover{color:var(--txt)}
.auth-foot{font-size:.62rem;color:var(--dim);line-height:1.6;text-align:center;margin-top:1.25rem;border-top:1px solid var(--brd);padding-top:.85rem}
.auth-state{width:100%}
#lock-btn{background:none;border:1px solid var(--brd);color:var(--mut);width:30px;height:30px;border-radius:6px;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
#lock-btn:hover{border-color:var(--brd2);color:var(--txt)}

/* ── Finances · Pipeline · Jalons ──────────────────────────────────────────── */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.75rem;margin-bottom:1.25rem}
.panel{background:var(--surf);border:1px solid var(--brd);border-radius:10px;padding:1rem 1.1rem;margin-bottom:0}
.panel h3{font-size:.72rem;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}
.fi-row{display:flex;align-items:center;justify-content:space-between;padding:.42rem 0;border-bottom:1px solid var(--brd);font-size:.83rem}
.fi-row:last-child{border-bottom:none}
.fi-lbl{color:var(--mut);font-size:.78rem}
.fi-val{font-weight:700;font-family:'Courier New',monospace;font-size:.85rem}
.fi-val.pos{color:var(--grn)} .fi-val.neg{color:var(--red)} .fi-val.neu{color:var(--blu2)} .fi-val.ylw{color:var(--ylw)}
.bar-wrap{background:var(--surf2);border-radius:999px;height:7px;overflow:hidden;margin:.5rem 0}
.bar-fill{height:100%;border-radius:999px;transition:width .4s}
.pl-card{background:var(--surf);border:1px solid var(--brd);border-radius:8px;padding:.75rem 1rem;margin-bottom:.5rem;display:flex;align-items:flex-start;gap:.75rem;transition:border-color .15s}
.pl-card:hover{border-color:var(--brd2)}
.st-badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:.67rem;font-weight:700;white-space:nowrap}
.st-id{background:#1e2535;color:#94a3b8} .st-ct{background:#1a2d5a;color:#60a5fa}
.st-dv{background:#1f1535;color:#a78bfa} .st-ng{background:#2d200a;color:#fb923c}
.st-gn{background:#14301f;color:#4ade80} .st-pt{background:#2d1010;color:#f87171}
.jl-item{display:flex;align-items:flex-start;gap:.75rem;padding:.55rem .75rem;background:var(--surf);border:1px solid var(--brd);border-radius:8px;margin-bottom:.4rem;transition:border-color .15s}
.jl-item:hover{border-color:var(--brd2)}
.jl-date{font-family:'Courier New',monospace;font-size:.72rem;min-width:88px;padding-top:.1rem;flex-shrink:0}
.jl-date.late{color:var(--red);font-weight:700} .jl-date.soon{color:var(--ylw);font-weight:600} .jl-date.ok{color:var(--grn)}
.jl-ttl{flex:1;font-size:.85rem;font-weight:500}
.inp{width:100%;background:var(--bg);border:1px solid var(--brd);color:var(--txt);padding:.42rem .65rem;border-radius:6px;font-family:inherit;font-size:.82rem}
.inp:focus{outline:none;border-color:var(--blu)}
.add-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}

/* ── Responsive ────────────────────────────────────────────────────────────── */
@media(max-width:680px){.grid2,.grid3{grid-template-columns:1fr}}
@media(max-width:560px){.frow.r2,.frow.r3{grid-template-columns:1fr}}
