:root{
  --navy:#1F3A5F; --navy-700:#16293f; --slate:#5A6B7B; --ice:#EAF1F6; --ice-2:#F4F8FB;
  --gold:#B08A3E; --gold-lt:#C9A24B; --line:#D5DEE6; --bg:#F7FAFC; --white:#fff;
  --green:#2F7D5B; --green-bg:#E3F1EA; --amber:#B7791F; --amber-bg:#FBF1DD;
  --red:#B23B3B; --red-bg:#F8E5E5; --txt:#26323D;
  --shadow:0 1px 3px rgba(31,58,95,.08),0 4px 16px rgba(31,58,95,.06);
  /* pastels tableau de bord */
  --p-blue:#E8F0F8;   --p-blue-t:#3A5A82;
  --p-amber:#FBF2E0;  --p-amber-t:#9A7327;
  --p-mint:#E6F2EC;   --p-mint-t:#2F7D5B;
  --p-gold:#F6EEDA;   --p-gold-t:#9A7733;
  --p-lilac:#EFEAF5;  --p-lilac-t:#6B5191;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--txt);font-size:14px;line-height:1.5}
h1,h2,h3{font-family:Georgia,"Cambria",serif;color:var(--navy);font-weight:600;margin:0}
button{font-family:inherit;cursor:pointer}
a{color:var(--navy)}
.hidden{display:none!important}

/* top bar */
header.top{background:var(--navy);color:#fff;padding:0 20px;display:flex;align-items:center;gap:16px;height:60px;position:sticky;top:0;z-index:50;box-shadow:var(--shadow)}
header.top .brand{font-family:Georgia,serif;font-size:20px;font-weight:600;line-height:1}
header.top .brand small{display:block;font-size:10px;color:#AEC2D6;letter-spacing:1px;font-weight:400}
header.top nav{display:flex;gap:2px;margin-left:8px;flex-wrap:wrap}
header.top nav a{color:#C9D8E6;padding:8px 13px;border-radius:8px;font-size:13.5px;text-decoration:none}
header.top nav a:hover{background:rgba(255,255,255,.08);color:#fff}
header.top nav a.active{background:#fff;color:var(--navy);font-weight:600}
header.top .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.ver{font-size:11px;color:#9DB4CC;background:rgba(255,255,255,.07);padding:3px 8px;border-radius:6px;font-weight:600}
.mode-badge{font-size:11px;padding:5px 10px;border-radius:20px;font-weight:600}
.r-admin{background:var(--gold);color:#fff} .r-pilote{background:#37506e;color:#cfe} .r-obs{background:#2a3f57;color:#bcd}
.who{font-size:12.5px;color:#cfe}
.icon-btn{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:8px;padding:7px 12px;font-size:12.5px;text-decoration:none}
.icon-btn:hover{background:rgba(255,255,255,.22)}

main{max-width:1180px;margin:24px auto;padding:0 20px 40px;min-height:60vh}
footer.foot{max-width:1180px;margin:0 auto;padding:18px 20px 40px;color:var(--slate);font-size:11.5px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line)}

.view-title{display:flex;align-items:baseline;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.view-title h1{font-size:24px}.view-title p{color:var(--slate);margin:0;font-size:13px}

.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:20px;margin-bottom:18px}
.panel h2{font-size:17px;margin-bottom:14px}
.grid{display:grid;gap:16px}.g-2{grid-template-columns:repeat(2,1fr)}.g-3{grid-template-columns:repeat(3,1fr)}.g-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:820px){.g-2,.g-3,.g-4{grid-template-columns:1fr}}

/* pastel stat tiles */
.stat{border-radius:14px;padding:18px;box-shadow:var(--shadow);border:1px solid transparent}
.stat .n{font-family:Georgia,serif;font-size:34px;line-height:1}
.stat .l{font-size:12.5px;margin-top:6px;opacity:.9}
.stat.t-blue{background:var(--p-blue)}   .stat.t-blue .n,.stat.t-blue .l{color:var(--p-blue-t)}
.stat.t-amber{background:var(--p-amber)} .stat.t-amber .n,.stat.t-amber .l{color:var(--p-amber-t)}
.stat.t-mint{background:var(--p-mint)}   .stat.t-mint .n,.stat.t-mint .l{color:var(--p-mint-t)}
.stat.t-gold{background:var(--p-gold)}   .stat.t-gold .n,.stat.t-gold .l{color:var(--p-gold-t)}
.stat.t-lilac{background:var(--p-lilac)} .stat.t-lilac .n,.stat.t-lilac .l{color:var(--p-lilac-t)}

/* forms */
label.field{display:block;margin-bottom:12px}
label.field>span{display:block;font-size:12px;color:var(--slate);margin-bottom:4px;font-weight:600}
input[type=text],input[type=date],input[type=password],input[type=number],select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px;font-family:inherit;background:#fff;color:var(--txt)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--navy);border-color:var(--navy)}
textarea{resize:vertical;min-height:64px}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:140px}
.checks{display:flex;gap:16px;flex-wrap:wrap;margin-top:4px}.checks label{display:flex;align-items:center;gap:6px;font-size:13.5px;cursor:pointer}

.btn{background:var(--navy);color:#fff;border:0;border-radius:9px;padding:10px 18px;font-size:14px;font-weight:600}
.btn:hover{background:var(--navy-700)}.btn.full{width:100%}
.btn.gold{background:var(--gold)}.btn.gold:hover{background:#9a7733}
.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--line)}.btn.ghost:hover{background:var(--ice)}
.btn.sm{padding:6px 12px;font-size:12.5px;border-radius:8px}
.btn.danger{background:#fff;color:var(--red);border:1px solid #e8c5c5}.btn.danger:hover{background:var(--red-bg)}
.btn:disabled{opacity:.45;cursor:not-allowed}

.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px}
.b-c{background:var(--green-bg);color:var(--green)}.b-ncm{background:var(--amber-bg);color:var(--amber)}
.b-ncma{background:var(--red-bg);color:var(--red)}.b-grey{background:#eef2f5;color:var(--slate)}.b-gold{background:#f6edd9;color:var(--gold)}

table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--slate);font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:8px 10px;border-bottom:2px solid var(--line);font-weight:700}
td{padding:9px 10px;border-bottom:1px solid #eef2f5;vertical-align:top}
tr:hover td{background:var(--ice-2)}.clickable{cursor:pointer}

.collab-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow);cursor:pointer;transition:.12s}
.collab-card:hover{border-color:var(--navy);transform:translateY(-1px)}
.avatar{width:42px;height:42px;border-radius:50%;background:var(--ice);color:var(--navy);display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:16px;font-weight:600;flex-shrink:0}
.collab-card .meta{flex:1;min-width:0}.collab-card .meta .nm{font-weight:600;color:var(--navy)}.collab-card .meta .sub{font-size:12px;color:var(--slate)}
.progbar{height:7px;background:#eef2f5;border-radius:5px;overflow:hidden;margin-top:5px}.progbar>i{display:block;height:100%;background:var(--gold);border-radius:5px}
.tag-line{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

.modal-bg{position:fixed;inset:0;background:rgba(22,41,63,.42);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow:auto}
.modal{background:#fff;border-radius:16px;max-width:760px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden}
.modal header{background:var(--navy);color:#fff;padding:16px 22px;display:flex;align-items:center;justify-content:space-between}
.modal header h3{color:#fff;font-size:17px}
.modal .body{padding:22px;max-height:70vh;overflow:auto}
.modal .foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;background:var(--ice-2)}
.close-x{background:transparent;border:0;color:#cde;font-size:22px;line-height:1;cursor:pointer}

.opp-block{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden}
.opp-block>.h{background:var(--ice);padding:11px 15px;display:flex;align-items:center;justify-content:space-between}
.opp-block>.h .t{font-weight:600;color:var(--navy);font-size:13.5px}.opp-block>.h .opg{font-size:11.5px;color:var(--slate);font-style:italic;margin-top:2px;max-width:560px}
.opp-row{display:flex;align-items:center;gap:10px;padding:9px 15px;border-top:1px solid #eef2f5}.opp-row:hover{background:var(--ice-2)}
.opp-row .num{font-weight:700;color:var(--navy);font-size:12px;width:42px;flex-shrink:0}.opp-row .lbl{flex:1;font-size:13px}
.opp-row .tax{font-size:10.5px;color:var(--slate);background:#eef2f5;padding:2px 7px;border-radius:10px;flex-shrink:0}
.switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:#cdd6df;border-radius:24px;transition:.18s}.slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.18s}
.switch input:checked+.slider{background:var(--green)}.switch input:checked+.slider:before{transform:translateX(20px)}

.empty{text-align:center;color:var(--slate);padding:50px 20px}.empty .big{font-family:Georgia,serif;font-size:18px;color:var(--navy);margin-bottom:6px}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.toolbar .sp{flex:1}
.pill-filter{display:flex;gap:6px;flex-wrap:wrap}.pill-filter button{background:#fff;border:1px solid var(--line);border-radius:20px;padding:6px 13px;font-size:12.5px;color:var(--slate)}.pill-filter button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.hint{font-size:12px;color:var(--slate);background:var(--ice-2);border:1px solid var(--line);border-radius:9px;padding:10px 13px;margin-bottom:14px}
.deadline{font-size:11.5px;font-weight:600}.deadline.ok{color:var(--green)}.deadline.warn{color:var(--amber)}.deadline.late{color:var(--red)}
.sect-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--gold);font-weight:700;margin:18px 0 8px}
.crit-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;margin-bottom:8px}.crit-item .cl{flex:1;font-size:13px}.crit-item select{max-width:170px}
.filebox{border:1px dashed var(--line);border-radius:10px;padding:14px;text-align:center;color:var(--slate);font-size:12.5px;margin-bottom:8px}
.thumb{display:inline-block;width:84px;height:60px;border-radius:7px;border:1px solid var(--line);object-fit:cover;margin:4px;cursor:pointer;background:var(--ice)}
.cert-num{font-family:Georgia,serif;font-size:16px;color:var(--gold);letter-spacing:1px}
.lockwarn{background:var(--amber-bg);color:var(--amber);border:1px solid #e9d4a8;border-radius:9px;padding:10px 13px;font-size:13px;margin-bottom:14px;font-weight:600}

/* login */
.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1F3A5F,#16293f);padding:20px}
.login-card{background:#fff;border-radius:18px;box-shadow:0 20px 60px rgba(0,0,0,.3);padding:36px 34px;max-width:380px;width:100%;text-align:center}
.login-logo{margin-bottom:10px}.login-card h1{font-size:26px;letter-spacing:1px}.login-card .sub{color:var(--slate);font-size:13px;margin:4px 0 20px}
.login-card .field{text-align:left}.login-card .tiny{font-size:11px;color:var(--slate);margin-top:16px}
.alert{background:var(--red-bg);color:var(--red);border-radius:9px;padding:10px 13px;font-size:13px;margin-bottom:14px}
.tiny{font-size:11.5px;color:var(--slate)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 22px;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.3);z-index:200;font-size:14px;max-width:90%}
.copybox{background:var(--ice);border:1px solid var(--line);border-radius:9px;padding:12px;font-family:monospace;font-size:15px;color:var(--navy);text-align:center;margin:10px 0;user-select:all}
