/* UnityConnect Demarchage : design system v2. Grammaire : fond gris clair, onglets en pastilles, rail d'icones rondes,
   grandes cartes blanches arrondies, badges pastel, avatars. DA Unity Guard Nord : bleu #0033CC, Plus Jakarta Sans, SVG. */
:root{--bg:#EEF1F7;--card:#FFFFFF;--inner:#F4F6FB;--inner2:#E9EDF6;--bord:rgba(16,28,66,0.07);--txt:#0F1733;--sous:#4A5578;--mut:#8A93B2;--uni:#0033CC;--uni2:#2247D6;--clair:#3D66FF;
 --ok:#0B9A6D;--warn:#C77414;--err:#D92D2D;--p-blue:#E3EAFF;--p-blue2:#D2DCFF;--p-green:#DDF5EA;--p-amber:#FFF0D6;--p-red:#FFE1E1;--p-violet:#ECE6FF;--p-grey:#EEF1F7;
 --sh:0 6px 18px rgba(23,34,78,0.05);--sh2:0 14px 36px rgba(23,34,78,0.10);--r:24px;--r2:16px;--rail:76px;--larg:none;--padx:clamp(12px,1.4vw,28px)}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;color-scheme:light;font-size:clamp(15px,0.35vw + 10px,17.5px)}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased;min-height:100vh;min-height:100dvh;line-height:1.45}
a{color:var(--uni);text-decoration:none}
button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:15px;color:var(--txt)}
b{font-weight:700}
img{display:block}
::selection{background:var(--p-blue2)}

/* ---------- connexion ---------- */
.scr{position:relative;min-height:100vh;min-height:100dvh;display:none;align-items:center;justify-content:center;padding:24px}
.scr.on{display:flex}
.lbox{width:100%;max-width:420px;background:var(--card);border-radius:28px;box-shadow:var(--sh2);padding:40px 36px 32px;text-align:center}
.lbox .picto-login{width:84px;height:84px;object-fit:contain;margin:0 auto 10px}
.lbox .logo{width:180px;margin:0 auto 4px}
.lbox .sous-titre{color:var(--mut);font-size:.88rem;font-weight:700;margin:6px 0 24px}
.fbox{text-align:left}
.fbox label{display:block;font-size:.74rem;font-weight:700;color:var(--sous);margin:14px 0 7px}
.fbox input{width:100%;padding:14px 16px;border:1.5px solid var(--bord);border-radius:14px;background:var(--inner);font-size:16px;font-weight:600}
.fbox input:focus{outline:none;border-color:var(--clair);background:#fff;box-shadow:0 0 0 4px rgba(61,102,255,0.12)}
.aide{font-size:.8rem;color:var(--mut);margin-top:18px;line-height:1.5}
.msg-erreur{min-height:1.3em;margin-top:12px;font-size:.82rem;font-weight:700;color:var(--err);text-align:center}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;border-radius:14px;background:var(--uni);color:#fff;font-size:.88rem;font-weight:600;transition:background .15s,transform .1s;white-space:nowrap}
.btn:hover{background:var(--uni2)}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.55;cursor:default}
.btn.sec{background:var(--inner2);color:var(--txt)}
.btn.sec:hover{background:#DEE4F2}
.btn.ghost{background:transparent;color:var(--sous);border:1.5px solid var(--bord)}
.btn.ghost:hover{background:var(--inner)}
.btn.danger{background:var(--p-red);color:var(--err)}
.btn.ok{background:var(--p-green);color:var(--ok)}
.btn.petit{padding:8px 12px;font-size:.8rem;border-radius:10px}
.btn.large{width:100%;padding:15px;font-size:.95rem;margin-top:20px}
.btn svg{width:16px;height:16px}
.rb{width:44px;height:44px;border-radius:50%;background:var(--card);border:1px solid var(--bord);display:inline-flex;align-items:center;justify-content:center;color:var(--sous);flex-shrink:0;transition:all .15s;position:relative}
.rb:hover{color:var(--uni);border-color:var(--p-blue2);background:var(--p-blue)}
.rb.on{background:var(--uni);color:#fff;border-color:var(--uni)}
.rb.dark{background:var(--txt);color:#fff;border-color:var(--txt)}
.rb.dark:hover{background:var(--uni);border-color:var(--uni)}
.rb .dot{position:absolute;top:9px;right:9px;width:9px;height:9px;border-radius:50%;background:var(--err);border:2px solid #fff}
.rb .nb{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:var(--err);color:#fff;font-size:.68rem;font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.rb svg{width:19px;height:19px}
.rb.sm{width:36px;height:36px}
.rb.sm svg{width:16px;height:16px}
.tip{position:relative}
.tip::after{content:attr(data-tip);position:absolute;left:calc(100% + 10px);top:50%;transform:translate(-6px,-50%);background:var(--txt);color:#fff;font-size:.74rem;font-weight:600;padding:6px 10px;border-radius:9px;white-space:nowrap;z-index:60;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .15s ease,transform .15s ease,visibility 0s linear .15s;box-shadow:0 8px 20px rgba(15,23,51,0.18)}
.tip:hover::after{opacity:1;visibility:visible;transform:translate(0,-50%);transition-delay:0s}
.topr .tip::after,.hero .tip::after,.ph .tip::after{left:50%;top:auto;bottom:calc(100% + 8px);transform:translate(-50%,4px)}
.topr .tip:hover::after,.hero .tip:hover::after,.ph .tip:hover::after{transform:translate(-50%,0)}

/* ---------- application ---------- */
#scrApp{display:none;min-height:100vh;min-height:100dvh}
#scrApp.on{display:block}
.top{position:sticky;top:0;z-index:30;background:rgba(238,241,247,0.86);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.top .in{display:flex;align-items:center;gap:16px;padding:14px var(--padx) 10px}
.marque{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-right:8px}
.marque img{height:28px}
.marque span{font-weight:800;font-size:.95rem;color:var(--txt)}
.pills{display:flex;gap:4px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px;justify-content:center;position:relative}
.pills a{position:relative;z-index:1;transition:color .25s}
.pills .glide{position:absolute;top:2px;left:0;height:calc(100% - 4px);width:0;border-radius:999px;background:var(--uni);box-shadow:0 8px 20px rgba(0,51,204,0.25);transition:transform .42s cubic-bezier(.22,.9,.3,1.05),width .42s cubic-bezier(.22,.9,.3,1.05),opacity .2s;z-index:0;opacity:0;will-change:transform,width}
.pills .glide.pret{opacity:1}
.pills .glide.bouge{animation:none}
@keyframes squash{0%{transform-origin:center;scale:1 1}40%{scale:1.04 .92}100%{scale:1 1}}
.pills::-webkit-scrollbar{display:none}
.pills a{padding:9px 15px;border-radius:999px;font-size:.86rem;font-weight:600;color:var(--sous);white-space:nowrap;display:inline-flex;align-items:center;gap:7px;transition:all .15s}
.pills a:hover{color:var(--uni)}
.pills a.lit,.pills a.lit:hover{color:#fff}
.pills a.on{color:#fff}
.pills a .nb{flex-shrink:0;transition:background .25s,color .25s}
.pills a.lit .nb{background:#fff;color:var(--uni)}
.pills a .nb{font-size:.68rem;font-weight:800;background:var(--err);color:#fff;border-radius:99px;padding:1px 6px}
.pills a.on .nb{background:#fff;color:var(--uni)}
.topr{display:flex;align-items:center;gap:8px;flex-shrink:0}
.avatar{width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.86rem;color:#fff;background:linear-gradient(135deg,#3D66FF,#0033CC);flex-shrink:0;border:2px solid #fff;box-shadow:var(--sh)}
.avatar.sm{width:30px;height:30px;font-size:.68rem;border-width:1.5px;box-shadow:none}
.avatar.xs{width:24px;height:24px;font-size:.6rem;border-width:1.5px;box-shadow:none}
.av1{background:linear-gradient(135deg,#3D66FF,#0033CC)}.av2{background:linear-gradient(135deg,#19B383,#0B7A57)}.av3{background:linear-gradient(135deg,#F0A83A,#C77414)}.av4{background:linear-gradient(135deg,#9B7BFF,#5B3FC4)}.av5{background:linear-gradient(135deg,#F06B6B,#B42318)}.av6{background:linear-gradient(135deg,#5A6FB5,#2F3F7A)}
.avgrp{display:flex;align-items:center}
.avgrp{gap:6px}
.avgrp .avw{position:relative}
.avgrp .cnt{position:absolute;bottom:-5px;right:-5px;min-width:19px;height:19px;padding:0 4px;border-radius:99px;background:var(--uni);color:#fff;font-size:.62rem;font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.avgrp .cnt.z{background:var(--mut)}

.body{display:grid;grid-template-columns:var(--rail) 1fr;gap:0 14px;padding:4px var(--padx) 60px;align-items:start}
.rail{position:sticky;top:76px;z-index:25;display:flex;flex-direction:column;gap:8px;align-items:center;padding-top:8px}
.rail .sep{height:1px;width:28px;background:var(--bord);margin:6px 0}
main{min-width:0}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:6px 0 16px}
.ph h1{font-size:clamp(1.5rem,1.2rem + 1.1vw,2rem);font-weight:800;letter-spacing:-0.025em;line-height:1.1}
.ph .sub{color:var(--mut);font-size:.86rem;font-weight:600;margin-top:5px}
.ph .act{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.crumb{font-size:.8rem;font-weight:700;color:var(--mut);display:flex;gap:6px;align-items:center;margin-bottom:6px}
.crumb a{color:var(--mut)}
.crumb a:hover{color:var(--uni)}

/* ---------- cartes ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:22px 24px;margin-bottom:14px;position:relative}
.card.flat{box-shadow:none;border:1px solid var(--bord)}
.card .ct{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.card .ct h3{font-size:.98rem;font-weight:700;letter-spacing:-0.01em}
.card .ct .m{font-size:.78rem;color:var(--mut);font-weight:600}
.card .ct .acts{display:flex;gap:6px}
.inner{background:var(--inner);border-radius:var(--r2);padding:14px 16px}
.grid{display:grid;gap:14px;align-items:start}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g32{grid-template-columns:3fr 2fr}.g23{grid-template-columns:2fr 1fr}
.grid>.card{margin-bottom:0}
.vide{color:var(--mut);font-size:.84rem;font-weight:600;text-align:center;padding:22px 10px}
.vide img{width:64px;height:64px;object-fit:contain;margin:0 auto 8px;opacity:.9}
.skel{background:linear-gradient(90deg,var(--inner) 25%,var(--inner2) 50%,var(--inner) 75%);background-size:400% 100%;animation:sk 1.2s infinite;border-radius:12px;min-height:14px}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--card);border-radius:20px;box-shadow:var(--sh);padding:16px 18px;display:flex;gap:12px;align-items:center;cursor:pointer;transition:transform .15s,box-shadow .15s}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
.kpi .ic{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--p-blue);color:var(--uni)}
.kpi .ic img{width:30px;height:30px;object-fit:contain}
.kpi .ic.g{background:var(--p-green);color:var(--ok)}.kpi .ic.a{background:var(--p-amber);color:var(--warn)}.kpi .ic.r{background:var(--p-red);color:var(--err)}.kpi .ic.v{background:var(--p-violet);color:#5B3FC4}
.kpi b{display:block;font-size:1.45rem;font-weight:800;letter-spacing:-0.02em;line-height:1.1}
.kpi span{font-size:.76rem;color:var(--mut);font-weight:600;display:block;margin-top:2px}
.kpi .delta{font-size:.72rem;font-weight:800;padding:2px 7px;border-radius:99px;margin-left:auto;align-self:flex-start}
.delta.up{background:var(--p-green);color:var(--ok)}.delta.down{background:var(--p-red);color:var(--err)}.delta.flat{background:var(--p-grey);color:var(--mut)}

/* badges */
.tag{display:inline-flex;align-items:center;gap:6px;font-size:.73rem;font-weight:700;padding:5px 10px;border-radius:999px;white-space:nowrap;background:var(--p-grey);color:var(--sous)}
.tag i{width:7px;height:7px;border-radius:50%;background:currentColor;font-style:normal}
.tag.cible{background:#EEF1F7;color:#5A6587}.tag.contacte{background:#E3EAFF;color:#2F54D6}.tag.echange{background:#D2DCFF;color:#1B3FB0}.tag.rdv{background:#ECE6FF;color:#5B3FC4}
.tag.devis{background:#FFF0D6;color:#9A5B00}.tag.negociation{background:#FFE4D0;color:#B4500F}.tag.gagne{background:#DDF5EA;color:#0B7A57}.tag.perdu{background:#FFE1E1;color:#B42318}
.tag.bleu{background:var(--p-blue);color:var(--uni)}.tag.vert{background:var(--p-green);color:var(--ok)}.tag.ambre{background:var(--p-amber);color:var(--warn)}.tag.rouge{background:var(--p-red);color:var(--err)}.tag.violet{background:var(--p-violet);color:#5B3FC4}
.tag.cliq{cursor:pointer;border:1.5px solid transparent}
.tag.cliq.on{border-color:currentColor}
.ret{color:var(--err)!important}.auj{color:var(--warn)!important}

/* outils de liste */
.tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.search{display:flex;align-items:center;gap:9px;background:var(--card);border-radius:999px;padding:10px 16px;flex:1;min-width:220px;box-shadow:var(--sh);border:1.5px solid transparent}
.search:focus-within{border-color:var(--clair)}
.search input{flex:1;border:none;outline:none;background:transparent;font-size:.9rem;font-weight:600}
.search svg{color:var(--mut);flex-shrink:0;width:18px;height:18px}
.chip{font-size:.8rem;font-weight:700;color:var(--sous);background:var(--card);box-shadow:var(--sh);padding:10px 14px;border-radius:999px;white-space:nowrap;border:1.5px solid transparent;display:inline-flex;align-items:center;gap:6px}
.chip:hover{border-color:var(--p-blue2)}
.chip.on{background:var(--uni);color:#fff}
select.chip{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M6 8l4 4 4-4' fill='none' stroke='%234A5578' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:14px}
.seg{display:inline-flex;background:var(--card);border-radius:999px;padding:4px;box-shadow:var(--sh)}
.seg button{padding:7px 14px;border-radius:999px;font-size:.8rem;font-weight:700;color:var(--sous);display:inline-flex;gap:6px;align-items:center}
.seg button.on{background:var(--uni);color:#fff}
.seg svg{width:15px;height:15px}

/* tableaux */
.tw{overflow-x:auto;margin:0 -8px;padding:0 8px}
table.tbl{width:100%;border-collapse:separate;border-spacing:0 6px}
.tbl th{text-align:left;font-size:.72rem;font-weight:700;color:var(--mut);padding:4px 12px;white-space:nowrap;cursor:pointer;user-select:none}
.tbl th.r,.tbl td.r{text-align:right}
.tbl th.on{color:var(--uni)}
.tbl td{background:var(--inner);padding:11px 12px;font-size:.85rem;font-weight:500;vertical-align:middle;white-space:nowrap}
.tbl td:first-child{border-radius:14px 0 0 14px}
.tbl td:last-child{border-radius:0 14px 14px 0}
.tbl tr.cliq{cursor:pointer}
.tbl tr.cliq:hover td{background:var(--p-blue)}
.tbl td .s{display:block;font-size:.74rem;color:var(--mut);font-weight:600;margin-top:1px}
.tbl td.w{white-space:normal;min-width:220px}
.pers{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:.8rem}

/* kanban */
.kb{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:12px;overflow-x:auto;padding:4px 2px 14px;align-items:start;scroll-snap-type:x proximity}
.kcol{background:var(--card);border-radius:22px;box-shadow:var(--sh);padding:14px;min-height:220px;scroll-snap-align:start;transition:background .15s}
.kcol.over{background:var(--p-blue)}
.kh{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;padding:0 4px}
.kh .n{font-weight:800;font-size:.9rem;display:flex;align-items:center;gap:8px}
.kh .n i{width:9px;height:9px;border-radius:50%;background:currentColor;font-style:normal}
.kh .c{font-size:.74rem;font-weight:800;color:var(--mut)}
.kmt{font-size:.74rem;color:var(--mut);font-weight:700;padding:0 4px 10px}
.kc{background:var(--inner);border-radius:16px;padding:12px 14px;margin-bottom:8px;cursor:grab;transition:transform .12s,box-shadow .12s;border:1.5px solid transparent}
.kc:hover{transform:translateY(-1px);box-shadow:var(--sh);background:#fff;border-color:var(--p-blue2)}
.kc.drag{opacity:.5}
.kc .t{font-weight:700;font-size:.87rem;line-height:1.3;margin-bottom:3px}
.kc .s{font-size:.76rem;color:var(--sous);font-weight:600}
.kc .f{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.kc .f .m{font-size:.78rem;font-weight:800}
.kc .pa{font-size:.72rem;font-weight:700;color:var(--mut);margin-top:6px;display:flex;align-items:center;gap:5px}
.kc .pa svg{width:13px;height:13px}
.kc.mini{padding:9px 11px;margin-bottom:6px;cursor:pointer}
.kc.mini .t{font-size:.8rem}
.kbmini{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:12px;overflow-x:auto;padding-bottom:6px}
.kbmini .kcol{padding:12px;min-height:140px;background:var(--inner);box-shadow:none;border-radius:18px}
.kbmini .ligne{background:#fff;padding:10px 12px;border-radius:14px;gap:10px;margin-bottom:8px}
.kbmini .ligne:hover{background:var(--p-blue)}
.kbmini .ligne .t{font-size:.84rem}
.kbmini .ligne .s{font-size:.72rem}
.kbmini .ligne .rb.sm{width:32px;height:32px;background:var(--inner);border-color:transparent}
.kbmini .ligne .rb.sm:hover{background:var(--p-blue)}
.kbmini .ligne .d{gap:4px}

/* fiche */
.hero{background:var(--card);border-radius:28px;box-shadow:var(--sh);padding:24px 26px;margin-bottom:14px}
.hero .l1{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}
.hero h1{font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem);font-weight:800;letter-spacing:-0.02em;line-height:1.2;flex:1;min-width:240px}
.hero .s{font-size:.9rem;color:var(--sous);font-weight:600;margin-top:4px}
.hero .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.hero .acts{display:flex;gap:8px;flex-wrap:wrap}
.stepper{display:flex;gap:6px;margin-top:18px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.stepper::-webkit-scrollbar{display:none}
.stepper button{flex:1;min-width:92px;padding:10px 8px;border-radius:12px;background:var(--inner);font-size:.74rem;font-weight:800;color:var(--mut);position:relative;white-space:nowrap}
.stepper button.done{background:var(--p-blue);color:var(--uni2)}
.stepper button.on{background:var(--uni);color:#fff;box-shadow:0 8px 20px rgba(0,51,204,0.25)}
.stepper button.perdu.on{background:var(--err);box-shadow:none}
.stepper button.gagne.on{background:var(--ok);box-shadow:none}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:16px}
.fact{background:var(--inner);border-radius:14px;padding:10px 14px;min-width:0}
.fact label{display:block;font-size:.68rem;font-weight:700;color:var(--mut)}
.fact div{font-size:.95rem;font-weight:800;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:7px}
.fact.alerte{background:var(--p-red)}.fact.alerte div,.fact.alerte label{color:var(--err)}
.fact.warn{background:var(--p-amber)}.fact.warn div,.fact.warn label{color:var(--warn)}
.tabs{display:flex;gap:4px;background:var(--card);border-radius:999px;padding:5px;box-shadow:var(--sh);margin-bottom:14px;overflow-x:auto;scrollbar-width:none;width:max-content;max-width:100%}
.tabs button{padding:9px 16px;border-radius:999px;font-size:.84rem;font-weight:700;color:var(--sous);white-space:nowrap;display:inline-flex;gap:7px;align-items:center}
.tabs button.on{background:var(--txt);color:#fff}
.tabs button .nb{font-size:.68rem;font-weight:800;background:var(--inner2);color:var(--sous);border-radius:99px;padding:1px 6px}
.tabs button.on .nb{background:rgba(255,255,255,0.2);color:#fff}
.champs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.champ label{display:block;font-size:.7rem;font-weight:700;color:var(--mut);margin-bottom:3px}
.champ div{font-size:.9rem;font-weight:600;word-break:break-word}
.champ div.v2{color:var(--mut);font-weight:500}
.timeline{list-style:none;position:relative}
.timeline li{display:grid;grid-template-columns:40px 1fr;gap:12px;padding:12px 0;position:relative}
.timeline li::before{content:"";position:absolute;left:19px;top:44px;bottom:-8px;width:2px;background:var(--inner2)}
.timeline li:last-child::before{display:none}
.timeline .ic{width:40px;height:40px;border-radius:50%;background:var(--p-blue);color:var(--uni);display:flex;align-items:center;justify-content:center;position:relative;z-index:1}
.timeline .ic svg{width:17px;height:17px}
.timeline .ic.systeme{background:var(--p-grey);color:var(--mut)}.timeline .ic.gagne{background:var(--p-green);color:var(--ok)}.timeline .ic.perdu{background:var(--p-red);color:var(--err)}.timeline .ic.appel{background:var(--p-green);color:var(--ok)}.timeline .ic.rdv,.timeline .ic.visite{background:var(--p-violet);color:#5B3FC4}.timeline .ic.mail,.timeline .ic.ouverture,.timeline .ic.clic{background:var(--p-amber);color:var(--warn)}
.timeline .tt{font-weight:800;font-size:.9rem;line-height:1.3}
.timeline .tm{font-size:.74rem;color:var(--mut);font-weight:600;margin-top:2px}
.timeline .tx{font-size:.84rem;color:var(--sous);margin-top:6px;white-space:pre-wrap;background:var(--inner);border-radius:12px;padding:8px 12px}
.actrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.actrow .btn{background:var(--inner);color:var(--txt)}
.actrow .btn:hover{background:var(--p-blue);color:var(--uni)}
.prochaine{display:flex;align-items:center;gap:12px;background:var(--p-amber);border-radius:16px;padding:12px 16px;margin-top:14px}
.prochaine .ic{width:38px;height:38px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--warn);flex-shrink:0}
.prochaine .ic svg{width:17px;height:17px}
.prochaine b{font-size:.9rem;display:block}
.prochaine span{font-size:.76rem;color:#9A6700;font-weight:700}
.prochaine.ret{background:var(--p-red)}.prochaine.ret .ic{color:var(--err)}.prochaine.ret span{color:var(--err)}
.prochaine.ok{background:var(--p-green)}.prochaine.ok .ic{color:var(--ok)}.prochaine.ok span{color:var(--ok)}
.prochaine .btn{margin-left:auto}

/* files du jour */
.file{display:grid;gap:8px}
.ligne{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:var(--inner);border-radius:16px;padding:12px 14px;cursor:pointer;transition:background .15s}
.ligne:hover{background:var(--p-blue)}
.ligne .t{font-weight:700;font-size:.88rem;line-height:1.3}
.ligne .s{font-size:.76rem;color:var(--sous);font-weight:600;margin-top:2px}
.ligne .d{display:flex;gap:6px;align-items:center}
.ligne .ic{width:38px;height:38px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--uni);flex-shrink:0}
.ligne .ic svg{width:17px;height:17px}
.ligne.ret .ic{color:var(--err);background:var(--p-red)}
.ligne.auj .ic{color:var(--warn);background:var(--p-amber)}
.ligne .rb.sm{background:#fff}

/* jauges objectifs */
.ring{width:64px;height:64px;position:relative;flex-shrink:0}
.ring svg{transform:rotate(-90deg);width:64px;height:64px}
.ring b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.76rem;font-weight:800}
.objl{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--bord)}
.objl:last-child{border-bottom:none}
.objl .l{font-weight:800;font-size:.9rem}.objl .q{font-size:.76rem;color:var(--mut);font-weight:600}
.objl .v{font-weight:800;text-align:right;white-space:nowrap}.objl .v small{display:block;font-size:.7rem;color:var(--mut);font-weight:600}

/* signaux */
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.sig{background:var(--card);border-radius:22px;box-shadow:var(--sh);padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.sig .l1{display:flex;gap:12px;align-items:flex-start}
.sig .t{font-weight:800;font-size:.92rem;line-height:1.3}
.sig .s{font-size:.8rem;color:var(--sous);font-weight:600;margin-top:3px}
.sig .tags{display:flex;gap:6px;flex-wrap:wrap}
.sig .b{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.score{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem;flex-shrink:0;background:var(--p-grey);color:var(--sous)}
.score.b{background:var(--p-blue);color:var(--uni)}.score.g{background:var(--p-green);color:var(--ok)}.score.a{background:var(--p-amber);color:var(--warn)}

/* overlays */
.ov{position:fixed;inset:0;background:rgba(15,23,51,0.35);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:60;display:none;align-items:flex-start;justify-content:center;padding:min(9vh,90px) 16px 16px;overflow-y:auto}
.ov.on{display:flex}
.modal{width:100%;max-width:600px;background:var(--card);border-radius:26px;box-shadow:var(--sh2);display:flex;flex-direction:column;max-height:calc(100vh - 60px)}
.modal.large{max-width:880px}
.mhead{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 8px}
.mhead h3{font-size:1.1rem;font-weight:800;letter-spacing:-0.01em}
.mbody{padding:8px 24px 10px;overflow-y:auto}
.mfoot{display:flex;gap:10px;padding:14px 24px 22px}
.mfoot .btn{flex:1}.mfoot .btn.sec{flex:.6}
.f{display:grid;gap:12px}
.f .deux{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.f .trois{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.f label{display:block;font-size:.72rem;font-weight:700;color:var(--mut);margin-bottom:5px}
.f input,.f select,.f textarea{width:100%;padding:12px 14px;border:1.5px solid var(--bord);border-radius:13px;background:var(--inner);font-weight:600;font-size:15px}
.f textarea{min-height:90px;resize:vertical}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--clair);background:#fff;box-shadow:0 0 0 4px rgba(61,102,255,0.12)}
.apercu{border:1.5px solid var(--bord);border-radius:16px;overflow:hidden;background:#fff}
.apercu iframe{width:100%;height:420px;border:none;display:block}
.palette{width:100%;max-width:640px;background:var(--card);border-radius:22px;box-shadow:var(--sh2);overflow:hidden}
.palette input{width:100%;padding:18px 22px;border:none;outline:none;font-size:1.02rem;font-weight:600;border-bottom:1px solid var(--bord);background:transparent}
.kList{max-height:min(52vh,460px);overflow-y:auto;padding:8px}
.kList .it{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;cursor:pointer}
.kList .it.on,.kList .it:hover{background:var(--inner)}
.kList .it b{font-size:.9rem;display:block}.kList .it span{font-size:.74rem;color:var(--mut);font-weight:600}
.kList .grp{font-size:.7rem;font-weight:800;color:var(--mut);padding:10px 12px 4px}
.menu{position:fixed;top:72px;right:var(--padx);z-index:40;background:var(--card);border-radius:18px;box-shadow:var(--sh2);min-width:250px;padding:8px;display:none}
.menu.on{display:block}
.menu .qui{padding:10px 12px 10px;border-bottom:1px solid var(--bord);margin-bottom:6px;display:flex;gap:10px;align-items:center}
.menu .qui b{display:block;font-size:.92rem}.menu .qui span{font-size:.74rem;color:var(--mut);font-weight:600}
.menu button,.menu a{display:flex;width:100%;text-align:left;padding:10px 12px;border-radius:12px;font-size:.86rem;font-weight:600;color:var(--txt);gap:10px;align-items:center}
.menu button:hover,.menu a:hover{background:var(--inner)}
.menu svg{width:17px;height:17px;color:var(--mut)}
#toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);background:var(--txt);color:#fff;padding:13px 20px;border-radius:14px;font-size:.88rem;font-weight:700;opacity:0;pointer-events:none;transition:all .2s;z-index:80;max-width:min(92vw,520px);text-align:center;box-shadow:var(--sh2)}
#toast.on{opacity:1;transform:translate(-50%,0)}
.cw{position:relative;height:230px}
.cw.sm{height:170px}
.leg{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.76rem;font-weight:700;color:var(--sous);margin-top:10px}
.leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.barh{display:grid;gap:8px}
.barh .r{display:grid;grid-template-columns:110px 1fr 90px;gap:10px;align-items:center;font-size:.8rem;font-weight:700}
.barh .b{height:12px;background:var(--inner2);border-radius:99px;overflow:hidden}
.barh .b i{display:block;height:100%;border-radius:99px;background:var(--uni)}
.barh .v{text-align:right;color:var(--sous);font-size:.76rem}
.lnk{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.86rem;padding:8px 0}
.lnk svg{width:16px;height:16px;color:var(--mut)}

@media(min-width:1700px){.kpis{grid-template-columns:repeat(6,1fr)}.card{padding:26px 28px}.hero{padding:28px 30px}}
@media(max-width:1100px){.g3,.g4{grid-template-columns:1fr 1fr}.g32,.g23{grid-template-columns:1fr}}
@media(max-width:820px){
  :root{--rail:0px}
  .body{grid-template-columns:1fr;gap:0;padding-bottom:96px}
  .rail{position:fixed;left:0;right:0;bottom:0;top:auto;flex-direction:row;justify-content:space-around;background:rgba(255,255,255,0.92);backdrop-filter:blur(14px);padding:8px 10px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(23,34,78,0.08);z-index:35;border-radius:22px 22px 0 0}
  .rail .sep{display:none}
  .tip:hover::after{display:none}
  .marque span{display:none}
  .top .in{gap:8px}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .card{padding:16px 16px;border-radius:20px}
  .hero{padding:18px}
  .f .deux,.f .trois{grid-template-columns:1fr}
  .ligne{grid-template-columns:auto 1fr}
  .ligne .d{grid-column:2}
  .menu{left:12px;right:12px}
  .kpis{grid-template-columns:1fr 1fr}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* intitules longs : deux lignes puis points de suspension (colonnes du pipeline et du kanban) */
.kbmini .ligne .t,.kc .t,.ligne .t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kbmini .ligne .s,.kc .s{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.kbmini .ligne{grid-template-columns:auto minmax(0,1fr) auto}
.ligne{grid-template-columns:auto minmax(0,1fr) auto}
.kbmini .ligne .d .rb.sm{width:30px;height:30px}

/* ---------- composition de la reference ---------- */
.hcard{background:var(--card);border-radius:28px;box-shadow:var(--sh);padding:22px 24px 18px;margin-bottom:14px}
.hhead{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;margin-bottom:18px}
.hhead h3{font-size:1.12rem;font-weight:700;letter-spacing:-0.01em}
.hhead .m{font-size:.78rem;color:var(--mut);font-weight:600;margin-top:3px}
.hhead .avgrp{justify-self:center;background:var(--inner);border-radius:999px;padding:8px 16px;gap:12px}
.hhead .acts{justify-self:end;display:flex;gap:8px}
.jcols{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}
.jcol{background:var(--inner);border-radius:22px;padding:12px;min-height:280px;display:flex;flex-direction:column;gap:8px}
.jitem{background:#fff;border-radius:16px;padding:12px 14px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;cursor:pointer;box-shadow:0 2px 8px rgba(23,34,78,0.04);transition:box-shadow .15s,transform .12s}
.jitem:hover{box-shadow:var(--sh);transform:translateY(-1px);background:#fff}
.jitem .t{font-weight:700;font-size:.84rem;line-height:1.25}
.jitem .s{font-size:.72rem;color:var(--mut);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jitem .d{display:flex;gap:6px}
.jitem .rb.sm{width:34px;height:34px;background:var(--inner);border-color:transparent}
.jitem .rb.sm:hover{background:var(--p-blue)}
.jlab{text-align:center;font-size:.82rem;font-weight:600;color:var(--sous);margin-top:10px}
.jmore{display:block;text-align:center;font-size:.76rem;font-weight:800;color:var(--uni);padding:6px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tile{background:#fff;border-radius:18px;padding:16px 14px;min-height:96px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;font-weight:700;font-size:.84rem;line-height:1.2;cursor:pointer;box-shadow:0 2px 8px rgba(23,34,78,0.04);transition:box-shadow .15s,transform .12s;position:relative}
.tile svg{width:18px;height:18px;color:var(--uni)}
.tile .tn{position:absolute;top:12px;right:12px;min-width:22px;height:22px;padding:0 6px;border-radius:99px;background:var(--p-blue);color:var(--uni);font-size:.7rem;display:flex;align-items:center;justify-content:center}
.tile.dark{background:var(--uni);color:#fff;box-shadow:0 10px 24px rgba(0,51,204,0.3)}
.tile.dark svg{color:#fff}
.tile:hover{box-shadow:var(--sh);transform:translateY(-1px)}
.gauges{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gauge{position:relative;height:210px;background:var(--inner);border-radius:20px;padding:14px}
.gauge canvas{max-height:150px}
.gauge .num{position:absolute;top:12px;left:16px;font-size:1.5rem;font-weight:800;letter-spacing:-0.02em}
.gauge .lab{position:absolute;left:0;right:0;bottom:14px;text-align:center;font-weight:800;font-size:.9rem}
.gauge .lab .s{display:block;font-size:.72rem;color:var(--mut);font-weight:600}
.tbl.ref td{background:transparent;border-bottom:1px solid var(--bord);border-radius:0!important;padding:12px 10px}
.tbl.ref tr.cliq:hover td{background:var(--inner)}
@media(max-width:1200px){.jcols{grid-template-columns:1fr 1fr}.hhead{grid-template-columns:1fr;justify-items:start}.hhead .avgrp,.hhead .acts{justify-self:start}}
@media(max-width:700px){.jcols{grid-template-columns:1fr}.gauges{grid-template-columns:1fr}}

/* ---------- survols et animations ---------- */
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
[data-in]{animation:fadeUp .4s cubic-bezier(.2,.8,.2,1) backwards;animation-delay:calc(var(--i,0)*30ms)}
.card,.hcard,.kpi,.sig,.kcol{transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}
.card:hover,.hcard:hover{box-shadow:var(--sh2)}
.grid .card:hover,.sig:hover{transform:translateY(-2px)}
.rb{transition:all .2s cubic-bezier(.2,.8,.2,1)}
.rb:hover{transform:translateY(-2px)}
.rb svg{transition:transform .3s cubic-bezier(.2,.8,.2,1)}

.rail .rb:hover{transform:translateX(2px)}
.btn{transition:background .15s,transform .15s,box-shadow .15s}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,51,204,0.18)}
.btn.sec:hover,.btn.ghost:hover{box-shadow:var(--sh)}
.avatar{transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}
.avgrp .avw:hover .avatar{transform:translateY(-2px) scale(1.06);box-shadow:var(--sh2)}
.avgrp .avw{transition:transform .25s}
.jitem .avatar{transition:transform .25s}
.jitem:hover .avatar{transform:scale(1.05)}
.jitem .rb.sm{opacity:.75;transition:all .2s}
.jitem:hover .rb.sm{opacity:1;background:var(--p-blue);color:var(--uni)}
.jitem:hover .rb.sm:hover{background:var(--uni);color:#fff}
.tile svg{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.tile:hover svg{transform:translateY(-2px)}
.tile:hover{transform:translateY(-2px)}
.tile.dark:hover{background:var(--uni2);box-shadow:0 16px 30px rgba(0,51,204,0.35)}
.tile .tn{transition:transform .25s}

.ligne{transition:background .18s,transform .18s}
.ligne:hover{transform:translateX(2px)}
.ligne .ic{transition:transform .25s}
.ligne:hover .ic{transform:scale(1.05)}
.tbl tr.cliq td{transition:background .15s}
.tbl tr.cliq:hover td:first-child{box-shadow:inset 4px 0 0 var(--uni)}
.tbl.ref tr.cliq:hover td:first-child svg{color:var(--uni)}
.tbl.ref td svg{transition:transform .25s,color .25s;color:var(--mut)}
.kc{transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s,background .18s}
.kc:hover{transform:translateY(-2px)}
.tag.cliq{transition:transform .15s,box-shadow .15s}
.tag.cliq:hover{transform:translateY(-1px);box-shadow:var(--sh)}
.chip{transition:all .18s}
.chip:hover{transform:translateY(-1px)}
.stepper button{transition:all .25s cubic-bezier(.2,.8,.2,1)}
.stepper button:not(:disabled):hover{background:var(--p-blue);color:var(--uni)}
.stepper button.on:hover{background:var(--uni2);color:#fff}
.fact{transition:transform .2s,background .2s}
.fact:hover{background:#fff;box-shadow:var(--sh)}
.gauge{transition:transform .25s}

.gauge .num{transition:transform .25s}

.kpi .ic{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.kpi:hover .ic{transform:scale(1.05)}
.jlab{transition:color .2s}
.jcol:hover+.jlab{color:var(--uni)}
.marque img{transition:transform .3s}

@media(prefers-reduced-motion:reduce){[data-in]{animation:none}}

/* ---------- equilibre des rangees et photos ---------- */
.grid>*,.gauges>*,.cw{min-width:0}
.grid{gap:16px}
.card{margin-bottom:16px}
.pile{display:grid;gap:16px;align-content:start}
.pile>.card{margin-bottom:0}
.tbl.ref td .s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;display:block}
.tbl.ref td.w{white-space:nowrap;min-width:0}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.avatar.photo{background:#fff}
.gauge{height:190px}
.gauge canvas{max-height:130px}
.jcol{min-height:300px}

/* rangees equilibrees : les cartes d'une meme rangee ont la meme hauteur */
.grid.g2,.grid.g32,.grid.g23,.grid.g3{align-items:stretch}
.grid.g2>.card,.grid.g32>.card,.grid.g23>.card,.grid.g3>.card{height:100%}
.grid .card .vide{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:160px}

/* sequences */
.steps{display:flex;flex-wrap:wrap;gap:6px}
.step{font-size:.72rem;font-weight:700;padding:5px 10px;border-radius:999px;background:var(--inner);color:var(--sous);display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.step svg{width:13px;height:13px}
.step.done{background:var(--p-green);color:var(--ok)}
.step.now{background:var(--uni);color:#fff}
.step.skip{opacity:.55}
.seqcard{display:grid;gap:8px}
.seqcard .d{font-size:.8rem;color:var(--sous)}
