:root{
  --bg:#EBEEF3; --surface:#FFFFFF; --surface-2:#F5F7FA;
  --ink:#16222E; --muted:#5C6B7A; --line:#D9E0E8;
  --primary:#1F5673; --primary-600:#17475F; --primary-050:#E9F1F5;
  --tech:#B0842B; --tech-050:#FBF3E3;
  --bloquant:#D64545; --majeur:#F6A623; --mineur:#7FA8C9; --ok:#2E9E63;
  --radius:10px; --shadow:0 1px 2px rgba(22,34,46,.06),0 4px 16px rgba(22,34,46,.06);
  --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5}
a{color:var(--primary)}
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}

/* ---------- Rail ---------- */
.rail{background:var(--primary);color:#fff;padding:20px 16px;display:flex;flex-direction:column;gap:4px}
.rail-toggle{display:none;position:fixed;top:12px;left:12px;z-index:60;background:var(--primary);color:#fff;border:none;border-radius:8px;padding:9px 13px;font-size:17px;cursor:pointer}
.grp{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.grp-tile{background:#fff;border-radius:11px;padding:7px 10px;font-weight:800;color:var(--primary);font-size:17px;line-height:1;display:inline-block}
.grp-tile.lg{font-size:26px;padding:11px 16px;border-radius:14px}
.grp b{font-size:13px;letter-spacing:.5px;display:block}
.grp span{display:block;color:rgba(255,255,255,.62);font-size:11px}
.who{border-top:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16);padding:12px 0;margin-bottom:14px;font-size:12px;color:rgba(255,255,255,.7)}
.who b{display:block;color:#fff;font-size:14px;margin-top:2px}
.rail nav{display:flex;flex-direction:column;gap:2px}
.rail nav a{display:flex;align-items:center;gap:10px;color:rgba(255,255,255,.85);text-decoration:none;padding:10px 12px;border-radius:8px;font-size:14px}
.rail nav a:hover{background:rgba(255,255,255,.09);color:#fff}
.rail nav a.active{background:#fff;color:var(--primary);font-weight:600}
.nav-ic{width:18px;height:18px;flex:0 0 auto}
.nav-badge{margin-left:auto;background:var(--tech);color:#20180a;border-radius:11px;padding:1px 8px;font-size:11px;font-weight:700}
.spacer{flex:1}
.logout{color:rgba(255,255,255,.7);text-decoration:none;font-size:13px;padding:9px 12px;border-radius:8px}
.logout:hover{background:rgba(0,0,0,.18);color:#fff}

/* ---------- Main ---------- */
.main{padding:26px 30px 60px;max-width:1560px}
.page-head{margin-bottom:20px}
.page-head h1{margin:0;font-size:25px;letter-spacing:-.02em}
.page-head p{margin:3px 0 0;color:var(--muted);font-size:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px}
.card h2{margin:0;padding:15px 18px;font-size:15px;border-bottom:1px solid var(--line)}
.card .body{padding:18px}
.hint{font-size:13px;color:var(--muted);font-weight:400}
.empty{color:var(--muted);font-size:13px;font-style:italic;padding:8px 2px}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.flash{padding:12px 16px;border-radius:9px;margin-bottom:16px;font-size:14px}
.flash.ok{background:#E7F4EE;color:#22694A;border:1px solid #bfe3d0}
.flash.err{background:#FBE4E4;color:#B23A3A;border:1px solid #f0c4c4}
.flash.toast{position:fixed;top:18px;right:18px;z-index:80;max-width:420px;box-shadow:0 8px 28px rgba(0,0,0,.16);transition:.4s}

.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:9px 15px;font-family:inherit;font-size:14px;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{background:var(--surface-2)}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.btn-primary:hover{background:var(--primary-600)}

/* ---------- Bandeau d'impact ---------- */
.impact{background:linear-gradient(120deg,#17475F,#2E7391);color:#fff;border-radius:var(--radius);padding:20px 24px;margin-bottom:20px;display:flex;gap:34px;align-items:center;flex-wrap:wrap}
.impact .big{font-size:44px;font-weight:800;line-height:1;letter-spacing:-.03em}
.impact .big small{font-size:15px;font-weight:600;opacity:.72;margin-left:5px}
.impact .lab{font-size:13px;opacity:.88;margin-top:5px;max-width:250px}
.impact .sep{width:1px;height:52px;background:rgba(255,255,255,.22)}
.impact .mini{font-size:26px;font-weight:700}
.impact .mini-l{font-size:12px;opacity:.8}

/* ---------- Filtres ---------- */
.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:0}
.filters .field{min-width:150px;margin:0}
.inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0}
.inline-form input,.inline-form select{padding:6px 9px;font-size:13px;border:1px solid var(--line);border-radius:7px;font-family:inherit}
.inline-form .btn{padding:6px 12px;font-size:13px}

/* ---------- Board ---------- */
.board{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;align-items:start}
.board.week{grid-template-columns:repeat(7,1fr)}
.col{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.col.today{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-050)}
.col h3{margin:0 0 11px;font-size:13px;display:flex;align-items:center;gap:7px;font-weight:600}
.dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.d-dec{background:#3F8BA8}.d-pec{background:#B0842B}.d-int{background:#6B4E9B}.d-res{background:#2E9E63}.d-clo{background:#5B6B7C}
.count{margin-left:auto;background:#fff;border:1px solid var(--line);border-radius:11px;padding:0 8px;font-size:11px;color:var(--muted)}
.ticket{display:block;background:#fff;border:1px solid var(--line);border-left:3px solid #CBD5DE;border-radius:9px;padding:11px 12px;margin-bottom:9px;text-decoration:none;color:inherit}
.ticket:hover{box-shadow:0 3px 12px rgba(22,34,46,.1);transform:translateY(-1px);transition:.15s}
.ticket.c-bloquant{border-left-color:var(--bloquant)}
.ticket.c-majeur{border-left-color:var(--majeur)}
.ticket.c-mineur{border-left-color:var(--mineur)}
.ref{font-size:12px;font-weight:700;color:var(--primary);letter-spacing:.02em}
.ref-row{display:flex;align-items:center;justify-content:space-between;gap:6px}
.copy-ref{border:none;background:none;color:var(--muted);cursor:pointer;font-size:13px;padding:0 2px;line-height:1}
.copy-ref:hover{color:var(--primary)}
.tk-eq{font-size:14px;font-weight:600;margin:3px 0 1px;line-height:1.3}
.tk-loc{font-size:12px;color:var(--muted)}
.tk-meta{font-size:11px;color:#8A97A4;margin-top:7px}
.empty-col{text-align:center;color:var(--muted);font-size:12px;padding:22px 8px}
.tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.badge{display:inline-block;border-radius:20px;padding:2px 9px;font-size:11px;font-weight:600;background:#EEF2F6;color:var(--muted)}
.b-bloquant{background:#FBE4E4;color:#B23A3A}
.b-majeur{background:#FBF1DF;color:#8a6d1e}
.b-mineur{background:#EAF1F7;color:#3F6D86}
.b-hs{background:var(--bloquant);color:#fff;box-shadow:0 0 0 2px rgba(214,69,69,.25)}
.b-sla{background:#D64545;color:#fff;font-weight:700}
.b-piece{background:#F3ECFA;color:#6B4E9B}
.b-tech{background:var(--tech-050);color:#8a6d1e}
.b-rouvert{background:#FBE4E4;color:#B23A3A}
.b-regl{background:var(--primary-050);color:var(--primary)}
.b-conf{background:#E7F4EE;color:#22694A}
.dv-attente{background:#FBF1DF;color:#8a6d1e}
.dv-valide{background:var(--primary-050);color:var(--primary)}
.dv-realise{background:#E7F4EE;color:#22694A}
.dv-refuse{background:#EEF2F6;color:var(--muted)}
.c-in{background:#E7F4EE;color:#22694A}.c-out{background:#EEF2F6;color:#5C6B7A}
.c-sec{background:#FBE4E4;color:#B23A3A}.c-dys{background:var(--primary-050);color:var(--primary)}
.c-int{background:#F3ECFA;color:#6B4E9B}.c-ech{background:#FBF3E3;color:#8a6d1e}
.c-cpt{background:#E7EDF2;color:#3F6D86}

/* ---------- Formulaires ---------- */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.field{display:flex;flex-direction:column}
.field.full{grid-column:1/-1}
.field label{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:5px}
.field input,.field select,.field textarea{padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:14px;background:#fff;width:100%}
.field textarea{min-height:88px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-050)}
.field input.locked,.locked{background:var(--surface-2);color:var(--muted)}
.req{color:var(--bloquant)}
.locked-tag{font-weight:400;font-size:11px;background:var(--surface-2);border-radius:5px;padding:1px 6px;color:var(--muted);text-transform:none}
.actions{margin-top:18px;display:flex;gap:10px;justify-content:flex-end}
.chk{display:flex;gap:8px;align-items:center;font-size:14px;font-weight:400;color:var(--ink);cursor:pointer;margin:0}
.chk input{width:auto}
.crit-pick{display:flex;gap:9px;flex-wrap:wrap}
.crit-pick label{flex:1;min-width:170px;border:1.5px solid var(--line);border-radius:9px;padding:11px 13px;cursor:pointer;font-size:14px;margin:0;background:#fff;color:var(--ink);font-weight:500}
.crit-pick label span{display:block;font-size:11.5px;color:var(--muted);font-weight:400;margin-top:2px}
.crit-pick input{display:none}
.crit-pick label:has(input:checked){border-color:var(--primary);background:var(--primary-050);box-shadow:0 0 0 2px var(--primary-050)}
.crit-pick label.k-bloquant:has(input:checked){border-color:var(--bloquant);background:#FBE4E4;box-shadow:0 0 0 2px #FBE4E4}
.crit-pick label.k-majeur:has(input:checked){border-color:var(--majeur);background:#FBF1DF;box-shadow:0 0 0 2px #FBF1DF}
.sla-note{margin-top:9px;font-size:12.5px;color:var(--muted);background:var(--surface-2);border-radius:8px;padding:9px 12px}
.crit-help{display:flex;gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid #EEF2F6;font-size:13.5px}
.crit-help:last-child{border-bottom:none}

/* ---------- Fiche ---------- */
.kv{display:grid;grid-template-columns:auto 1fr;gap:7px 18px;font-size:13.5px;margin:14px 0 0}
.kv dt{color:var(--muted)}
.kv dd{margin:0;font-weight:500}
.pj{display:inline-block;background:var(--primary-050);color:var(--primary);border-radius:6px;padding:3px 9px;font-size:12px;text-decoration:none;margin:2px 4px 2px 0}
.pj:hover{background:#d8e7ef}
.chat{background:var(--surface-2);border-radius:9px;padding:13px;max-height:360px;overflow:auto;display:flex;flex-direction:column;gap:9px}
.bubble{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13.5px;max-width:82%}
.bubble.b-h{align-self:flex-end;background:var(--primary-050);border-color:#cfe0e8}
.bubble.b-t{align-self:flex-start}
.b-meta{font-size:11px;color:var(--muted);margin-bottom:3px;font-weight:600}
.timeline{border-left:2px solid var(--line);padding-left:16px;margin:4px 0 0 6px;display:flex;flex-direction:column;gap:14px}
.tl{position:relative;font-size:13.5px}
.tl::before{content:"";position:absolute;left:-22px;top:4px;width:9px;height:9px;border-radius:50%;background:#CBD5DE;border:2px solid #fff;box-shadow:0 0 0 2px var(--line)}
.tl.done::before{background:var(--ok)}
.tl-w{font-size:11.5px;color:var(--muted)}
.tl b{display:block}
.reopen{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.audit-row{padding:11px 0;border-bottom:1px solid #EEF2F6;font-size:13.5px}
.audit-row:last-child{border-bottom:none}
.audit-row .badge{margin-right:7px}

/* ---------- Tableaux ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--line);padding:9px 10px;font-weight:600}
.tbl td{padding:10px;border-bottom:1px solid #EEF2F6;vertical-align:top}
.tbl tr:last-child td{border-bottom:none}
.tbl tr.row-late td{background:#FDF4F4}

/* ---------- Statistiques ---------- */
.stats-bar{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}
.kpi .c{background:#fff;border:1px solid var(--line);border-top:3px solid var(--primary);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.kpi .c.r{border-top-color:var(--bloquant)}.kpi .c.a{border-top-color:var(--tech)}.kpi .c.g{border-top-color:var(--ok)}
.kpi .n{font-size:31px;font-weight:700;letter-spacing:-.02em;line-height:1.05}
.kpi .n small{font-size:15px;color:var(--muted);font-weight:600}
.kpi .l{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.35}
.kpi .l .sub{display:block;font-size:11.5px;color:#8A97A4;margin-top:3px}
.chart{width:100%;height:auto;display:block;overflow:visible}
.ch-leg{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;margin-top:10px;font-size:13px;color:var(--muted)}
.ch-leg span{display:flex;align-items:center;gap:7px}
.ch-leg i{width:11px;height:11px;border-radius:3px;display:inline-block}
.bars{display:flex;flex-direction:column;gap:9px}
.bar-row{display:grid;grid-template-columns:minmax(130px,1.6fr) 3fr auto;gap:12px;align-items:center;font-size:13px}
.bar-lab{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-track{background:#EEF2F6;border-radius:6px;height:16px;overflow:hidden}
.bar-fill{height:100%;border-radius:6px;background:var(--primary);min-width:2px}
.bar-val{font-weight:700;white-space:nowrap;min-width:62px;text-align:right}
.bar-val em{font-style:normal;font-weight:400;color:#8A97A4;font-size:12px;margin-left:3px}
.print-head{display:none}

/* ---------- Connexion ---------- */
.login-body{margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;font-family:var(--font);
  background:linear-gradient(135deg,#1F5673 0%,#2E7391 55%,#3F8BA8 100%)}
.login-wrap{width:100%;max-width:400px;display:flex;flex-direction:column;gap:18px}
.login-card{background:#fff;border-radius:18px;padding:34px 30px;box-shadow:0 20px 60px rgba(0,0,0,.25);text-align:center}
.login-logo{margin-bottom:12px;display:flex;justify-content:center}
.login-logo .grp-tile{background:var(--primary);color:#fff}
.login-card h1{margin:0;font-size:21px;color:var(--ink)}
.login-sub{margin:4px 0 22px;color:var(--muted);font-size:14px}
.login-card form{text-align:left}
.login-card label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:12px 0 5px}
.login-card input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;font-size:15px;font-family:inherit}
.login-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-050)}
.login-btn{width:100%;margin-top:20px;padding:12px;font-size:15px}
.login-err{background:#FBE4E4;color:#B23A3A;border-radius:9px;padding:10px 12px;font-size:14px;margin-bottom:6px}
.login-foot{text-align:center;color:rgba(255,255,255,.85);font-size:12px;letter-spacing:.04em;text-transform:uppercase}

/* ---------- Adaptatif ---------- */
@media(max-width:1300px){.board{grid-template-columns:repeat(3,1fr)}.board.week{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1100px){.kpi{grid-template-columns:repeat(2,1fr)}.duo{grid-template-columns:1fr}}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .rail{position:fixed;inset:0 auto 0 0;width:250px;transform:translateX(-100%);transition:.25s;z-index:50}
  body.rail-open .rail{transform:none}
  .rail-toggle{display:block}
  .main{padding:64px 18px 50px}
  .grid{grid-template-columns:1fr}
  .board,.board.week{grid-template-columns:1fr}
  .kpi{grid-template-columns:1fr}
}

/* ---------- Impression ---------- */
@media print{
  @page{size:A4 portrait;margin:11mm}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  body{background:#fff}
  .app{display:block}
  .rail,.rail-toggle,.no-print,.page-head p,.flash,.toast{display:none!important}
  .main{padding:0!important;max-width:none!important}
  .print-head{display:block;border-bottom:2px solid #1F5673;padding-bottom:7px;margin-bottom:12px;font-size:13px}
  .print-head span{display:block;font-size:11px;color:#5C6B7A;margin-top:2px}
  .card,.kpi .c{box-shadow:none!important;border:1px solid #D9E0E8!important;break-inside:avoid;page-break-inside:avoid}
  .card{margin-bottom:10px}
  .kpi{grid-template-columns:repeat(4,1fr);gap:8px}
  .kpi .n{font-size:22px}.kpi .l{font-size:10px}
  .duo{grid-template-columns:1fr 1fr;gap:10px}
  .chart{max-height:190px}
  .tbl,.bar-row{font-size:11px}
}

/* ---------- Sélecteur de chambre AIBS ---------- */
.ch-detail{margin-top:9px;padding:11px 13px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ch-detail .hint{flex-basis:100%;margin:0}
#chambre optgroup{font-weight:600;color:var(--muted)}
