/* PCS XPRESS — Launch Readiness Cockpit · charte (patterns PMO/ORR/RAID/RAG réutilisés) */
:root{
  --ink:#16202e;--soft:#54627a;--line:#dde3ec;--bg:#eef2f7;--paper:#fff;
  --nav:#16263f;--nav2:#1f3a5f;--accent:#2563a8;--accent2:#0e7a5f;
  --g:#1f8a4c;--g-bg:#e4f5ea;--a:#b3791a;--a-bg:#fbf2dd;--r:#c0392b;--r-bg:#fbe7e4;
  --block:#8e44ad;--block-bg:#f1e8fa;--todo:#6b7787;--todo-bg:#eef1f5;
  --p1:#2563a8;--p2:#0e7a5f;--p3:#b3791a;--p4:#c0392b;--p5:#8e44ad;--p6:#0f7c8c;--p7:#a8456b;--p8:#445;
}
*{box-sizing:border-box}
html{-webkit-print-color-adjust:exact;print-color-adjust:exact}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI",-apple-system,Roboto,Arial,sans-serif;font-size:14px;line-height:1.5}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}

/* App bar (executive dashboard pattern) */
.appbar{background:var(--nav);color:#fff;padding:0 22px;display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.brand{font-weight:800;letter-spacing:.3px;padding:13px 0;white-space:nowrap}
.brand small{display:block;font-weight:500;font-size:10px;color:#9fb4d0;letter-spacing:1.5px;text-transform:uppercase}
.nav{display:flex;gap:2px;flex-wrap:wrap;flex:1}
.nav a{color:#cdd8e8;padding:13px 11px;font-size:12.5px;border-bottom:3px solid transparent}
.nav a:hover{color:#fff;text-decoration:none}
.nav a.on{color:#fff;border-bottom-color:var(--accent);background:rgba(255,255,255,.06)}
.bar-meta{font-size:11px;color:#9fb4d0;white-space:nowrap}

.wrap{max-width:1180px;margin:0 auto;padding:22px}
h1{font-size:24px;margin:4px 0 2px}
h2{font-size:18px;margin:26px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--line)}
h3{font-size:14.5px;margin:14px 0 6px}
.kicker{text-transform:uppercase;letter-spacing:2px;font-size:10.5px;color:var(--soft);font-weight:700}
.lead{color:var(--soft);max-width:80ch}

/* KPI cards */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:18px 0}
.kpi{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px;border-top:4px solid var(--accent)}
.kpi b{font-size:27px;display:block;line-height:1}
.kpi span{font-size:10.5px;color:var(--soft);text-transform:uppercase;letter-spacing:.5px}

/* Pillar cards (portfolio-on-a-page) */
.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:14px}
.pcard{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:0;overflow:hidden;display:flex;flex-direction:column}
.pcard .ph{color:#fff;padding:12px 14px;font-weight:700}
.pcard .pb{padding:12px 14px;flex:1}
.pcard .pb ul{margin:6px 0 0;padding-left:16px;color:var(--soft);font-size:12.5px}
.pcard .pf{padding:10px 14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--soft);display:flex;justify-content:space-between;align-items:center}
.p1 .ph{background:var(--p1)}.p2 .ph{background:var(--p2)}.p3 .ph{background:var(--p3)}.p4 .ph{background:var(--p4)}
.p5 .ph{background:var(--p5)}.p6 .ph{background:var(--p6)}.p7 .ph{background:var(--p7)}.p8 .ph{background:var(--p8)}

/* RAG status pills */
.st{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.4px;padding:2px 8px;border-radius:14px;text-transform:uppercase;white-space:nowrap}
.st.ready{color:var(--g);background:var(--g-bg)} .st.wip{color:var(--accent);background:#e7f0fa}
.st.risk{color:var(--a);background:var(--a-bg)} .st.block{color:var(--block);background:var(--block-bg)}
.st.todo{color:var(--todo);background:var(--todo-bg)}

/* Tree explorer (WBS via <details>) */
.tree details{background:var(--paper);border:1px solid var(--line);border-radius:10px;margin:10px 0;overflow:hidden}
.tree details details{margin:8px 10px;border-radius:8px}
.tree summary{cursor:pointer;padding:11px 14px;font-weight:700;list-style:none;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none}
.tree summary::-webkit-details-marker{display:none}
.tree summary::before{content:"▸";color:var(--accent);font-size:13px;transition:transform .15s}
.tree details[open]>summary::before{transform:rotate(90deg)}
.tree .lvl-pillar>summary{font-size:15px;color:#fff}
.tree .p1>summary{background:var(--p1)}.tree .p2>summary{background:var(--p2)}.tree .p3>summary{background:var(--p3)}
.tree .p4>summary{background:var(--p4)}.tree .p5>summary{background:var(--p5)}.tree .p6>summary{background:var(--p6)}
.tree .p7>summary{background:var(--p7)}.tree .p8>summary{background:var(--p8)}
.tree .lvl-pillar>summary::before{color:#fff}
.tree .lvl-domain>summary{background:#f3f6fb;font-size:13.5px}
.dom-body{padding:6px 14px 14px}
.dom-meta{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px;font-size:11.5px}
.dom-meta .tag{background:#f0f3f8;border:1px solid var(--line);border-radius:14px;padding:2px 9px;color:var(--soft)}
.dom-meta .tag b{color:var(--ink)}
.checklist{list-style:none;margin:4px 0;padding:0}
.checklist li{padding:5px 0 5px 26px;position:relative;border-bottom:1px solid var(--line);font-size:12.5px}
.checklist li::before{content:"";position:absolute;left:0;top:6px;width:14px;height:14px;border:2px solid #b9c2cf;border-radius:4px}
.proof{margin-top:8px;font-size:11.5px;background:#f0f7f3;border-left:4px solid var(--accent2);padding:7px 10px;border-radius:6px}
.fail{margin-top:6px;font-size:11.5px;background:#fdf0ee;border-left:4px solid var(--r);padding:7px 10px;border-radius:6px}
.proof b,.fail b{display:block;margin-bottom:2px}

/* Tables (RACI, RAID, registers) */
table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px;background:var(--paper)}
th{background:var(--ink);color:#fff;text-align:left;padding:7px 9px;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px}
td{padding:6px 9px;border-bottom:1px solid var(--line);vertical-align:top}
tr:nth-child(even) td{background:#f8fafc}
.raci td.R{background:#e4f5ea;color:var(--g);font-weight:800;text-align:center}
.raci td.A{background:#e7f0fa;color:var(--accent);font-weight:800;text-align:center}
.raci td.C{color:var(--soft);text-align:center}.raci td.I{color:#9aa6b4;text-align:center}

/* Risk heatmap 5x5 */
.heat{display:grid;grid-template-columns:auto repeat(5,1fr);gap:3px;max-width:560px;margin:10px 0}
.heat .cell{padding:8px;text-align:center;border-radius:5px;font-size:11px;min-height:34px}
.heat .axis{background:none;color:var(--soft);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}
.h-lo{background:var(--g-bg)} .h-md{background:var(--a-bg)} .h-hi{background:var(--r-bg)}
.heat .chip{display:inline-block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:1px 5px;font-size:10px;margin:1px}

/* Go/No-Go */
.gng{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.gng .box{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.gng .box.go{border-top:4px solid var(--g)} .gng .box.nogo{border-top:4px solid var(--r)}
.gng ul{margin:6px 0 0;padding-left:18px}.gng li{margin:5px 0}

/* Swimlane retroplanning */
.retro{border-left:3px solid var(--line)}
.band{display:grid;grid-template-columns:96px 1fr;border-bottom:1px dashed var(--line)}
.band .when{padding:12px;background:var(--paper);border-left:4px solid var(--accent);font-weight:800;color:var(--accent)}
.band .what{padding:12px;background:var(--paper)}

/* Callouts */
.callout{background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:8px;padding:11px 14px;margin:12px 0}
.callout.warn{border-left-color:var(--a)} .callout.crit{border-left-color:var(--r)} .callout.go{border-left-color:var(--g)}
.callout b{display:block;margin-bottom:3px}

.legend{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0;font-size:11px;color:var(--soft)}
.legend span{display:inline-flex;gap:5px;align-items:center}
.dot{width:11px;height:11px;border-radius:3px;display:inline-block}
.note{font-size:11px;color:var(--soft);font-style:italic}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;align-items:center}
.btn{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:12px;cursor:pointer;color:var(--ink)}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.footer{margin:26px 0 10px;padding-top:12px;border-top:1px solid var(--line);font-size:10.5px;color:var(--soft);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}

@media print{
  .appbar,.toolbar{display:none}body{background:#fff}.wrap{max-width:none;padding:0}
  .tree details{break-inside:avoid}@page{size:A4 landscape;margin:9mm}
}
@media(max-width:720px){.gng,.pcards{grid-template-columns:1fr}.nav{display:none}}

/* ===== V1.1 — lisibilité + contrôles ===== */
body{font-size:15px}
.lead{font-size:14.5px}
table{font-size:13px}
.st{font-size:11px;padding:3px 9px}
.kpi span{font-size:11.5px}
.kpi b{font-size:28px}
.note{font-size:12px}
.dom-meta{font-size:12.5px}
.pcard .pb ul{font-size:13px}
.checklist li{padding:6px 0;border-bottom:1px solid var(--line);font-size:13.5px;display:flex}
.checklist li::before{display:none}
.checklist label{display:flex;gap:9px;align-items:flex-start;cursor:pointer;width:100%}
.checklist input[type=checkbox]{width:16px;height:16px;margin-top:2px;flex:none;accent-color:var(--accent);cursor:pointer}
.checklist li.done span{text-decoration:line-through;color:var(--soft)}
.inp,.sel{font:inherit;font-size:13px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}
.sel{cursor:pointer}
.inp.j0{width:118px;padding:3px 7px}
.bar-tools{display:flex;align-items:center;gap:8px;white-space:nowrap}
.bar-tools label{color:#cdd8e8;font-size:11px;text-transform:uppercase;letter-spacing:1px}
.dom-meta .tag{display:inline-flex;align-items:center;gap:6px}
.prog{margin-top:8px;font-size:12.5px;color:var(--soft)}
.verdict{padding:14px 16px;border-radius:12px;margin:14px 0;font-weight:800;font-size:16px}
.verdict.go{background:var(--g-bg);color:var(--g)}
.verdict.cond{background:var(--a-bg);color:var(--a)}
.verdict.nogo{background:var(--r-bg);color:var(--r)}
/* ===== V2 — T15/T16/T17 : sémantique couleurs, gravité, aide à la décision ===== */
.lg-note{flex-basis:100%;font-style:italic;opacity:.85;margin-top:2px}
.grav{display:inline-block;padding:1px 8px;border-radius:9px;font-size:11px;font-weight:700;white-space:nowrap}
.grav-crit{background:var(--r-bg);color:var(--r)}
.grav-haut{background:var(--a-bg);color:var(--a)}
.grav-mod{background:var(--todo-bg);color:var(--todo)}
.grav-bas{background:#e7f0fa;color:var(--accent)}
.grav-ok{background:var(--g-bg);color:var(--g)}
.decision{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:16px 20px;border-radius:14px;margin:14px 0;border:2px solid}
.decision.go{background:var(--g-bg);border-color:var(--g)}
.decision.cond{background:var(--a-bg);border-color:var(--a)}
.decision.nogo{background:var(--r-bg);border-color:var(--r)}
.decision .dq{font-size:13px;font-weight:600;color:var(--soft)}
.decision .dr{font-size:26px;font-weight:800;letter-spacing:.5px}
.decision.go .dr{color:var(--g)} .decision.cond .dr{color:var(--a)} .decision.nogo .dr{color:var(--r)}
.decision .dw{font-size:13px;font-weight:600;flex:1 1 240px}
.decision-tbl td:first-child{font-weight:600}
/* T26 — glossaire visible */
.gloss-list{list-style:none;padding:0;margin:8px 0;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
.gloss-list li{font-size:12.5px;color:var(--soft);border-left:3px solid var(--line);padding-left:8px}
.gloss-list b{color:var(--ink)}
@media(max-width:760px){.gloss-list{grid-template-columns:1fr}}
/* T25/T14 — rétroplanning Gantt cliquable + repère Aujourd'hui */
.gantt{margin:14px 0;border:1px solid var(--line);border-radius:12px;padding:12px 14px 8px;background:var(--paper);overflow:hidden}
.g-axis{position:relative;height:42px;margin-bottom:8px;border-bottom:1px dashed var(--line)}
.g-tick{position:absolute;top:0;transform:translateX(-50%);font-size:10px;color:var(--soft);text-align:center;white-space:nowrap;line-height:1.25}
.g-tick.g-tick-lo{top:20px}
.g-tick b{display:block;font-size:11px;color:var(--ink)}
.g-tick small{text-transform:capitalize}
.g-track{position:relative}
.g-today{position:absolute;top:0;bottom:0;width:0;border-left:2px dotted var(--r);z-index:4}
.g-today b{position:absolute;top:-4px;left:4px;font-size:10px;font-weight:700;color:#fff;background:var(--r);padding:1px 5px;border-radius:7px;white-space:nowrap}
.g-row{position:relative;height:30px;margin:5px 0}
.g-bar{position:absolute;top:0;height:24px;border:none;border-radius:6px;color:#fff;font-size:11px;font-weight:700;cursor:pointer;display:flex;align-items:center;padding:0 9px;box-shadow:0 1px 3px rgba(0,0,0,.14);min-width:0}
.g-bar span{pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-bar:hover{filter:brightness(1.06)}
.g-bar.g-open{outline:2px solid var(--ink);outline-offset:1px}
.g-early{background:var(--accent)} .g-mid{background:var(--accent2)} .g-day{background:var(--r)} .g-after{background:var(--todo)}
.g-detail{position:absolute;top:31px;left:0;right:0;z-index:5;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:12.5px;color:var(--soft);box-shadow:0 6px 18px rgba(0,0,0,.14)}
.g-detail b{display:block;color:var(--ink);margin-bottom:3px}
/* T25 refait — rétroplanning sur frappe-gantt (pattern mûr, R-NO-BRICOLAGE-UI) */
.gantt-wrap{margin:14px 0;border:1px solid var(--line);border-radius:12px;background:var(--paper);max-width:100%;overflow:hidden}
.gantt-wrap .gantt-container{max-height:62vh}
.gantt .g-early .bar{fill:var(--accent)} .gantt .g-mid .bar{fill:var(--accent2)}
.gantt .g-day .bar{fill:var(--r)} .gantt .g-after .bar{fill:var(--todo)}
.gantt .bar-label{fill:#fff;font-weight:700}
/* Correctif d'exploitabilité mobile (débordement horizontal détecté par _gate-ux) */
@media(max-width:720px){
  .appbar{flex-wrap:wrap;gap:8px;padding:0 12px}
  .bar-tools{flex-wrap:wrap;white-space:normal;width:100%;justify-content:flex-start;padding-bottom:8px;row-gap:6px}
  .mewrap .sel.me{max-width:130px}
  .inp.j0{max-width:150px}
  /* tableaux & carte des risques : scroll interne, pas de débordement de page */
  #app table{display:block;overflow-x:auto;max-width:100%}
  .heat{overflow-x:auto;max-width:100%}
}
/* Rétroplanning — date calendaire calculée depuis J0 (OBJET-021) */
.band .when small{display:block;font-weight:600;font-size:11px;color:var(--soft);margin-top:4px;text-transform:capitalize}

/* ===== V2 — débrief foyer : nav + anti-chevauchement pastilles + homogénéité ===== */
/* Logo cliquable = retour accueil (garde le blanc, pas de soulignement) */
a.brand{color:#fff;text-decoration:none}
a.brand:hover{color:#fff;text-decoration:none;opacity:.9}
/* Cartes piliers (accueil) : titre à gauche, pastille à droite, jamais de télescopage */
.pcard .pb ul{list-style:none;padding-left:0;margin:8px 0 0}
.pcard .pb ul li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:4px 0;line-height:1.35;border-bottom:1px solid #f0f3f8}
.pcard .pb ul li:last-child{border-bottom:none}
.pcard .pb ul li .st{flex:none}
/* Pastille de statut : taille unique partout, hauteur de ligne fixe (RAG cohérent) */
.st{font-size:11px;line-height:1.45;padding:3px 9px;vertical-align:middle}
/* KPI : même gabarit pour tous (lecture homogène prêts/à risque/bloqués/restants) */
.kpi{min-height:84px;display:flex;flex-direction:column;justify-content:center}
.kpi b{font-size:26px}
/* Badge de version (gouvernance de version, sujet foyer 2026-06-09) */
.vbadge{background:var(--nav);color:#fff;border-radius:6px;padding:1px 7px;font-size:11px;letter-spacing:.3px}
/* Identité utilisateur + journal d'activité (audit trail) */
.uchip{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:18px;padding:0 5px;border-radius:9px;color:#fff;font-size:10px;font-weight:800;letter-spacing:.3px}
.mewrap{display:inline-flex;align-items:center;gap:6px}
.mewrap .uchip{height:20px}
.mewrap .sel.me{max-width:160px}
.last-wrap{margin-left:auto;display:inline-flex;align-items:center}
.last{display:inline-flex;align-items:center;gap:5px}
.last .lt{font-size:10px;color:var(--soft);font-weight:500}
.tree .lvl-domain>summary .last .lt{color:var(--soft)}
.legend2{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0 4px;font-size:12px}
.legend2 .ulg{display:inline-flex;align-items:center;gap:6px}
.commentbox{margin-top:8px}
.commentbox label{display:block;font-size:11px;color:var(--soft);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}
.ta{width:100%;resize:vertical;font-size:12.5px;font-family:inherit}
.when2{white-space:nowrap;color:var(--soft);font-size:11px}
/* T05 — attribution en place sur les checkpoints */
.checklist li{align-items:center}
.checklist label{flex:1 1 auto;width:auto}
.ck-last{flex:none;margin-left:8px;display:inline-flex;align-items:center}
/* T07 — panneau « Activité en direct » */
.livepanel{position:fixed;top:50px;right:0;width:272px;height:calc(100vh - 50px);background:#fff;border-left:1px solid var(--line);box-shadow:-2px 0 10px rgba(0,0,0,.07);display:flex;flex-direction:column;z-index:15}
.livepanel.collapsed{width:36px}
.lp-head{background:var(--nav);color:#fff;font-weight:700;font-size:12px;padding:9px 10px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.livepanel.collapsed .lp-head>span{display:none}
.lp-toggle{background:none;border:none;color:#fff;cursor:pointer;font-size:14px;line-height:1;transition:transform .15s}
.livepanel.collapsed .lp-toggle{transform:rotate(180deg)}
.lp-body{flex:1;overflow-y:auto;padding:8px}
.livepanel.collapsed .lp-body{display:none}
.lp-empty{font-size:11.5px;color:var(--soft);font-style:italic;padding:6px}
.lp-row{display:flex;gap:8px;padding:7px 4px;border-bottom:1px solid var(--line)}
.lp-txt{font-size:11.5px;line-height:1.35;min-width:0}
.lp-txt b{color:var(--ink)}
.lp-chg{display:block;color:var(--soft)}
.lp-t{display:block;color:var(--soft);font-size:10.5px;margin-top:1px}
@media(min-width:1180px){ body.has-panel:not(.panel-collapsed) .wrap{margin-right:288px} }
@media print{ .livepanel{display:none} }
/* T09/T10 — indicateur de sauvegarde dans la barre */
.saved{font-size:11px;opacity:0;transition:opacity .2s;white-space:nowrap;font-weight:600}
.saved.show{opacity:1}
.saved.ok{color:#7CF3B0}
.saved.edit{color:#FFD27A}
