/* ---------- Application : enveloppe, pages, administration ---------- */
:root { --brand: var(--accent); --on-brand: var(--on-accent); }
.boot { position: fixed; inset: 0; display: grid; place-items: center; color: var(--muted); background: var(--bg); }
a { color: inherit; }
.top { background: var(--brand); color: var(--on-brand); }
.top .brand { text-decoration: none; color: inherit; display: flex; align-items: center; gap: 10px; }
.top .brand img { max-height: 30px; max-width: 150px; object-fit: contain; background: #fff; border-radius: 4px; padding: 2px 6px; }
.nav { display: flex; gap: 2px; flex-wrap: wrap; flex: 1 1 auto; }
.nav a { text-decoration: none; padding: 6px 12px; border-radius: 999px; font-size: 13.5px; opacity: .8; }
.nav a:hover { opacity: 1; background: color-mix(in srgb, var(--on-brand) 12%, transparent); }
.nav a.on { opacity: 1; background: var(--on-brand); color: var(--brand); }
.tbtn { border-color: color-mix(in srgb, var(--on-brand) 35%, transparent); }
.supportbar { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding: 8px 16px; background: var(--warn-bg); color: var(--warn); border-bottom: 2px solid var(--warn); font-size: 13px; position: sticky; top: 0; z-index: 31; }
.pill.sup { color: var(--warn); border-color: var(--warn); }

.page { padding: 18px 16px 50px; max-width: 1280px; margin: 0 auto; }
.pagehead { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; justify-content: space-between; margin: 4px 0 14px; }
.h1 { font-family: var(--f-display); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; font-size: 30px; margin: 2px 0 0; line-height: 1.05; text-wrap: balance; }
.h2 { font-family: var(--f-display); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; font-size: 22px; margin: 2px 0 8px; text-wrap: balance; }
.pad { padding: 14px 16px; }
.panel.pad > .h { margin-bottom: 8px; }
.kpirow { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 14px; }
.kpirow .kpi { padding: 12px 14px; }
.kpirow .kpi b { display: block; font-family: var(--f-display); font-size: 26px; font-weight: 600; font-variant-numeric: tabular-nums; }
.kpirow .kpi small { color: var(--muted); font-size: 11.5px; display: block; }
.toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 12px 14px; border-bottom: 1px solid var(--line); }
.toolbar .in { width: auto; }
.toolbar .search input { width: 100%; }
table.grid { width: 100%; border-collapse: collapse; font-size: 13px; }
.grid th { text-align: left; font-weight: 500; font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; padding: 8px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.grid td { padding: 9px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.grid tr:last-child td { border-bottom: 0; }
.grid .r { text-align: right; }
.grid tr.click { cursor: pointer; }
.grid tr.click:hover td { background: var(--sunk); }
.grid td.acts { white-space: nowrap; text-align: right; }
.st { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--sunk); color: var(--ink-2); white-space: nowrap; }
.st-envoye, .st-view { background: var(--info-bg); color: var(--info); }
.st-accepte { background: var(--ok-bg); color: var(--ok); }
.st-refuse { background: var(--err-bg); color: var(--err); }
.st-support { background: var(--warn-bg); color: var(--warn); }
.st-auth { background: var(--sunk); color: var(--muted); }
details { margin-top: 8px; font-size: 13px; }
summary { cursor: pointer; color: var(--ink-2); }
.drop { display: flex; flex-direction: column; gap: 4px; align-items: center; justify-content: center; text-align: center; padding: 22px 14px; margin: 12px 0 8px; border: 1.5px dashed var(--line-2); border-radius: var(--r); cursor: pointer; background: var(--bg); }
.drop:hover, .drop.over { border-color: var(--ink); background: var(--sunk); }
.secret { font-size: 17px; padding: 12px 14px; background: var(--sunk); border-radius: 6px; white-space: pre-wrap; word-break: break-all; user-select: all; }
.chk { display: flex; gap: 8px; align-items: center; font-size: 13px; }
.filters2 .in { flex: 1 1 150px; }
.admgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 14px; }
@media (max-width: 420px) { .admgrid { grid-template-columns: minmax(0, 1fr); } }
pre.out { background: var(--sunk); padding: 12px; border-radius: 6px; font: 12px/1.45 var(--f-mono); max-height: 420px; overflow: auto; white-space: pre-wrap; margin-top: 10px; }
.wide { width: 100%; justify-content: center; }
.brandrow { display: grid; grid-template-columns: 160px minmax(0, 1fr) 140px; gap: 14px; align-items: end; }
@media (max-width: 640px) { .brandrow { grid-template-columns: minmax(0, 1fr); } }
.logoprev { height: 72px; border: 1px solid var(--line); border-radius: 6px; display: grid; place-items: center; background: #fff; padding: 6px; }
.logoprev img { max-height: 60px; max-width: 100%; object-fit: contain; }

/* ---------- connexion ---------- */
.auth { min-height: 100%; display: grid; place-items: center; padding: 24px 16px; background: var(--bg); }
.auth-card { width: min(440px, 100%); background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 26px 24px; box-shadow: var(--shadow); }
.auth-brand { text-align: center; margin-bottom: 14px; }
.auth-brand img { max-height: 56px; max-width: 220px; margin-bottom: 8px; }
.auth-brand h1 { font-family: var(--f-display); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; font-size: 30px; margin: 0; }
.auth-brand p { color: var(--muted); margin: 4px 0 0; font-size: 13.5px; }
.auth-tabs { justify-content: center; margin-bottom: 14px; }
.auth-form { display: grid; gap: 12px; }
.auth-form small { font-size: 11.5px; }
.auth-err { color: var(--err); font-size: 13px; min-height: 1em; }

/* ---------- éditeur ---------- */
.edbar { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; padding: 10px 16px; background: var(--surface); border-bottom: 1px solid var(--line); position: sticky; top: env(safe-area-inset-top, 0px); z-index: 25; }
.edgrow { flex: 1; }
.edsave { font-size: 12px; }
.edsave.err { color: var(--err); }
.cat { top: calc(env(safe-area-inset-top, 0px) + 60px); }
.sum { top: calc(env(safe-area-inset-top, 0px) + 60px); }
.it-open, .prow { all: unset; box-sizing: border-box; cursor: pointer; display: flex; flex-direction: column; min-width: 0; }
.it-open:focus-visible, .prow:focus-visible, .ln-open:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.it-open:hover .it-n { text-decoration: underline; }
.it-n { display: block; }
.it-meta { display: flex; }
.ln-open { all: unset; cursor: pointer; font-size: 13px; line-height: 1.3; }
.ln-open:hover { text-decoration: underline; }
.prow { width: 100%; padding: 9px 14px; border-bottom: 1px solid var(--line); }
.prow:hover, .prow.on { background: var(--sunk); }
.prow.on { box-shadow: inset 3px 0 0 var(--ink); }
.prodlayout { display: grid; grid-template-columns: minmax(280px, 380px) minmax(0, 1fr); gap: 14px; align-items: start; }
@media (max-width: 820px) { .prodlayout { grid-template-columns: minmax(0, 1fr); } }
.pgrid { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 18px; }
@media (max-width: 720px) { .pgrid { grid-template-columns: minmax(0, 1fr); } }
.pdesc { font-size: 14px; line-height: 1.55; max-width: 68ch; }
.pdesc h4 { margin: 12px 0 4px; }
.pprice { border: 1px solid var(--line); border-radius: var(--r); align-self: start; }
.pprice .kpi b { font-size: 24px; }
.pprice .kpi small { display: block; }
.pprice .sbtn { margin: 0 14px 14px; width: calc(100% - 28px); padding: 8px; }
.doclist, .deplist { list-style: none; padding: 0; margin: 6px 0; display: grid; gap: 6px; font-size: 13.5px; }
.deplist .tag { margin-right: 4px; }
.editbox { margin-top: 18px; padding-top: 6px; border-top: 1px solid var(--line); }
.sugg { list-style: none; padding: 0; margin: 4px 0 0; border: 1px solid var(--line); border-radius: 4px; }
.sugg button { all: unset; display: block; width: 100%; box-sizing: border-box; padding: 8px 10px; cursor: pointer; font-size: 13.5px; }
.sugg li + li button { border-top: 1px solid var(--line); }
.sugg button:hover, .sugg button:focus-visible { background: var(--sunk); }
.doc .doclogo { max-height: 64px; max-width: 260px; object-fit: contain; }
.doc .dh { border-bottom-color: var(--doc-accent, #111); }
.doc th { border-bottom-color: var(--doc-accent, #111); }
.doc .dt h1 { color: var(--doc-accent, #111); }
@media print { .supportbar, .edbar, #edBuild, .top, .nav { display: none !important; } #edClient { display: block !important; } }

a.chip, a.sbtn { text-decoration: none; display: inline-flex; align-items: center; }
.pprice .kpi b small { display: inline; font-size: 13px; color: var(--muted); font-family: var(--f-body); }
.in:disabled { background: var(--sunk); color: var(--ink-2); }

/* ---------- éligibilité ---------- */
.eligstat { padding: 10px 12px; margin: 12px 0 4px; border-radius: 6px; background: var(--sunk); display: grid; gap: 2px; font-size: 13px; }
.eligstat.running b { color: var(--info); }
.eligstat.done b { color: var(--ok); }
.eligstat.error b { color: var(--err); }
.eligop { border: 1px solid var(--line); border-radius: 6px; margin: 6px 0; }
.eligop > summary { padding: 8px 12px; cursor: pointer; font-size: 13.5px; }
.eligrow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 340px); gap: 8px 14px; padding: 9px 12px; border-top: 1px solid var(--line); align-items: start; }
.eligrow.off { opacity: .6; }
.eligrow .t { font-weight: 600; font-size: 13px; }
.eligrow .w { font-size: 12px; color: var(--muted); margin-top: 1px; }
.eligrow .c { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.eligact { display: flex; gap: 6px; align-items: center; min-width: 0; }
.eligact select { flex: 1; min-width: 0; font-size: 12.5px; }
@media (max-width: 640px) { .eligrow { grid-template-columns: minmax(0, 1fr); } }
