/* ============================================================================
   Diagnostic IA — DIGITALIX · Design system (tokens du handoff / note de cadrage)
   ========================================================================== */
:root{
  --ink:#111111; --ink2:#3d3d3d; --mute:#7a7a7a; --line:#e3e1dc; --paper:#faf9f6; --card:#ffffff;
  --red:#c8102e; --red-soft:#fbe9ec; --blue:#8fb6e8; --blue-soft:#eaf2fc;
  --orange:#f39200; --orange-soft:#fff2df; --ok:#1f7a4d; --ok-soft:#e5f3eb;
  --sans:'Archivo',system-ui,sans-serif; --mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
button{font-family:inherit;cursor:pointer}
a{color:inherit}
.mono{font-family:var(--mono)}
.hidden{display:none !important}

/* pixel motif (logo) */
.pix{height:10px;background:repeating-linear-gradient(90deg,var(--ink) 0 10px,transparent 10px 14px);opacity:.9}

/* ---- BANNIÈRES d'avertissement (règles client) --------------------------- */
.ribbon{background:var(--red);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;text-align:center;padding:6px 10px;line-height:1.4}
.note-hors{display:inline-block;font-family:var(--mono);font-size:10px;background:var(--red-soft);
  color:var(--red);border:1px solid var(--red);padding:1px 6px;text-transform:uppercase;letter-spacing:.05em}
.note-prop{display:inline-block;font-family:var(--mono);font-size:10px;background:var(--orange-soft);
  color:#9a5b00;border:1px solid var(--orange);padding:1px 6px}

/* ============================= PWA APPRENANT ============================== */
#root{min-height:100vh;display:flex;flex-direction:column}
.app-shell{flex:1;display:flex;flex-direction:column;max-width:460px;margin:0 auto;width:100%;
  background:var(--card);min-height:100vh;border-left:1.5px solid var(--line);border-right:1.5px solid var(--line)}

/* top bar mobile */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1.5px solid var(--ink);position:sticky;top:0;background:#fff;z-index:20}
.topbar img{height:26px;display:block}
.topbar .role-switch{font-family:var(--mono);font-size:10.5px;border:1.5px solid var(--ink);background:#fff;padding:5px 10px}

/* progress rail (parcours) */
.steprail{display:flex;gap:4px;padding:10px 16px 0}
.steprail .seg{flex:1;height:5px;background:var(--line)}
.steprail .seg.on{background:var(--ink)}

/* content */
.view{padding:20px 18px 110px;flex:1;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.kicker{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin:0 0 10px}
h1.title{font-size:30px;font-weight:800;line-height:1.05;letter-spacing:-.02em;margin:0 0 10px}
h2.sub{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:22px 0 8px}
p.lead{font-size:15px;color:var(--ink2);margin:0 0 14px}
.meta{font-family:var(--mono);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.08em}

/* cards & lists */
.card{background:#fff;border:1.5px solid var(--ink);padding:16px;margin-bottom:12px}
.card.soft{border-color:var(--line)}
.infoline{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink2);margin:8px 0}
.infoline .ic{font-size:18px;line-height:1;flex:none}

/* form controls */
label.fld{display:block;margin:14px 0 4px;font-size:13px;font-weight:600}
label.fld .opt{color:var(--mute);font-weight:400;font-family:var(--mono);font-size:11px}
input[type=text],input[type=email],input[type=tel],select,textarea{
  width:100%;font-family:inherit;font-size:14.5px;padding:11px 12px;border:1.5px solid var(--ink);background:#fff;border-radius:0}
textarea{min-height:72px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--blue)}
.checkrow{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border:1.5px solid var(--line);margin-top:8px;cursor:pointer;font-size:13.5px;min-height:48px}
.checkrow input{margin-top:3px;accent-color:var(--red);flex:none;width:17px;height:17px}
.checkrow.on{border-color:var(--ink);background:var(--paper)}

/* chips (outils / tags) */
.chip{display:inline-block;font-family:var(--mono);font-size:10.5px;border:1px solid var(--ink);padding:2px 7px;margin:3px 4px 0 0}
.dtag{display:inline-block;font-family:var(--mono);font-size:10.5px;background:var(--blue-soft);padding:2px 8px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:50px;padding:0 18px;
  border:1.5px solid var(--ink);background:#fff;font-weight:700;font-size:15px;border-radius:0;width:100%}
.btn.pri{background:var(--ink);color:#fff}
.btn.red{background:var(--red);color:#fff;border-color:var(--red)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.sm{height:40px;font-size:13px;width:auto}

/* sticky footer nav */
.navbar{position:sticky;bottom:0;background:#fff;border-top:1.5px solid var(--ink);padding:12px 16px 16px;
  display:grid;grid-template-columns:auto 1fr;gap:10px;z-index:20}
.navbar .back{width:56px;height:50px;border:1.5px solid var(--ink);background:#fff;font-size:18px}
.navbar.single{grid-template-columns:1fr}

/* ---- Écran 1.6 : question de diagnostic (référence dessinée) ------------- */
.q-head{padding:2px 0 0}
.q-prog{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--mute)}
.q-bar{height:6px;background:var(--line);margin-top:6px;position:relative;overflow:hidden}
.q-bar i{position:absolute;inset:0 auto 0 0;background:var(--ink);transition:width .3s}
.q-dtag{display:inline-block;margin-top:16px;font-family:var(--mono);font-size:10.5px;background:var(--blue-soft);padding:2px 8px}
.q-title{font-size:17px;font-weight:700;line-height:1.3;margin:10px 0 4px}
.q-ctx{font-size:12.5px;color:var(--ink2);margin:0 0 4px}
.q-ctx.foldable{cursor:pointer}
.opts{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.opt{border:1.5px solid var(--line);padding:11px 12px;font-size:13px;line-height:1.35;min-height:48px;
  display:flex;gap:10px;align-items:flex-start;background:#fff;text-align:left}
.opt .rd{width:16px;height:16px;border:1.5px solid var(--ink);border-radius:50%;flex:none;margin-top:1px}
.opt .ck{width:16px;height:16px;border:1.5px solid var(--ink);flex:none;margin-top:1px;display:flex;align-items:center;justify-content:center;font-size:12px}
.opt.on{border-color:var(--ink);background:var(--paper)}
.opt.on .rd{background:radial-gradient(var(--ink) 40%,transparent 45%)}
.opt.on .ck{background:var(--ink);color:#fff}
.opt.nsp{border-style:dashed;color:var(--mute)}
.opt.nsp .rd,.opt.nsp .ck{border-color:var(--mute)}
.save-ind{font-family:var(--mono);font-size:10px;color:var(--ok);text-align:center;margin-top:14px}
/* scale 1..5 */
.scale{display:flex;flex-direction:column;gap:8px;margin-top:14px}
/* classement drag */
.rank{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.rank .item{border:1.5px solid var(--line);background:#fff;padding:11px 12px;font-size:13px;display:flex;gap:10px;align-items:center;cursor:grab}
.rank .item.drag{opacity:.4}
.rank .item .num{font-family:var(--mono);font-weight:700;color:var(--mute);flex:none}
.rank .item .grip{margin-left:auto;color:var(--mute);font-family:var(--mono)}

/* ---- Priorités (glisser-déposer importance/urgence) --------------------- */
.prio-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;border:1.5px solid var(--line);padding:10px 12px;margin-bottom:8px}
.prio-row .dom{font-size:13.5px;font-weight:600}
.prio-row .sliders{display:flex;gap:12px}
.prio-row .sliders label{font-family:var(--mono);font-size:10px;color:var(--mute);display:flex;flex-direction:column;gap:2px;width:92px}
.prio-row input[type=range]{width:100%;accent-color:var(--red)}

/* ---- Résultats ---------------------------------------------------------- */
.score-hero{border:1.5px solid var(--ink);padding:18px;text-align:center;margin-bottom:14px}
.score-hero .big{font-family:var(--mono);font-size:54px;font-weight:700;line-height:1}
.score-hero .lvl{display:inline-block;font-family:var(--mono);font-size:12px;padding:3px 12px;border:1.5px solid var(--ink);margin-top:8px;text-transform:uppercase;letter-spacing:.06em}
.chart-wrap{border:1.5px solid var(--line);padding:14px;margin-bottom:12px}
.chart-wrap h3{margin:0 0 6px;font-size:14px;font-weight:700}
.bar-dom{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:13px}
.bar-dom .lab{width:120px;flex:none}
.bar-dom .track{flex:1;height:14px;background:var(--line);position:relative}
.bar-dom .track i{position:absolute;inset:0 auto 0 0;height:100%}
.bar-dom .val{font-family:var(--mono);font-size:12px;width:34px;text-align:right}
.vigil{border:1.5px solid var(--red);background:var(--red-soft);padding:12px 14px;margin:10px 0;font-size:13px}
.vigil .t{font-family:var(--mono);font-size:11px;color:var(--red);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.ecart{font-family:var(--mono);font-size:10px;background:var(--orange-soft);color:#9a5b00;padding:1px 6px;border:1px solid var(--orange)}

/* reco cards */
.reco{border:1.5px solid var(--ink);margin-bottom:12px}
.reco .rh{background:var(--ink);color:#fff;padding:10px 14px;font-weight:700;font-size:14px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.reco .rb{padding:14px}
.reco dl{display:grid;grid-template-columns:108px 1fr;gap:6px 10px;margin:0;font-size:13px}
.reco dt{font-family:var(--mono);font-size:10.5px;color:var(--mute);text-transform:uppercase;padding-top:2px}
.reco dd{margin:0}

/* ============================= CONSOLE ADMIN ============================= */
.admin-shell{max-width:1120px;margin:0 auto;padding:0}
.admin-top{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:2px solid var(--ink);background:#fff;position:sticky;top:0;z-index:20}
.admin-top img{height:30px}
.admin{border:1.5px solid var(--ink);background:#fff;display:grid;grid-template-columns:200px 1fr;min-height:calc(100vh - 56px);margin:0}
.admin nav{border-right:1.5px solid var(--ink);padding:16px 0;background:var(--paper)}
.admin nav .nav-item{padding:9px 18px;font-size:14px;cursor:pointer;border-left:4px solid transparent}
.admin nav .nav-item.on{border-left-color:var(--red);background:#fff;font-weight:700}
.admin nav .nav-item:hover{background:#fff}
.admin nav .lbl{font-family:var(--mono);font-size:10.5px;color:var(--mute);text-transform:uppercase;letter-spacing:.1em;padding:14px 18px 4px}
.admin .main{padding:20px 24px}
.admin h2{font-size:22px;font-weight:700;margin:0 0 4px;letter-spacing:-.01em}
.admin .filters{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 18px}
.admin .filters span{font-family:var(--mono);font-size:11px;border:1px dashed var(--mute);padding:4px 8px;color:var(--ink2)}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.kpi{border:1.5px solid var(--ink);padding:14px}
.kpi .v{font-family:var(--mono);font-size:26px;font-weight:700}
.kpi .k{font-size:12px;color:var(--ink2);margin-top:2px}
.wf{border:1.5px dashed #b9b9b9;padding:14px;font-size:12.5px;color:var(--ink2);
  background:repeating-linear-gradient(0deg,transparent 0 23px,#f3f2ee 23px 24px);min-height:120px}
.wf b{color:var(--ink);font-size:13px}
.wf .demo{font-family:var(--mono);font-size:10px;color:var(--red);margin-top:10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.chart-box{border:1.5px solid var(--ink);padding:14px}
.chart-box h3{margin:0 0 8px;font-size:14px}
table.tbl{width:100%;border-collapse:collapse;font-size:13px;border:1.5px solid var(--ink);background:#fff}
table.tbl th,table.tbl td{border:1px solid var(--line);padding:8px 10px;text-align:left}
table.tbl thead th{background:var(--ink);color:#fff;font-size:12px}
table.tbl td.c{text-align:center;font-family:var(--mono)}

/* question bank (admin) */
.qbank{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.qcard{border:1.5px solid var(--ink);background:#fff}
.qcard .qh{display:flex;justify-content:space-between;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;align-items:center;flex-wrap:wrap}
.qcard .qh .id{font-weight:700}
.qcard .qh .tags span{padding:1px 6px;border:1px solid var(--ink);margin-left:4px}
.qcard .qh .tags span.crit{background:var(--red);color:#fff;border-color:var(--red)}
.qcard .qb{padding:14px}
.qcard .sc{font-size:12px;color:var(--mute);font-family:var(--mono)}
.qcard .it{font-weight:700;font-size:15px;margin:6px 0;line-height:1.35}
.qcard .ans{margin-top:12px;font-size:13px;border-top:1px dashed var(--line);padding-top:10px}
.qcard .ans dl{display:grid;grid-template-columns:100px 1fr;gap:4px 10px;margin:0}
.qcard .ans dt{font-family:var(--mono);font-size:10.5px;color:var(--mute);text-transform:uppercase}

/* notation sliders */
.weight-row{display:grid;grid-template-columns:200px 1fr 48px;gap:12px;align-items:center;margin-bottom:10px}
.weight-row input[type=range]{accent-color:var(--red)}

/* hypotheses */
.hyp{border:1.5px solid var(--ink)}
.hyp .h{display:grid;grid-template-columns:48px 1fr 280px;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line);align-items:start}
.hyp .h:last-child{border-bottom:0}
.hyp .num{font-family:var(--mono);font-weight:700;font-size:20px;color:var(--red)}
.hyp .h b{font-size:15px}
.hyp .h p{margin:4px 0 0;font-size:13px;color:var(--ink2)}
.hyp .hopts{display:flex;flex-direction:column;gap:4px}
.hyp .hopts label{font-size:13px;display:flex;gap:8px;align-items:flex-start;cursor:pointer;padding:4px 6px;border:1px solid transparent}
.hyp .hopts label:hover{border-color:var(--line)}
.hyp .hopts input{accent-color:var(--red);margin-top:3px}
.hyp .num.crit::after{content:' !'}

/* responsive */
@media(max-width:900px){
  .kpis{grid-template-columns:1fr 1fr}
  .grid2,.qbank{grid-template-columns:1fr}
  .admin{grid-template-columns:1fr}
  .admin nav{display:flex;flex-wrap:wrap;border-right:0;border-bottom:1.5px solid var(--ink)}
  .admin nav .nav-item{border-left:0;border-bottom:3px solid transparent}
  .admin nav .nav-item.on{border-left:0;border-bottom-color:var(--red)}
  .admin nav .lbl{width:100%}
  .hyp .h{grid-template-columns:40px 1fr}.hyp .hopts{grid-column:1/-1}
  .weight-row{grid-template-columns:140px 1fr 40px}
}
footer.app-foot{border-top:2px solid var(--ink);padding:16px 18px 30px;font-family:var(--mono);font-size:11px;color:var(--mute);background:#fff}
