:root{--navy:#1f3a68;--navy-d:#152a4d;--gold:#d4a72c;--gold-l:#f6ecd0;--bg:#f4f6fa;--text:#1e293b;--muted:#64748b;--line:#e2e8f0}
*{box-sizing:border-box;margin:0}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:4rem 1.5rem 0}
body:has(.topbar){padding-top:7rem}
header{text-align:center;margin-bottom:2.5rem}
h1{font-size:clamp(1.8rem,4.5vw,2.6rem);font-weight:700;color:var(--navy)}
h1 .accent{color:var(--gold)}
header p{color:var(--muted);margin-top:.5rem;font-size:1.05rem}
.logo-card{display:inline-block;background:#fff;border-radius:1.25rem;padding:1.25rem 1.75rem;box-shadow:0 8px 24px rgba(31,58,104,.1);margin-bottom:1.5rem}
.logo-card img{display:block;width:220px;max-width:60vw;height:auto}
.topbar{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;gap:1.25rem;align-items:center;padding:.6rem 1.5rem;background:#fff;border-bottom:3px solid var(--gold);box-shadow:0 2px 12px rgba(31,58,104,.08);font-size:.95rem;flex-wrap:wrap}
.topbar a,.topbar .link{color:var(--navy);text-decoration:none;background:none;border:0;font:inherit;font-weight:500;cursor:pointer;padding:0}
.topbar a:hover,.topbar .link:hover{color:var(--gold)}
.topbar .brand{display:flex;align-items:center;gap:.75rem;margin-right:auto;font-weight:700}
.topbar .brand img{height:42px;width:auto}
.topbar .who{color:var(--muted)}
.inline{display:inline}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;width:100%;max-width:900px}
.card{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid var(--line);border-top:4px solid var(--navy);border-radius:1.25rem;padding:2rem;transition:.2s;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.card:hover{transform:translateY(-4px);border-top-color:var(--gold);box-shadow:0 14px 30px rgba(31,58,104,.14)}
.icon{font-size:2.5rem;margin-bottom:1rem}
.card h2{font-size:1.35rem;color:var(--navy);margin-bottom:.5rem}
.card p{color:var(--muted);line-height:1.5}
.go{display:inline-block;margin-top:1.25rem;color:var(--gold);font-weight:700}
.box{max-width:560px;text-align:center;background:#fff;border-radius:1.25rem;padding:2.5rem;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.box p{color:var(--muted);font-size:1.1rem}
.back,.btn{display:inline-block;padding:.8rem 1.5rem;border:0;border-radius:999px;background:var(--navy);color:#fff;text-decoration:none;font:inherit;font-weight:600;cursor:pointer;transition:.15s}
.back{margin-top:1.75rem}
.back:hover,.btn:hover{background:var(--gold);color:var(--navy-d)}
.panel{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:2rem;box-shadow:0 8px 24px rgba(31,58,104,.08)}
.panel.full{max-width:none;margin-bottom:1.5rem}
.panel h2{color:var(--navy);font-size:1.15rem;margin-bottom:1rem}
.form{display:flex;flex-direction:column;gap:1rem}
.form.row{flex-direction:row;flex-wrap:wrap;align-items:flex-end}
.form.row label{flex:1;min-width:200px}
label{display:flex;flex-direction:column;gap:.4rem;color:var(--navy);font-weight:500;font-size:.95rem}
small{color:var(--muted);font-weight:400}
input,select{padding:.75rem 1rem;border-radius:.75rem;border:1px solid #cbd5e1;background:#fff;color:var(--text);font:inherit}
input:focus,select:focus{outline:2px solid var(--gold);border-color:transparent}
.alert,.notice,.secret{width:100%;max-width:900px;padding:.9rem 1.2rem;border-radius:.75rem;margin-bottom:1.25rem}
.panel .alert{max-width:none}
.alert{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
.notice{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}
.secret{background:var(--gold-l);border:1px solid var(--gold);color:#5c4708}
.secret code{font-size:1.1rem;background:#fff;padding:.15rem .5rem;border-radius:.4rem}
.wide{width:100%;max-width:1100px}
.tablewrap{overflow-x:auto;border-radius:1rem;border:1px solid var(--line);background:#fff}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--line)}
th{color:#fff;font-weight:600;background:var(--navy)}
.actions{white-space:nowrap}
.small{padding:.35rem .8rem;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:var(--navy);font:inherit;font-size:.85rem;cursor:pointer}
.small:hover{border-color:var(--gold);color:var(--gold)}
.small.danger:hover{border-color:#dc2626;color:#dc2626}
.tag{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.8rem;background:#eef2f7;color:var(--navy)}
.tag.ok{background:#dcfce7;color:#166534}.tag.off{background:#fee2e2;color:#991b1b}
footer{margin-top:auto;padding:3rem 0 1.5rem;color:var(--muted);font-size:.85rem}
.cards.two{max-width:none;margin-bottom:2rem}
.cards.two .panel{margin:0}
.hint{color:var(--muted);font-size:.9rem;line-height:1.5;margin-bottom:1rem}
.hint code,.panel code{background:#eef2f7;padding:.1rem .4rem;border-radius:.3rem;font-size:.82rem;word-break:break-all}
input[type=file]{padding:.6rem;background:#f8fafc}
.dl{display:inline-block;margin-top:1rem;color:var(--navy);font-weight:600;text-decoration:none}
.dl:hover{color:var(--gold)}
h2.sub{color:var(--navy);font-size:1.25rem;margin:0 0 1rem}
.bar{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;min-width:120px;margin-bottom:.3rem}
.bar span{display:block;height:100%;background:linear-gradient(90deg,var(--navy),var(--gold));transition:width .4s}
.upbar{margin-top:1rem}
tr.hl td{background:var(--gold-l)}
td a{color:var(--navy);font-weight:600}
.cat{width:100%;max-width:1200px}
.cat-head{margin-bottom:1.25rem}
.cat-head .crumb{color:var(--gold);font-weight:700;text-decoration:none;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}
.cat-head h1{text-align:left;margin-top:.25rem;font-size:clamp(1.5rem,3.5vw,2.1rem)}
.cat-head p{color:var(--muted);margin-top:.35rem}
.cat-head p a{color:var(--navy);font-weight:600;text-decoration:none}
.tabs{display:flex;gap:.35rem;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.35rem;margin-bottom:1.75rem;box-shadow:0 4px 14px rgba(31,58,104,.06);width:fit-content;max-width:100%}
.tabs a{display:flex;align-items:center;gap:.45rem;padding:.6rem 1.1rem;border-radius:999px;color:var(--navy);text-decoration:none;font-weight:600;font-size:.95rem;transition:.15s}
.tabs a:hover{background:#eef2f7}
.tabs a.on{background:var(--navy);color:#fff}
.tabs a.on span{filter:grayscale(.2)}
.filters{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1.25rem}
.filters input[type=search],.filters input[name=label]{flex:1;min-width:240px}
.filters.big input{font-size:1.1rem;padding:1rem 1.25rem}
.filters .count{color:var(--muted);margin-left:auto;font-size:.9rem}
.chip{background:var(--gold-l);color:#5c4708;border-radius:999px;padding:.4rem .8rem;font-size:.9rem}
.chip a{color:#5c4708;text-decoration:none;font-weight:700;margin-left:.3rem}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.tile{background:#fff;border:1px solid var(--line);border-radius:1.1rem;padding:1.4rem;text-decoration:none;color:var(--muted);display:flex;flex-direction:column;gap:.3rem;transition:.2s;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.tile:hover{transform:translateY(-3px);border-color:var(--gold)}
.tile .ic{font-size:1.6rem}
.tile b{font-size:1.7rem;color:var(--navy)}
table.rows tbody tr[data-href]{cursor:pointer;transition:background .1s}
table.rows tbody tr[data-href]:hover,table.rows tbody tr[data-href]:focus{background:#f8f4e6;outline:none}
table.rows td a{color:var(--navy);text-decoration:none;font-weight:600}
td.empty{text-align:center;color:var(--muted);padding:2rem}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.thumb{display:block;width:44px;height:44px;border-radius:.5rem;object-fit:contain;background:#fff;border:1px solid var(--line)}
.thumb svg{width:100%;height:100%}
.pager{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;color:var(--muted)}
.pager a{color:var(--navy);font-weight:600;text-decoration:none}
.fiche{display:grid;grid-template-columns:minmax(260px,380px) 1fr;gap:1.75rem;align-items:start}
@media (max-width:800px){.fiche{grid-template-columns:1fr}}
.photo{background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1.25rem;aspect-ratio:1;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(31,58,104,.08)}
.photo img{max-width:100%;max-height:100%;object-fit:contain}
.photo .ph{width:70%}
.imgedit{margin-top:1rem;background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1rem}
.imgedit summary{cursor:pointer;color:var(--navy);font-weight:600}
.imgedit form{margin-top:1rem}
.info-col{display:flex;flex-direction:column;gap:1.25rem}
.sec{background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1.5rem;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.sec h2{color:var(--navy);font-size:1.05rem;margin-bottom:1rem;padding-bottom:.6rem;border-bottom:2px solid var(--gold-l)}
.sec dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem 1.5rem}
.sec dt{color:var(--muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}
.sec dd{margin:.2rem 0 0;color:var(--text);font-weight:600;font-size:1.02rem}
.sec dd a{color:var(--navy)}
.desc{color:var(--text);line-height:1.6}
.cat-layout{width:100%;max-width:1400px;display:grid;grid-template-columns:250px 1fr;gap:2rem;align-items:start}
.cat{max-width:none;min-width:0}
.side{position:sticky;top:6.5rem;background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1rem .75rem;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.side-title{font-size:.78rem;font-weight:700;color:var(--gold);text-transform:uppercase;letter-spacing:.06em;padding:.25rem .75rem .75rem}
.side ul{list-style:none;padding:0;margin:0}
.side ul.lvl1{margin:.2rem 0 .4rem 1.1rem;padding-left:.6rem;border-left:2px solid var(--gold-l)}
.side a,.side summary{display:flex;align-items:center;gap:.6rem;padding:.6rem .75rem;border-radius:.7rem;color:var(--navy);text-decoration:none;font-weight:600;font-size:.95rem;cursor:pointer;transition:.15s;list-style:none}
.side summary::-webkit-details-marker{display:none}
.side .lvl1 a{font-weight:500;font-size:.92rem;padding:.45rem .7rem}
.side a:hover,.side summary:hover{background:#eef2f7}
.side a.on{background:var(--navy);color:#fff}
.side summary.parent-on{color:var(--navy);background:var(--gold-l)}
.side .ic{width:1.3rem;text-align:center}
.side .chev{margin-left:auto;font-size:.8rem;transition:transform .2s;color:var(--muted)}
.side details:not([open]) .chev{transform:rotate(-90deg)}
.side-toggle{display:none;margin-bottom:1rem;padding:.6rem 1rem;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--navy);font:inherit;font-weight:600;cursor:pointer}
@media (max-width:900px){
 .cat-layout{grid-template-columns:1fr}
 .side-toggle{display:inline-block}
 .side{display:none;position:static}
 .side.show{display:block;margin-bottom:1rem}
}
.cbadge{display:inline-block;padding:.2rem .65rem;border-radius:999px;font-size:.8rem;font-weight:700;white-space:nowrap}
.cbadge.ok{background:#dcfce7;color:#166534}
.cbadge.mid{background:#fef3c7;color:#92400e}
.cbadge.low{background:#fee2e2;color:#991b1b}
ul.missing{list-style:none;padding:0;margin:.8rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem}
ul.missing li,.mtag{background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;border-radius:999px;padding:.15rem .6rem;font-size:.8rem;font-weight:600}
.misscell{display:flex;flex-wrap:wrap;gap:.3rem}
.sec.cmp .bar{margin-top:1rem;height:10px}
.sec.cmp.is-ok{border-left:5px solid #22c55e}.sec.cmp.is-inc{border-left:5px solid var(--gold)}
.seg{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.3rem;margin-bottom:1.25rem}
.seg a{padding:.5rem 1.1rem;border-radius:999px;color:var(--navy);text-decoration:none;font-weight:600;font-size:.92rem}
.seg a.on{background:var(--navy);color:#fff}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:1.25rem}
.kpi{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1rem;text-decoration:none;display:flex;flex-direction:column;gap:.15rem;transition:.15s;box-shadow:0 4px 14px rgba(31,58,104,.05)}
.kpi b{font-size:1.5rem;color:var(--navy)}.kpi span{color:var(--text);font-weight:600;font-size:.9rem}.kpi small{color:var(--muted)}
.kpi:hover{border-color:var(--gold)}
.kpi.on{background:var(--navy);border-color:var(--navy)}.kpi.on b,.kpi.on span,.kpi.on small{color:#fff}
.split{display:grid;grid-template-columns:1fr 290px;gap:1.5rem;align-items:start}
.split-main{min-width:0}
@media (max-width:1150px){.split{grid-template-columns:1fr}.panel-side{order:-1}}
.panel-side{background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1.25rem;box-shadow:0 4px 14px rgba(31,58,104,.06)}
.panel-side h2{color:var(--navy);font-size:1rem;margin-bottom:.8rem;padding-bottom:.5rem;border-bottom:2px solid var(--gold-l)}
.rlist{list-style:none;padding:0;margin:0}
.rlist a,.rlist .norsn{display:flex;justify-content:space-between;gap:.5rem;padding:.5rem .7rem;border-radius:.6rem;text-decoration:none;color:var(--navy);font-size:.92rem}
.rlist a:hover{background:#eef2f7}.rlist a.on{background:var(--navy);color:#fff}
.rlist a.inactive span{opacity:.6}.rlist .norsn{color:var(--muted)}
.rlist b{font-variant-numeric:tabular-nums}
.manage{margin-top:1rem;border-top:1px solid var(--line);padding-top:.8rem}
.manage summary{cursor:pointer;color:var(--navy);font-weight:600}
.manage .form{margin:.8rem 0}
.rman{display:flex;gap:.4rem;align-items:center;margin-bottom:.4rem}
.rrow{display:flex;gap:.3rem;flex:1}.rrow input{flex:1;min-width:0;padding:.4rem .6rem;font-size:.85rem}
.sbadge{display:inline-block;padding:.2rem .65rem;border-radius:999px;font-size:.8rem;font-weight:700}
.sbadge.on{background:#dcfce7;color:#166534}.sbadge.off{background:#fee2e2;color:#991b1b}
.sreason{display:block;margin-top:.25rem;font-size:.78rem;color:#991b1b}
.stcell{min-width:120px}
.chint{color:var(--muted);font-size:.75rem}.chint.ok{color:#166534}
.kpi.static{cursor:default}.kpi.st-ok b{color:#166534}.kpi.st-mid b{color:#92400e}.kpi.st-low b{color:#991b1b}.kpi.on b{color:#fff}
h2.sub small{font-weight:400}
.wide-btn{display:block;text-align:center;margin-top:1rem}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}
textarea{padding:.75rem 1rem;border-radius:.75rem;border:1px solid #cbd5e1;font:inherit;resize:vertical}
input:disabled{background:#f1f5f9;color:var(--muted)}
.actionsbar{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center;position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 30%);padding:1rem 0}
.btn.ghost{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.rid{display:inline-block;font:600 .72rem/1.4 monospace;background:#eef1f6;color:#334;border-radius:4px;padding:0 .35rem;margin-right:.3rem}
.sdate{display:block;color:#64748b;font-size:.75rem}.drange{display:inline-flex;gap:.3rem;align-items:center;font-size:.85rem}
.rbadges{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.2rem}.rbadge{font-size:.68rem;padding:0 .4rem;border-radius:9px;background:#eef1f6;color:#334}.rbadge.perm{background:#fde2e2;color:#9b1c1c}.rbadge.auto{background:#dcfce7;color:#166534}.rcfg{display:block;font-size:.75rem;padding:.1rem .6rem .4rem}.stform{display:inline-flex;gap:.4rem;margin-left:.6rem;align-items:center}[hidden]{display:none!important}
.cstate{display:inline-block;font-size:.72rem;font-weight:600;padding:.05rem .5rem;border-radius:9px}.cstate.on{background:#dcfce7;color:#166534}.cstate.off{background:#fde2e2;color:#9b1c1c}tr.cat-off td{color:#64748b}

/* Gestion des états v2: full-width reasons table */
.rsec{background:#fff;border:1px solid var(--line);border-radius:1rem;box-shadow:0 4px 14px rgba(31,58,104,.06);margin-bottom:1.25rem;padding:.4rem .9rem .9rem}
.rsec>summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;padding:.5rem 0;color:var(--navy);font-weight:700}
.rsec>summary::-webkit-details-marker{display:none}
.rsec>summary::before{content:'▸';color:var(--gold);transition:transform .15s;display:inline-block}
.rsec[open]>summary::before{transform:rotate(90deg)}
.rsec>summary small{color:var(--muted);font-weight:400;font-size:.82rem}
.rsec .rclear{margin-left:auto;font-size:.8rem;font-weight:600;color:var(--navy);text-decoration:none;border:1px solid #cbd5e1;border-radius:999px;padding:.1rem .6rem}
.rsec .rclear:hover{border-color:var(--gold);color:var(--gold)}
.rtable{max-height:24rem;overflow:auto;border-radius:.6rem}
.rtab{font-size:.86rem;min-width:640px}
.rtab th,.rtab td{padding:.32rem .7rem;white-space:nowrap;vertical-align:middle}
.rtab thead th{position:sticky;top:0;z-index:1;font-size:.78rem;letter-spacing:.02em}
.rtab th[data-k]{cursor:pointer;user-select:none}.rtab th[data-k]:hover{color:var(--gold-l)}
.rtab th[data-k]::after{content:' ↕';opacity:.35;font-size:.7rem}
.rtab th[aria-sort=ascending]::after{content:' ▲';opacity:.9}.rtab th[aria-sort=descending]::after{content:' ▼';opacity:.9}
.rtab .num{text-align:right;font-variant-numeric:tabular-nums}
.rtab td a{color:var(--navy);text-decoration:none}
.rtab td.rname{width:100%;max-width:32rem;overflow:hidden;text-overflow:ellipsis}
.rtab td.rname a{font-weight:600}
.rtab tbody tr[data-go]{cursor:pointer}
.rtab tbody tr[data-go]:hover{background:#f8f4e6}
.rtab tbody tr.on{background:var(--navy)!important}
.rtab tbody tr.on td,.rtab tbody tr.on td a{color:#fff}
.rtab tbody tr.on .rid{background:rgba(255,255,255,.18);color:#fff}
.rtab tbody.rtop tr{background:#f8fafc}
.rtab tr.roff td{opacity:.6}
.rtab tr.rnone td{color:var(--muted);font-style:italic}
.rtab .rid{margin:0}
.rtab .rbadge{font-size:.72rem;padding:.05rem .45rem;white-space:nowrap}
.rtab .rno{color:var(--muted);font-size:.8rem}
.rtab td.act{width:1%;text-align:center;padding:.2rem .4rem}
.rcog{display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:var(--navy)!important;font-size:.95rem;line-height:1}
.rcog:hover{border-color:var(--gold);color:var(--gold)!important}
.rsec .manage{margin-top:.8rem}
.rmgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:.2rem 1rem}
.rmgrid .rrow input{min-width:0;flex:1}
.fullmain{width:100%;min-width:0}
@media (max-width:640px){.rsec{padding:.3rem .5rem .6rem}.rtable{max-height:20rem}.rmgrid{grid-template-columns:1fr}}

/* reason deletion */
.btn.danger{background:#b91c1c}.btn.danger:hover{background:#7f1d1d;color:#fff}
.dangerzone{margin-top:1.5rem;text-align:left;border:1px solid #fecaca}
.dangerzone h2{color:#991b1b;font-size:1.05rem;margin-bottom:.6rem}
a.small.rdel{text-decoration:none;padding:.3rem .55rem;line-height:1}

/* ===== Documentation (/documentation/) ===== */
.doc-body{background:#fff;border:1px solid var(--line);border-radius:1.25rem;padding:1.5rem 2rem 2rem;box-shadow:0 4px 14px rgba(31,58,104,.06);line-height:1.6;min-width:0}
.doc-body .lead{font-size:1.02rem;margin-bottom:1rem}
.doc-body h2{color:var(--navy);font-size:1.3rem;margin:2rem 0 .75rem;padding-bottom:.35rem;border-bottom:2px solid var(--gold-l);scroll-margin-top:7.5rem;text-align:left}
.doc-body h2 small{color:var(--muted);font-weight:500;font-size:.85rem;margin-left:.5rem}
.doc-body h3{color:var(--navy);font-size:1.02rem;margin:1.25rem 0 .5rem}
.doc-body p,.doc-body ul,.doc-body ol{margin:0 0 .85rem}
.doc-body ul,.doc-body ol{padding-left:1.4rem}
.doc-body li{margin:.25rem 0}
.doc-body a{color:var(--navy);font-weight:600}
.doc-body code{background:#eef2f7;padding:.08rem .38rem;border-radius:.3rem;font-size:.85em;color:#0f2647;word-break:break-word}
.doc-body table.dt{margin:.5rem 0 1.25rem;border:1px solid var(--line);border-radius:.6rem;overflow:hidden;display:block;overflow-x:auto}
.doc-body table.dt th{background:var(--navy);color:#fff;text-align:left;padding:.55rem .75rem;font-size:.85rem;font-weight:600;white-space:nowrap}
.doc-body table.dt td{padding:.5rem .75rem;border-top:1px solid var(--line);vertical-align:top;font-size:.9rem}
.doc-body table.dt tr:nth-child(even) td{background:#f8fafc}
.doc-body table.dt .num{text-align:right;white-space:nowrap}
.doc-body table.cols td:first-child,.doc-body table.cols td:nth-child(2){white-space:nowrap}
.doc-body .todo{color:#b45309;font-style:italic}
.doc-body .warn{color:#b91c1c;font-weight:600}
.doc-body details summary{cursor:pointer;color:var(--muted);font-size:.8rem}
.doc-body code.gen{display:block;white-space:pre-wrap;font-size:.75rem;margin-top:.25rem;max-width:28rem}
.doc-toc{display:flex;flex-wrap:wrap;gap:.35rem .5rem;align-items:center;background:var(--gold-l);border-radius:.8rem;padding:.65rem .9rem;margin-bottom:1.25rem;font-size:.88rem}
.doc-toc b{color:var(--navy);margin-right:.25rem}
.doc-toc a{background:#fff;border-radius:999px;padding:.15rem .65rem;text-decoration:none;font-weight:500}
.doc-toc a:hover{background:var(--navy);color:#fff}
.doc-body .tree pre{background:#0f1f3a;color:#e2e8f0;padding:1rem 1.25rem;border-radius:.8rem;overflow-x:auto;font-size:.82rem;line-height:1.5}
.doc-body .tree b{color:var(--gold)}
.doc-diagram{border:1px solid var(--line);border-radius:.8rem;background:#fbfcfe;padding:.5rem;margin-bottom:.5rem;overflow-x:auto}
.doc-diagram svg{width:100%;min-width:640px;height:auto;display:block}
.doc-diagram .tb{fill:#fff;stroke:var(--navy);stroke-width:1.5}
.doc-diagram .tb.main{fill:var(--gold-l);stroke:var(--gold);stroke-width:2.5}
.doc-diagram .tb.lone{stroke-dasharray:5 4;stroke:#94a3b8}
.doc-diagram a:hover .tb{fill:#eef2f7}
.doc-diagram .tn{font:700 14px system-ui,sans-serif;fill:var(--navy);text-anchor:middle}
.doc-diagram .tr{font:12px system-ui,sans-serif;fill:#64748b;text-anchor:middle}
.doc-diagram .fk{fill:none;stroke:#c8102e;stroke-width:1.5;opacity:.75}
.doc-diagram .fkl{font:11px ui-monospace,monospace;fill:#7f1d1d;text-anchor:middle;paint-order:stroke;stroke:#fbfcfe;stroke-width:4px}
.dtable{border-top:1px dashed var(--line);margin-top:1.5rem}
.clog .cday{font-size:1.1rem}
.centry{border-left:4px solid var(--gold);background:#fbfcfe;border-radius:0 .8rem .8rem 0;padding:.75rem 1rem .25rem;margin:0 0 1rem}
.chead{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.4rem;color:var(--navy)}
.ctime{background:var(--navy);color:#fff;border-radius:.4rem;padding:.05rem .45rem;font-size:.8rem;font-weight:600}
.ctag{background:#eef2f7;color:var(--muted);border-radius:999px;padding:.05rem .55rem;font-size:.75rem}
@media (max-width:700px){.doc-body{padding:1rem}}
.doc-body table.dt>tbody{display:table;width:100%}
.tbadge{display:inline-block;margin-left:.3rem;padding:.12rem .55rem;border-radius:999px;font-size:.72rem;font-weight:700;vertical-align:middle}
.tbadge.temp{background:#fef3c7;color:#92400e}.tbadge.perm{background:#1f2937;color:#fff}
.stform select[name=dtype]{max-width:12rem}
/* sous-entrées de menu (ex. Catégories > Catégorisation automatique) */
.side ul.lvl2{margin:.1rem 0 .3rem .9rem;padding-left:.55rem;border-left:2px solid var(--gold-l)}
.side .lvl2 a{font-size:.88rem;padding:.38rem .65rem;font-weight:500}
.side a.parent-on{background:var(--gold-l);color:var(--navy)}

/* Fournisseurs */
.slogo{object-fit:contain;background:#fff}
.slogo.none{display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;color:var(--navy);background:#eef2f7;border-radius:8px}
.slogo-big img{object-fit:contain;background:#fff;padding:1rem}
.secretf{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.2rem 0 .6rem}
.secretf .lbl{font-weight:600;width:100%}
.secretf details{width:100%}
.secretf input[type=password]{width:100%;margin:.4rem 0}
pre.jsonp{white-space:pre-wrap;word-break:break-word;margin:0;font-size:.82rem;background:#f6f8fb;padding:.5rem;border-radius:6px}
tr.hl td{background:#fff8e1}
.mlogo{margin:.2rem 0 1rem}
.mlogo-img{max-width:220px;max-height:90px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.5rem}
.sgroups{display:flex;flex-direction:column;gap:.7rem}
.sgroup{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sgroup>summary{list-style:none;display:flex;align-items:center;gap:.8rem;padding:.7rem 1rem;cursor:pointer;flex-wrap:wrap}
.sgroup>summary::-webkit-details-marker{display:none}
.sgroup>summary:hover{background:#f6f8fb}
.sgroup .chev{display:inline-block;transition:transform .15s;color:var(--navy);font-size:1.1rem;width:1rem}
.sgroup[open] .chev{transform:rotate(90deg)}
.sgroup .sgname{font-weight:700;color:var(--navy);font-size:1.05rem;min-width:12rem}
.sgroup .sgname a{color:inherit;text-decoration:none}
.sgroup .sgname a:hover{text-decoration:underline}
.sgroup .sgcount{color:var(--muted);margin-left:auto}
.sgroup.orphan .sgname{color:var(--muted)}
.sgbody{padding:0 1rem 1rem;border-top:1px solid var(--line)}
.sgbody table.subt{width:100%;margin-top:.6rem}
.sgbody .dl{display:inline-block;margin-top:.6rem}
.sempty{margin:.8rem 0 0}
.tile .ic .thumb{width:44px;height:44px}
.stype{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.78rem;font-weight:700;letter-spacing:.02em}
.stype.dropship{background:#e8eefb;color:var(--navy)}
.stype.transit{background:#fdf3d8;color:#8a6510}
.form h3.subh{margin:.4rem 0 0;font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted,#6b7280)}
.itag{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.75rem;font-weight:700;margin-right:.25rem;white-space:nowrap}
.itag.api{background:#e6f4ea;color:#1e6b35}
.itag.stock{background:#efe8fb;color:#5b3a9a}
.radios{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;align-items:center}
.radios .lbl{font-weight:600;width:100%}

/* 2026-10-23 – Catalogue fournisseur / SFTP : barres de liens en boutons, liens de texte stylés */
.btn.sm{padding:.5rem 1.05rem;font-size:.9rem}
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn:disabled:hover{background:var(--navy);color:#fff}
.btn.ghost:disabled:hover{background:#fff;color:var(--navy)}
.linkbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin:0 0 1.25rem}
.sec .linkbar:last-child{margin-bottom:0}
.notice .btn,.alert .btn{margin-left:.4rem}
a.small{text-decoration:none;display:inline-block}
.sec h2 a{color:var(--navy);text-decoration:none}.sec h2 a:hover{color:var(--gold)}
.sec p a:not(.btn):not(.small),.hint a:not(.btn):not(.small),.notice a:not(.btn):not(.small),.alert a:not(.btn):not(.small),.sec li a:not(.btn){color:var(--navy);font-weight:600}

/* 2026-10-23 – résumé lecture seule de la connexion SFTP */
dl.sftpsum{display:grid;gap:.35rem;margin:.6rem 0 .9rem}
dl.sftpsum div{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline;flex-wrap:wrap}
dl.sftpsum dt{color:var(--muted);font-size:.85rem}
dl.sftpsum dd{margin:0;font-size:.88rem;text-align:right}

/* 2026-10-23 – logos du Récapitulatif Catalogue fournisseur */
.cfname{display:inline-flex;align-items:center;gap:.5rem}
.cfname .cflogo{height:22px;width:auto;max-width:88px;object-fit:contain;flex:none}
table.rows .cfname .cflogo{height:18px;max-width:70px}
table.rows .cfname{white-space:nowrap}

/* Liste des produits : bouton Exporter en CSV */
.exportbar{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin:0 0 .6rem}

/* Boutons dans les tableaux : texte visible (table.rows td a / .rtab td a imposaient la couleur des liens) */
table.rows td a.btn,.rtab td a.btn{color:#fff;text-decoration:none}
table.rows td a.btn:hover,.rtab td a.btn:hover{color:var(--navy-d)}
table.rows td a.btn.ghost,.rtab td a.btn.ghost{color:var(--navy)}
table.rows td a.btn.danger:hover{color:#fff}
/* Récapitulatif Catalogue fournisseur : nom + logo cliquables */
a.cflink{color:inherit;text-decoration:none}
a.cflink:hover,tr[data-href]:hover a.cflink{color:var(--gold)}
h2 a.cflink:hover{text-decoration:underline}
/* Test de connexion SFTP : section pleine largeur, tableau sans défilement horizontal */
.sftpres .notice,.sftpres .alert{overflow-wrap:anywhere}
table.sftplist{table-layout:fixed;width:100%}
table.sftplist col.c-size{width:7.5em}table.sftplist col.c-date{width:11em}table.sftplist col.c-pick{width:8em}
table.rows.sftplist td{white-space:normal}
table.sftplist td.fname{overflow-wrap:anywhere;word-break:break-word}
table.sftplist td.num{white-space:nowrap}
@media (max-width:640px){table.sftplist col.c-size{width:5.5em}table.sftplist col.c-date{width:7em}table.sftplist col.c-pick{width:5.5em}}
table.sftplist td:nth-child(3){white-space:nowrap}

/* 23/10/2026 — Espacement vertical homogène entre les blocs (cartes, sections, panneaux, grilles de compteurs,
   tableaux) des pages du Catalogue : chaque bloc de premier niveau est séparé de ce qui le précède et de ce qui le suit
   d'au moins 18 px (les marges existantes plus grandes sont conservées : marges fusionnées). Les notes .hint restent
   collées au bloc qu'elles commentent. Spécificité nulle (:where) : toute règle propre à une page reste prioritaire.
   Sauvegarde de l'ancienne feuille : /root/bak-cat/20261023-231852-espacement-cartes/. */
:root{--gap-v:1.125rem}
:where(.cat-body, .cat-body > form) > :where(:not(style,script,link,template,input)) + :where(.sec,section,.panel,.rsec,details,.tiles,.kpis,.tablewrap,.cards,.split,.dangerzone,.panel-side),
:where(.cat-body, .cat-body > form) > :where(.sec,section,.panel,.rsec,details,.tiles,.kpis,.tablewrap,.cards,.split,.dangerzone,.panel-side) + :where(:not(style,script,link,template,input,.hint,small)){margin-top:var(--gap-v)}
/* Ligne « ↻ Recalculer maintenant » : séparée du bloc suivant */
:where(.cat-body) > p.hint:has(a[href*="refresh=1"]){margin-bottom:calc(var(--gap-v) + .35rem)}
.tag.err{background:#fee2e2;color:#991b1b}.tag.wait{background:#fef3c7;color:#92400e}.tag.z{color:#9ca3af} /* 25/10/2026 : rouge = erreur, jaune = en cours */

/* 26/10/2026 (Julien) : Indisponibles en rouge clair bien visible, distinct des Erreurs (rouge franc) ; à 0 la cellule reste grise (.z). */
.cell-indispo,td.cell-indispo,.mj-band>div.cell-indispo,.tag.cell-indispo{background:#fff1f1!important;color:#b42318!important;font-weight:600}
.mj-band>div.cell-indispo b{color:#b42318}

/* 26/10/2026 (Julien) : lignes bien distinctes dans les tableaux fournisseurs / marketplaces (classe commune rows-z) */
table.rows-z>tbody>tr:not(.cf-det)>td{border-bottom:1px solid #d9e0ea;padding-top:.7rem;padding-bottom:.7rem}
table.rows-z:not(.cfsum)>tbody>tr:nth-child(even)>td,table.cfsum>tbody>tr.cf-row:nth-of-type(4n+3)>td{background-color:#f3f6fa}
table.rows-z>tbody>tr:hover>td{background-color:#e9effa}
table.rows-z>tbody>tr>td img{height:26px!important;max-width:84px!important;width:auto!important;object-fit:contain;vertical-align:middle;margin-right:.45em}
table.rows-z>tbody>tr>td:first-child{font-weight:600;color:var(--navy,#1d2b4f)}

/* 27/10/2026 (Julien) : tableau des sous-fournisseurs compact, tient dans sa carte à 1366 px ; aperçus de fichier fournisseur compacts */
.sgbody table.subt{table-layout:auto;font-size:.75rem;color:#374151}
.sgbody table.subt th,.sgbody table.subt td{padding:.35rem .45rem}
.sgbody table.subt td:nth-child(3){max-width:11rem}
.sgbody table.subt td:nth-child(6) a{display:inline-block;max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.sgbody table.subt .fpc{flex-wrap:nowrap;white-space:nowrap;gap:.2rem}
.sgbody table.subt .fpc>span{font-size:.68rem;padding:.05rem .3rem}
.sgbody table.subt .slogo,.sgbody table.subt .thumb{transform:scale(.85)}
button.icob{border:1px solid #d9e0ea;background:#fff;border-radius:8px;padding:.15rem .4rem;font-size:.8rem;cursor:pointer;line-height:1.2}
button.icob:hover{background:#f1f5f9}
table.fcprev{font-size:.7rem;color:#374151;table-layout:fixed;width:100%}
table.fcprev th,table.fcprev td{padding:.25rem .3rem;white-space:normal;overflow-wrap:anywhere;word-break:break-word;vertical-align:top}
/* 27/10/2026 : même tableau compact dans la fiche fournisseur principal (carte étroite) */
table.subc{font-size:.72rem;color:#374151;width:100%}
table.subc th,table.subc td{padding:.3rem .35rem}
table.subc td:nth-child(1),table.subc th:nth-child(1),table.subc td:nth-child(6),table.subc th:nth-child(6){display:none}
table.subc .fpc{display:flex;flex-direction:column;gap:.1rem;white-space:nowrap}
table.subc .fpc>span{font-size:.66rem;padding:.02rem .3rem}

/* 29/10/2026 : boutons et icônes lisibles (icônes SVG de la couleur du texte ; « Supprimer » en contour rouge) */
.btn .ico,.ibtn .ico,a.rdel .ico{width:1.05em;height:1.05em;vertical-align:-.17em;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn .ico{margin-right:.3em}.btn.ico-only .ico,.ibtn .ico{margin-right:0}
.btn.danger,.btn.danger:visited{color:#fff}
.btn.ghost.danger,.btn.danger.ghost,a.rdel{background:#fff;color:#b42318;border:2px solid #b42318}
.btn.ghost.danger:hover,.btn.danger.ghost:hover,a.rdel:hover{background:#b42318;color:#fff}
.btn.ico-only{padding-left:.5rem;padding-right:.5rem}
.btn.act{padding:.3rem .55rem;font-size:12px;line-height:1.2;white-space:nowrap}
