/* Tikivio — feuille de style native (aucun framework). */
:root{--bg:#f6f7f9;--surface:#fff;--ink:#1c2430;--muted:#66717f;--line:#dde2e8;--brand:#1f6feb;--brand-ink:#fff;--link:#1a5dc8;--ok:#1a7f4b;--warn:#b7791f;--danger:#c0392b;--internal:#fff7e6;--internal-line:#f0c36d;--radius:10px;--shadow:0 1px 2px rgba(16,24,40,.06)}
@media (prefers-color-scheme:dark){:root{--bg:#0f1419;--surface:#171d25;--ink:#e6edf3;--muted:#8b98a8;--line:#2a3441;--link:#6ea8fe;--internal:#3a2f14;--internal-line:#8a6a1f;--shadow:none}}
*{box-sizing:border-box}html{font-size:16px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;line-height:1.5}
a{color:var(--link)}a:hover{text-decoration:underline}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--surface);padding:.5rem;z-index:10}
.topbar{background:var(--surface);border-bottom:1px solid var(--line)}
.topbar__inner{max-width:1180px;margin:0 auto;padding:.6rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.brand{font-weight:700;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:.5rem}
.brand__mark{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:8px;background:var(--brand);color:#fff;font-weight:800}
.nav{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.nav a{color:var(--ink);text-decoration:none}.nav a.is-active{color:var(--link);font-weight:600}
.orgbar{background:var(--bg);border-top:1px solid var(--line);font-size:.9rem;color:var(--muted)}.orgbar__name{font-weight:600;color:var(--ink)}
.inline{display:inline}button.link{background:none;border:0;color:var(--ink);cursor:pointer;font:inherit;padding:0}button.link:hover{text-decoration:underline}
.page{max-width:1180px;margin:0 auto;padding:1.25rem 1rem 3rem}
.page__head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.page__head h1{margin:.1rem 0}
h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.05rem;margin:1.25rem 0 .5rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.card--narrow{max-width:440px;margin:2rem auto}
.hero{max-width:720px;margin:3rem auto;text-align:center}.hero h1{font-size:2rem}.lead{font-size:1.1rem;color:var(--muted)}
.form{display:flex;flex-direction:column;gap:.9rem}.form--wide{max-width:900px}
label{display:flex;flex-direction:column;gap:.3rem;font-size:.95rem}label>span{font-weight:600}
input[type=text],input[type=email],input[type=password],input[type=search],select,textarea{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
textarea{resize:vertical;min-height:6rem}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.9rem}
.btn{display:inline-block;background:var(--brand);color:var(--brand-ink);border:1px solid var(--brand);padding:.55rem 1rem;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{filter:brightness(1.08);text-decoration:none}.btn--ghost{background:transparent;color:var(--link);border-color:var(--link)}.btn--small{padding:.35rem .7rem;font-size:.9rem}
.actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.5rem 0 0}
.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;border:1px solid}.flash--success{background:#e8f6ee;border-color:#9fd7b8;color:#155c36}.flash--error{background:#fdecea;border-color:#f1a9a2;color:#7d2a22}.flash ul{margin:0;padding-left:1.1rem}
@media (prefers-color-scheme:dark){.flash--success{background:#123524;color:#a9e6c3}.flash--error{background:#3d1a16;color:#f5b7b1}}
.notice{background:var(--internal);border:1px solid var(--internal-line);padding:.6rem .8rem;border-radius:8px;font-size:.95rem}.notice--inline{margin:.3rem 0 0;display:inline-block}
.filters{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1rem}.filters label{min-width:200px}
.table-wrap{position:relative;overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.amount{white-space:nowrap}
.table{width:100%;border-collapse:collapse;font-size:.95rem}.table th,.table td{padding:.6rem .8rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.table tbody tr:hover{background:var(--bg)}
.empty{padding:3rem 1rem;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius)}
.status,.prio,.tag{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap}
.status{background:#e7eefc;color:#1d4ed8}.status--new{background:#e7eefc;color:#1d4ed8}.status--open{background:#fff3d6;color:#8a5a00}.status--pending_requester{background:#efe9fb;color:#5b3fa8}.status--pending_internal{background:#fde8f1;color:#9d2c63}.status--resolved{background:#e3f7ea;color:#146c3b}.status--closed{background:#eceff3;color:#5b6573}
.prio{background:transparent;border:1px solid var(--line);color:var(--muted)}.prio--high{border-color:#e8a33d;color:#8a5a00}.prio--urgent{border-color:#d9534f;color:#a12b27}
.tag{background:var(--bg);border:1px solid var(--line);color:var(--muted)}.tag--internal{background:var(--internal);border-color:var(--internal-line);color:#7a5400}.tag--muted{font-weight:500}
@media (prefers-color-scheme:dark){.tag--internal{color:#f5d98a}}
.list{list-style:none;padding:0;margin:0}.list li{padding:.6rem 0;border-bottom:1px solid var(--line);display:flex;gap:.6rem;align-items:center}
.layout2{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1.25rem}.layout2>*{min-width:0}@media (max-width:860px){.layout2{grid-template-columns:minmax(0,1fr)}}
.conversation{display:flex;flex-direction:column;gap:.9rem}
.msg{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem}.msg--internal{background:var(--internal);border-color:var(--internal-line)}.msg--agent{border-left:4px solid var(--brand)}
.msg__head{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;margin-bottom:.4rem;font-size:.92rem}.msg__head time{margin-left:auto}.msg__body{white-space:normal;word-wrap:break-word}
.reply{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}.reply__kind{border:0;padding:0;margin:0 0 .5rem;display:flex;gap:1.2rem;flex-wrap:wrap}.reply__kind label{flex-direction:row;align-items:center;gap:.4rem}
.reply.is-internal{background:var(--internal);border-color:var(--internal-line)}
.sidebar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;align-self:start}
/* J7-63, D-102 : colonne des libellés bornée (fit-content(45%)) — un libellé long revient à la ligne au lieu d’écraser la colonne des valeurs */.props{display:grid;grid-template-columns:fit-content(45%) minmax(0,1fr);gap:.35rem .8rem;margin:0}.props dt{color:var(--muted);font-size:.85rem}.props dd{margin:0;min-width:0;overflow-wrap:anywhere}
.timeline{list-style:none;padding:0;margin:0;font-size:.9rem}.timeline li{padding:.4rem 0;border-left:2px solid var(--line);padding-left:.8rem}.timeline time{display:block;font-size:.8rem}
.cards{list-style:none;padding:0;margin:0;display:grid;gap:.8rem}.cards__item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;display:flex;flex-direction:column;gap:.3rem}
.meta{display:flex;gap:.5rem;align-items:center}
.footer{text-align:center;color:var(--muted);font-size:.85rem;padding:1rem}
.debug{white-space:pre-wrap;background:var(--bg);padding:.7rem;border-radius:8px;font-size:.85rem}
/* J2-01 — cycle de vie, affectation, paramétrage (ajouts en fin de fichier uniquement) */
input[type=number]{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
.flash--info{background:#e7eefc;border-color:#9fb8f0;color:#1d3f8a}
@media (prefers-color-scheme:dark){.flash--info{background:#15243d;color:#b8ccf5}}
.panel{border-top:1px solid var(--line);margin-top:1rem;padding-top:.4rem}fieldset.panel{border:0;border-top:1px solid var(--line);margin:1rem 0 0;padding:.4rem 0 0;min-width:0}fieldset.panel>legend{padding:0;margin:.4rem 0 .3rem;font-weight:600}.panel h3{font-size:.9rem;margin:.6rem 0 .2rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.form--compact{gap:.45rem;margin:.5rem 0 .9rem}.form--compact label{font-size:.9rem}.form--compact input,.form--compact select{padding:.4rem .55rem}
.quick{display:flex;gap:.4rem;flex-wrap:wrap;margin:.3rem 0 .6rem}
.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}
.cards--grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.cards__item p{margin:.2rem 0 0}
.matrix td,.matrix th{text-align:center}.matrix th[scope=row]{text-align:left;font-size:.9rem;text-transform:none;letter-spacing:0;color:var(--ink)}.matrix input[type=checkbox]{width:1.1rem;height:1.1rem}
.check{flex-direction:row;align-items:center;gap:.4rem;font-weight:400}.check input{width:1rem;height:1rem}
.list li{justify-content:space-between;flex-wrap:wrap}.list li form{margin-left:auto}
.form--inline{flex-direction:row;align-items:flex-end;flex-wrap:wrap;gap:.6rem}.form--inline select{width:auto;min-width:220px}
.linked{margin-bottom:1rem}.linked .notice{margin:0 0 .4rem}
label small.muted{font-weight:400}
.reply .notice{margin:0}
/* J2-03 — pièces jointes (ajouts en fin de fichier uniquement) */
.attachments{list-style:none;padding:0;margin:.6rem 0 0;display:flex;flex-direction:column;gap:.3rem;font-size:.92rem}
.attachment{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.35rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.attachment__icon{flex:0 0 auto}.attachment__name{font-weight:600;word-break:break-all;min-width:0}
.attachment__meta{white-space:nowrap;font-size:.85rem}.attachment__dl{font-size:.85rem}
.attachment__delete{margin-left:auto}.attachment__delete button.link{color:var(--danger);font-size:.85rem}
.attachment--quarantined{border-style:dashed}
.tag--quarantine{background:#fdecea;border-color:#f1a9a2;color:#7d2a22;cursor:help}
@media (prefers-color-scheme:dark){.tag--quarantine{background:#3d1a16;color:#f5b7b1}}
input[type=file]{font:inherit;padding:.45rem .55rem;border:1px dashed var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
input[type=file]:invalid{border-color:var(--danger)}
.attach{margin-top:.2rem}.attach-hint{font-weight:400;font-size:.85rem}.attach-error{font-weight:600;font-size:.9rem;color:var(--danger)}
.reply .attach{margin:.6rem 0 0}
/* J2-04 — collaboration : badge de notifications, bandeaux, mentions, brouillons, réponses prédéfinies, participants (ajouts en fin de fichier uniquement) */
.badge{display:inline-block;min-width:1.5em;padding:0 .45em;border-radius:999px;background:var(--brand);color:#fff;font-size:.72rem;font-weight:700;text-align:center;line-height:1.6em;vertical-align:middle}
.banner{padding:.7rem 1rem;border-radius:8px;border:1px solid;margin:0 0 1rem}.banner--warning{background:#fff7e6;border-color:#f0c36d;color:#7a5400}.banner a{color:inherit;font-weight:600}
@media (prefers-color-scheme:dark){.banner--warning{background:#3a2f14;border-color:#8a6a1f;color:#f5d98a}}
.banner .check{display:inline-flex;margin:.3rem 0 0 .6rem;font-weight:600}
.collab{margin:.5rem 0 0;display:flex;flex-direction:column;gap:.5rem}.collab .banner{margin:0}.collab__hint{margin:0;font-size:.85rem}.draft-status{margin-left:.4rem;font-style:italic}
.draft-restored{margin:0}.draft-restored button.link{margin-left:.5rem;color:var(--link)}
.canned label{gap:.25rem}.canned__row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.canned__row select{width:auto;min-width:220px;flex:1}
.mention-list{list-style:none;margin:.2rem 0 0;padding:.25rem 0;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);max-height:12rem;overflow:auto;position:relative;z-index:2}
.mention-list li{padding:.35rem .7rem;cursor:pointer}.mention-list li.is-active,.mention-list li:hover{background:var(--brand);color:#fff}
.mention{margin:.5rem 0 0;font-size:.85rem}.mention .tag{margin-right:.2rem}
.participants .list li{padding:.4rem 0;font-size:.9rem;align-items:flex-start}.participants .form--compact p{margin:.2rem 0 0;font-size:.85rem}
.notifications{list-style:none;padding:0;margin:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.notifications li{display:flex;gap:.8rem;align-items:baseline;flex-wrap:wrap;padding:.6rem .8rem;border-bottom:1px solid var(--line);border-left:4px solid transparent}.notifications li:last-child{border-bottom:0}
.notifications li.is-unread{font-weight:600;border-left-color:var(--brand)}.notifications time{margin-left:auto;font-size:.85rem;white-space:nowrap}
.requesters h2{margin-top:1.5rem}.requesters .form--inline{align-items:center;margin:0}
.canned-body{white-space:pre-wrap;font-size:.9rem;max-width:36rem}
.tag--ok{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}
input[type=url]{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
@media (prefers-color-scheme:dark){.tag--ok{background:#123524;color:#a9e6c3}}
/* J2-05 — recherche, filtres, vues enregistrées, extraits, pagination (ajouts en fin de fichier uniquement) */
mark{background:#fff1a8;color:inherit;padding:0 .12em;border-radius:3px}
@media (prefers-color-scheme:dark){mark{background:#7a6510;color:#fff}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.filters--search{flex-direction:column;align-items:stretch;gap:.6rem}
.filters__row{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap}.filters__row label{min-width:180px}.filters__q{flex:1 1 280px}
.chips{border:0;padding:0;margin:0;display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;min-width:0}.chips legend{float:left;font-weight:600;font-size:.9rem;padding:0;margin-right:.4rem}
.chip{flex-direction:row;align-items:center;gap:.3rem;border:1px solid var(--line);border-radius:999px;padding:.2rem .65rem;background:var(--surface);font-size:.88rem;cursor:pointer;white-space:nowrap}
.chip input{width:.9rem;height:.9rem;margin:0}.chip:has(input:checked){border-color:var(--brand);color:var(--link);font-weight:600}.chip:has(input:focus-visible){outline:2px solid var(--brand);outline-offset:1px}.chip .count{color:var(--muted);font-weight:400}
.filters__more{margin:0 0 .4rem}.filters__more summary{cursor:pointer;color:var(--link);font-size:.92rem;width:max-content}.filters__more .grid2{margin-top:.6rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.field{display:flex;flex-direction:column;gap:.3rem;font-size:.95rem}.field>span{font-weight:600}
.filters__range{display:flex;gap:.4rem;align-items:center}.filters__range input,.filters__range select{min-width:0;flex:1}
input[type=date]{font:inherit;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
.summary{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:0 0 .6rem;color:var(--muted);font-size:.92rem}.summary .tag{cursor:help}
.excerpt{display:block;margin:.15rem 0 0;font-size:.85rem;color:var(--muted);max-width:52rem;font-weight:400}.excerpt .tag{margin-right:.3rem}
.pager{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin:1rem 0 0;font-size:.92rem}
.pager a,.pager__current,.pager__disabled{padding:.3rem .65rem;border:1px solid var(--line);border-radius:8px;text-decoration:none;background:var(--surface)}
.pager a:hover{border-color:var(--brand)}.pager__current{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}.pager__disabled{color:var(--muted)}.pager .muted{margin-right:.4rem}
.views{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:0 0 .8rem;font-size:.9rem}.views__label{color:var(--muted)}
.views__chip{display:inline-flex;align-items:center;gap:.1rem;border:1px solid var(--line);border-radius:999px;padding:.15rem .25rem .15rem .7rem;background:var(--surface)}
.views__chip a{text-decoration:none;color:var(--ink)}.views__chip.is-active{border-color:var(--brand);background:#e7eefc}.views__chip.is-active a{color:var(--link);font-weight:600}
.views__chip button.link{color:var(--muted);padding:0 .35rem;font-size:1rem;line-height:1}.views__chip button.link:hover{color:var(--danger);text-decoration:none}
.views__save{display:inline-flex;gap:.4rem;align-items:center;margin-left:auto;flex-wrap:wrap}.views__save input{width:auto;min-width:170px;padding:.3rem .5rem}.views__name{gap:0}
@media (prefers-color-scheme:dark){.views__chip.is-active{background:#15243d}}
.back{margin:0 0 .6rem;font-size:.92rem}
.cards__item .excerpt{margin:0}
@media (max-width:600px){.views__save{margin-left:0;width:100%}.views__save input{flex:1}}
/* J2-06 — tâches planifiées : panneau, liste, calendrier, chips, statuts, paramètres (ajouts en fin de fichier uniquement) */
.flash--warning{background:#fff7e6;border-color:#f0c36d;color:#7a5400}
@media (prefers-color-scheme:dark){.flash--warning{background:#3a2f14;color:#f5d98a}}
input[type=datetime-local]{font:inherit;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
.tstatus{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap;background:#eceff3;color:#5b6573}
.tstatus--planned{background:#e7eefc;color:#1d4ed8}.tstatus--in_progress{background:#fff3d6;color:#8a5a00}.tstatus--done{background:#e3f7ea;color:#146c3b}.tstatus--cancelled{background:#f3f4f6;color:#5b6573;text-decoration:line-through}
.tag--overdue{background:#fdecea;border-color:#f1a9a2;color:#7d2a22}.tag--overlap{background:#fff7e6;border-color:#f0c36d;color:#7a5400;cursor:help}.tag--visible{background:#e7eefc;border-color:#9fb8f0;color:#1d3f8a}
@media (prefers-color-scheme:dark){.tag--overdue{background:#3d1a16;color:#f5b7b1}.tag--overlap{background:#3a2f14;color:#f5d98a}.tag--visible{background:#15243d;color:#b8ccf5}.tstatus--planned{background:#15243d;color:#b8ccf5}.tstatus--done{background:#123524;color:#a9e6c3}}
.tasks{margin-top:1.25rem}.tasks__head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.tasks__head h2,.tasks__head p{margin:0}
.tasks__table td{vertical-align:middle}.task-row.is-done td{opacity:.7}.task-row.is-overdue td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.task-row.is-overlap td:first-child{box-shadow:inset 3px 0 0 var(--warn)}
.task-window{white-space:nowrap;font-size:.9rem}.tasks__actions{white-space:nowrap}
.tasks__quick{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}.tasks__quick form{margin:0}
.tasks__new{margin-top:1rem}.tasks__new summary{cursor:pointer;color:var(--link);font-weight:600;width:max-content}.tasks__new .task-form{margin-top:.8rem}
.task-form__visibility label{flex-direction:row;align-items:center;gap:.4rem}.task-form__help{margin:0;font-size:.85rem}
.tasks-banner{margin-bottom:1rem}
.overlaps{margin-top:1.25rem}.overlaps h2{margin-top:0}.overlaps ul{margin:.3rem 0 0;padding-left:1.1rem}.overlaps li{margin:.25rem 0}
.calendar{margin-top:.5rem}
.calendar__nav{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:0 0 .8rem}.calendar__nav h2{margin:0 0 0 .5rem;text-transform:none;letter-spacing:0;color:var(--ink);font-size:1.1rem}
.calendar__filters{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:.8rem}.calendar__filters label{min-width:180px}
.calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:4px}
.calendar__dayname{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:.2rem .4rem}
.calendar__day{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.35rem;min-height:6.5rem;display:flex;flex-direction:column;gap:.3rem;min-width:0}
.calendar--week .calendar__day{min-height:14rem}
.calendar__day.is-today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.calendar__day.is-outside{opacity:.55}.calendar__day.is-over{background:#e7eefc;border-style:dashed;border-color:var(--brand)}
@media (prefers-color-scheme:dark){.calendar__day.is-over{background:#15243d}}
.calendar__date{font-size:.82rem;font-weight:600;color:var(--muted);margin:0;text-transform:none;letter-spacing:0}.calendar__day.is-today .calendar__date{color:var(--link)}
.task-chip{display:block;border-left:4px solid var(--brand);background:var(--bg);border-radius:6px;padding:.25rem .4rem;font-size:.8rem;line-height:1.3;min-width:0;overflow:hidden}
.task-chip[draggable=true]{cursor:grab}.task-chip.is-dragging{opacity:.5}
.task-chip a{color:var(--ink);text-decoration:none;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-chip a:hover{text-decoration:underline}
.task-chip__time{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;color:var(--muted)}
.task-chip__meta{display:block;font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-chip.is-overlap{outline:1px dashed var(--warn);outline-offset:-1px}.task-chip.is-overdue{background:#fdecea}.task-chip.is-due-only{border-left-style:dotted}.task-chip.is-continued{border-top-left-radius:0;border-bottom-left-radius:0}.task-chip.is-done{opacity:.6}
.task-chip.prio--urgent .task-chip__time::before{content:"‼ ";color:var(--danger)}.task-chip.prio--high .task-chip__time::before{content:"! ";color:var(--warn)}
@media (prefers-color-scheme:dark){.task-chip.is-overdue{background:#3d1a16}}
.agent-c0{border-left-color:#1f6feb}.agent-c1{border-left-color:#1a7f4b}.agent-c2{border-left-color:#b7791f}.agent-c3{border-left-color:#8e44ad}.agent-c4{border-left-color:#c0392b}.agent-c5{border-left-color:#16a085}.agent-c6{border-left-color:#d35400}.agent-c7{border-left-color:#5b6573}
.calendar__legend,.calendar__empty{font-size:.85rem;color:var(--muted);margin:.6rem 0 0}
#calendar-msg:empty{display:none}
@media (max-width:860px){.calendar__grid{grid-template-columns:1fr}.calendar__header{display:none}.calendar__day,.calendar--week .calendar__day{min-height:auto}.calendar__day.is-outside{display:none}}
.effects label{flex-direction:row;gap:.6rem;align-items:flex-start;padding:.5rem 0;border-bottom:1px solid var(--line)}.effects label:last-of-type{border-bottom:0}.effects input{margin-top:.3rem}
.portal-tasks{margin-bottom:1rem}.portal-tasks h2{margin-top:0}.portal-tasks .list li{gap:.6rem;flex-wrap:wrap}
/* J2-07 — escalades et délais : pastilles d'état de délai, étiquette de niveau, encarts de la fiche, page de paramétrage */
.sla{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap;background:#eceff3;color:#5b6573}
.sla--on_time{background:#e3f7ea;color:#146c3b}.sla--due_soon{background:#fff3d6;color:#8a5a00}.sla--breached{background:#fdecea;color:#a12b27}.sla--paused{background:#eceff3;color:#5b6573}.sla--met{background:#e7eefc;color:#1d4ed8}.sla--none{background:transparent;border:1px dashed var(--line);color:var(--muted);font-weight:500}
@media (prefers-color-scheme:dark){.sla--on_time{background:#123524;color:#a9e6c3}.sla--due_soon{background:#3a2f14;color:#f5d98a}.sla--breached{background:#3d1a16;color:#f5b7b1}.sla--met{background:#15243d;color:#b8ccf5}}
.level{display:inline-block;padding:.05rem .45rem;border-radius:6px;font-size:.78rem;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.level--2{border-color:#e8a33d;color:#8a5a00}.level--3,.level--4,.level--5,.level--6,.level--7,.level--8,.level--9{border-color:#d9534f;color:#a12b27}
.sla-panel h2 .sla,.sla-panel h2 .level{vertical-align:middle;margin-left:.3rem}.sla-objectives dd{margin-bottom:.35rem}.sla-overdue{color:#a12b27;font-weight:600}.sla-hits{list-style:none;padding:0;margin:0;font-size:.9rem}.sla-hits li{padding:.2rem 0;border-bottom:1px dashed var(--line)}
.escalation-current{display:flex;align-items:center;gap:.5rem;margin:.3rem 0 .5rem}.escalation-form summary{list-style:none;cursor:pointer}.escalation-form summary::-webkit-details-marker{display:none}.escalation-form[open] summary{margin-bottom:.4rem}
.settings-grid{display:grid;gap:1.2rem;max-width:1100px}.settings-grid .card h2{margin-top:0}
.hours-table input[type="time"]{width:auto;padding:.3rem .4rem}.hours-range{display:inline-flex;align-items:center;gap:.3rem;flex-wrap:wrap}.levels-table input[type="text"]{min-width:10rem}.levels-table__new td{background:var(--bg)}
.check{flex-direction:row;align-items:center;gap:.5rem}.check input{width:auto;margin:0}.pause-statuses{border:0;padding:0;margin:.4rem 0;display:flex;flex-direction:column;gap:.35rem}.pause-statuses legend{font-weight:600;margin-bottom:.3rem}
.rules-table .is-inactive td{opacity:.6}.rules-table__actions{white-space:nowrap}.rules-table__actions form{display:inline}.tag--escalate{background:#fff3d6;border-color:#f0c36d;color:#7a5400}.rule-form{border-top:1px solid var(--line);margin-top:1rem;padding-top:.8rem}.rule-escalate-fields.is-hidden{display:none}
@media (max-width:700px){.hours-range{flex-direction:column;align-items:flex-start}}
/* Relecture J2 (16/09/2026) — contrastes AA (4,5:1) en mode sombre pour les étiquettes de niveau, les priorités et le dépassement ; statut annulé en clair */
@media (prefers-color-scheme:dark){.level--2,.prio--high{color:#f0b95a}.level--3,.level--4,.level--5,.level--6,.level--7,.level--8,.level--9,.prio--urgent,.sla-overdue{color:#f5a09a}.tstatus--cancelled{background:#2a3441;color:#b5c0cc}}
/* --- J3-01 boîtes de messagerie et file d'envoi : états d'envoi, diagnostic de connexion, formulaire des boîtes --- */
.mailstate{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.85rem;background:#e5e9ef;color:#1f2933}
.mailstate--queued,.mailstate--sending{background:#e0ecff;color:#1e3a8a}.mailstate--sent{background:#dcf5e6;color:#14532d}.mailstate--failed{background:#fde2e2;color:#7f1d1d}.mailstate--uncertain{background:#fef3c7;color:#78350f}.mailstate--blocked{background:#ede9fe;color:#4c1d95}
.chip.mailstate.is-active{outline:2px solid currentColor}
.mailstatus{list-style:none;margin:.5rem 0 0;padding:0;font-size:.9rem}.mailstatus li{display:block;border-radius:6px;margin:.2rem 0;padding:.2rem .6rem}
.mailtest--ok{color:#14532d;font-weight:600}.mailtest--ko{color:#7f1d1d;font-weight:600}
.diagnostic{margin:0 0 1rem;border-left:4px solid #94a3b8}.diagnostic--ok{border-left-color:#16a34a}.diagnostic--ko{border-left-color:#dc2626}
.diagnostic__steps{list-style:none;margin:.5rem 0;padding:0}.diagnostic__step{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;padding:.25rem 0;border-bottom:1px solid #e5e9ef}
.diagnostic__step--ok .diagnostic__mark{color:#16a34a}.diagnostic__step--ko .diagnostic__mark{color:#dc2626}.diagnostic__warnings{list-style:none;padding:0;margin:.5rem 0}.diagnostic__error{font-weight:600;color:#7f1d1d}
/* J7-97 (D-142) : assistant des boîtes */.mail-detect,.mail-assistant{margin:0 0 1rem;max-width:900px}.mail-detect h2,.mail-assistant h2{margin-bottom:.5rem}.mail-detect__row{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:flex-end}.mail-detect__row label{flex:1 1 16rem;margin:0}.mail-detect__row .actions{margin:0}.mail-detected{display:block;margin:.6rem 0 0}.mail-assistant__steps{margin:.4rem 0 .6rem;padding-left:1.3rem}.mail-assistant__steps li{margin:.25rem 0}.mail-oauth label{display:block;max-width:24rem;margin:.4rem 0}.mail-hint{display:block;margin:.4rem 0 1rem}
/* J7-101 (D-147) : assistant pas à pas des boîtes */.wizard-steps{display:flex;flex-wrap:wrap;gap:.3rem .8rem;list-style:none;margin:0 0 1rem;padding:0;max-width:900px}.wizard-steps__item{color:#64748b}.wizard-steps__item--done{color:#14532d}.wizard-steps__item--current{font-weight:700;color:inherit}.wizard-steps__n{display:inline-block;min-width:1.5em;text-align:center;border-radius:999px;border:1px solid currentColor;margin-right:.2rem}.mail-wizard,.mail-wizard__help{max-width:900px;margin:0 0 1rem}.wizard-check__list{list-style:none;margin:.3rem 0;padding:0}.wizard-check__item{padding:.15rem 0}.wizard-check__item--ok .wizard-check__mark{color:#16a34a}.wizard-check__item--ko .wizard-check__mark{color:#dc2626}.wizard-check__advice{font-weight:600}.wizard-result--ko{border-left:4px solid #dc2626;padding:.2rem .8rem;margin:.6rem 0}.wizard-result--ok{color:#14532d;font-weight:600}.wizard-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.6rem 0}.wizard-manual{margin:1rem 0}.wizard-summary{display:grid;grid-template-columns:minmax(8rem,max-content) 1fr;gap:.3rem 1rem}.wizard-summary dd{margin:0;overflow-wrap:anywhere}.wizard-help__context{white-space:pre-wrap;overflow-wrap:anywhere;max-height:24rem;overflow:auto}.mail-wizard__links{padding-left:1.2rem}@media (max-width:600px){.wizard-summary{grid-template-columns:1fr}}@media (prefers-color-scheme:dark){.wizard-steps__item{color:#94a3b8}.wizard-steps__item--done,.wizard-result--ok{color:#86efac}}
.mail-form__panel{border:1px solid #d9dee5;border-radius:8px;padding:1rem;margin:0 0 1rem}.mail-form__panel legend{font-weight:600;padding:0 .4rem}.mail-form .grid2 label small{display:block}
.mailboxes__actions form{margin:.2rem 0}.outbound__detail{max-width:28rem;word-break:break-word}.notif-pref{margin:0 0 1rem;align-items:center;gap:.6rem;flex-wrap:wrap}
@media (prefers-color-scheme:dark){.mailstate{background:#334155;color:#e2e8f0}.mailstate--queued,.mailstate--sending{background:#1e3a8a;color:#dbeafe}.mailstate--sent{background:#14532d;color:#dcfce7}.mailstate--failed{background:#7f1d1d;color:#fee2e2}.mailstate--uncertain{background:#78350f;color:#fef3c7}.mailstate--blocked{background:#4c1d95;color:#ede9fe}.mailtest--ok{color:#86efac}.mailtest--ko{color:#fca5a5}.diagnostic__error{color:#fca5a5}.mail-form__panel{border-color:#334155}.diagnostic__step{border-bottom-color:#334155}}
/* --- J3-02 collecteur IMAP : partie citée repliée dans les messages, étiquettes d'état du courrier entrant, page du journal --- */
.msg__quoted{margin:.6rem 0 0;border-left:3px solid var(--line);padding-left:.7rem;color:var(--muted)}
.msg__quoted summary{cursor:pointer;color:var(--link);font-size:.9rem;font-weight:600;list-style:revert;margin-left:-.7rem;padding-left:.7rem}
.msg__quoted[open] summary{margin-bottom:.4rem}.msg__quoted-body{white-space:normal}
.tag--received{background:#e0ecff;border-color:#9fb8f0;color:#1e3a8a}.tag--processed{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}.tag--held{background:#fff3d6;border-color:#f0c36d;color:#7a5400}
.tag--ambiguous{background:#e7eefc;border-color:#9fb8f0;color:#1d3f8a}.tag--ignored{background:var(--bg);border-color:var(--line);color:var(--muted);font-weight:500}.tag--failed{background:#fdecea;border-color:#f1a9a2;color:#7d2a22}
.chip.tag--received,.chip.tag--processed,.chip.tag--held,.chip.tag--ambiguous,.chip.tag--ignored,.chip.tag--failed{font-size:.88rem;font-weight:500}.chip.is-active{outline:2px solid currentColor}
.inbound-mailboxes{margin:0 0 1.5rem}.inbound-mailboxes h2{margin-top:0}.inbound__error{max-width:22rem;word-break:break-word}.inbound__error-text{color:#7d2a22;font-weight:600}
.inbound__actions{white-space:nowrap}.inbound__actions form{display:inline;margin:0 0 0 .2rem}.inbound__refs{word-break:break-all;font-size:.85rem}.inbound__detail li{margin:.25rem 0}.inbound__detail ul{margin:.2rem 0 0 1rem}
.inbound-show .props dd{word-break:break-word}.filters.form--inline{margin:.6rem 0 1rem;align-items:flex-end;gap:.6rem}.filters.form--inline label{min-width:220px}
@media (prefers-color-scheme:dark){.tag--received{background:#1e3a8a;color:#dbeafe}.tag--processed{background:#123524;color:#a9e6c3}.tag--held{background:#3a2f14;color:#f5d98a}.tag--ambiguous{background:#15243d;color:#b8ccf5}.tag--failed{background:#3d1a16;color:#f5b7b1}.inbound__error-text{color:#f5a09a}}
/* --- J3-03 rattachement des réponses et file de contrôle : liste des entrées, indices, candidats, étiquette « reçu par e-mail », bandeau --- */
.review-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}.review .tag{white-space:normal}.review.card{margin:0}.review.is-refused{outline:2px solid var(--danger,#c0392b)}
.review__head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-start;margin-bottom:.5rem}.review__meta{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.review__reason{margin:.3rem 0}.review__hints{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin:.4rem 0;font-size:.85rem}.review__hints div{display:flex;gap:.3rem}.review__hints dt{color:var(--muted);margin:0}.review__hints dt::after{content:" :"}html[lang=en] .review__hints dt::after{content:":"}.review__hints dd{margin:0}
.review__created{margin:.4rem 0}.review__candidates{border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;margin:.5rem 0}.review__candidates legend{font-weight:600;padding:0 .3rem}
.review__candidate{display:flex;gap:.5rem;align-items:flex-start;padding:.25rem 0;flex-direction:row}.review__candidate input{margin-top:.25rem;width:auto}
.review__attach .check{margin:.4rem 0}.review__attach .actions{margin:.4rem 0 0}.review__actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.review__decision{margin:.4rem 0 0}
.review__help{margin:0 0 1rem}.tag--review-pending{background:#fff3d6;border-color:#f0c36d;color:#7a5400}.tag--review-attached{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}.tag--review-kept{background:#e7eefc;border-color:#9fb8f0;color:#1d3f8a}.tag--review-ignored{background:var(--bg);border-color:var(--line);color:var(--muted)}
.inbound-label{margin:.4rem 0 0;font-size:.85rem}.inbound-review-banner a{font-weight:600}.badge--review{background:#b7791f}
@media (prefers-color-scheme:dark){.tag--review-pending{background:#3a2f14;color:#f5d98a}.tag--review-attached{background:#123524;color:#a9e6c3}.tag--review-kept{background:#15243d;color:#b8ccf5}}
@media (max-width:700px){.review__head{flex-direction:column}}
/* --- J3-04 widget intégrable : page de paramétrage --- */
.widget-snippet{white-space:pre-wrap;word-break:break-all;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.7rem;font-size:.85rem;margin:.4rem 0 .8rem}
.widget-secret{border-color:var(--internal-line);background:var(--internal)}.widget-secret__value{display:inline-block;word-break:break-all;background:var(--surface);padding:.5rem .7rem;border-radius:8px;border:1px solid var(--line);user-select:all}
.color-field{display:flex;gap:.5rem;align-items:center}.color-field input[type=color]{width:3rem;height:2.4rem;padding:.15rem;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.widget-logo{display:flex;gap:.8rem;align-items:center}.widget-logo__img{max-height:48px;max-width:160px;border:1px solid var(--line);border-radius:8px;padding:.2rem;background:var(--surface)}
.tag--ok{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}
input[type=url]{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);width:100%}
/* --- J3-05 catalogues et traduction des échanges : mention de traduction, dépliant de l'original, aperçu de composition, barre de quota, profil, liens de langue --- */
.translation__note{margin:.5rem 0 0;font-size:.85rem}.translation__status{font-style:italic}
details.translation__original{margin:.3rem 0 0;font-size:.92rem}.translation__original summary{cursor:pointer;color:var(--link);font-size:.88rem;font-weight:600;list-style:revert}.translation__original[open] summary{margin-bottom:.4rem}
.translation__original-body{border-left:3px solid var(--line);padding-left:.7rem;color:var(--muted)}
.translation__preview{margin:.4rem 0 .6rem}.translation__preview .banner{margin:0 0 .5rem}.translation__preview .actions{margin:.4rem 0 0}
.translation__original-text{white-space:pre-wrap;word-break:break-word;font:inherit;margin:0;background:var(--bg);padding:.5rem .7rem;border-radius:8px;border:1px solid var(--line)}
.translate__actions{margin:.4rem 0 0;align-items:center}.translate__status{font-size:.85rem}.translate__status.is-error{color:var(--danger);font-weight:600}.translate__notice{margin:.4rem 0}
.usage-bar{height:.6rem;background:var(--bg);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin:.4rem 0}.usage-bar__fill{height:100%;background:var(--ok)}.usage-bar--warn .usage-bar__fill{background:var(--warn)}.usage-bar--full .usage-bar__fill{background:var(--danger)}
.consent{border:1px solid var(--line);border-radius:8px;padding:.8rem 1rem;background:var(--bg);font-size:.95rem}.consent p{margin:0 0 .5rem}.consent p:last-child{margin:0}
.translation-form h2,.settings-grid .card h3{margin-top:0}.settings-grid .card h3{font-size:.9rem;text-transform:uppercase;letter-spacing:.03em}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.6rem;margin:.5rem 0}.stat{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;text-align:center}.stat strong{display:block;font-size:1.3rem}.stat span{font-size:.85rem}
.translation-errors li{font-size:.9rem;gap:.5rem}.translation-errors time{margin-left:auto}
.profile-form{max-width:560px;margin:0 auto}.profile-form select{width:100%}
.lang-links{display:inline-flex;gap:.4rem;margin-left:.4rem}.lang-links a{color:var(--muted);text-decoration:none}.lang-links a[aria-current]{color:var(--link);font-weight:700}.lang-links a:hover{text-decoration:underline}
/* --- J4-01 catalogue de forfaits et quotas : espace exploitant, barres de consommation, cartes par unité, statuts de version, bandeaux lecture seule / file de contrôle --- */
.orgbar--platform{background:var(--platform-bar-bg);color:var(--platform-bar-ink)}.orgbar--platform .orgbar__name{color:var(--platform-bar-ink)}.orgbar--platform .muted{color:var(--platform-bar-muted)}
.quota-cards .cards__item strong{display:block;margin-bottom:.2rem}.quota-bar__text{margin:.2rem 0 0;font-size:.95rem}.quota-card__reset{font-size:.85rem;margin:.3rem 0 0}.quota-card .flash{margin:.4rem 0 0;padding:.4rem .6rem;font-size:.9rem}.quota-card .notice{margin-top:.4rem}
.plan-card h2{margin-top:0}.plan-card p{margin:.2rem 0}
.tag--version-draft{background:var(--bg);border-color:var(--line);color:var(--muted)}.tag--version-active{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}.tag--version-retired{background:#fdecea;border-color:#f1a9a2;color:#7d2a22}
@media (prefers-color-scheme:dark){.tag--version-active{background:#123524;color:#a9e6c3}.tag--version-retired{background:#3d1a16;color:#f5b7b1}}
.catalogue-versions td{vertical-align:middle}.catalogue-diff li{display:block}.plan-block{margin-bottom:1rem}.plan-block h2{margin:0 0 .3rem}
.quota-agents td form{margin:0}.quota-features li{justify-content:space-between}.mail-quota{margin:.2rem 0 .8rem}
.read-only-banner,.quota-hold-banner,.quota-refused{margin-bottom:1rem}

/* J4-03 : tarifs, abonnement, démarrage, utilisateurs */
.pricing__price{font-size:1.4rem;margin:.3rem 0}.pricing__limits li{display:block;padding:.15rem 0}
.subscription-banner{margin-bottom:1rem}.subscription-banner--trial{background:#eef4fb;border-color:#c9daf0;color:#1c2430}@media (prefers-color-scheme:dark){.subscription-banner--trial{background:#16263a;border-color:#2f4a6b;color:#e6edf3}}.subscription-rules li{display:block;padding:.25rem 0}.subscription-history li{display:block;padding:.25rem 0}
.onboarding{list-style:none;counter-reset:none;padding:0}.onboarding__step--next{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand)} /* J7-143 : première étape à faire */.onboarding__step--done{opacity:.85}.onboarding__step h2{margin:.2rem 0 .4rem;font-size:1.05rem}
.users-table td form,.invitations-table td form{margin:0 0 .3rem}.users-table__row--disabled td{color:var(--muted)}.subscription-change p{margin:.4rem 0}
.w-readonly{margin:.4rem 0 0;padding:.5rem .7rem;border-radius:6px;background:#fff6dd;border:1px solid #f0d58a;color:#6b4d00;font-size:.9rem}
/* J4-04 — paiements : formulaire de paiement avec consentement, pastilles d'état, page factice, lignes en anomalie */
.payment-form{gap:.5rem;margin:.3rem 0}.payment-form .consent{margin:.2rem 0}.payment-consent label.check{font-weight:600}.payment-secure{margin:0;font-size:.9rem}.payment-test-mode{margin:0}
.payment-row--anomaly td{background:#fdecea}.payments-table .tag{white-space:nowrap}.fake-gateway__form .actions{margin-top:.8rem}.fake-gateway .banner{margin-bottom:.8rem}
.payment-return h1,.payment-cancelled h1,.payment-link h1{margin-top:0}.notification-row--anomaly td,.notification-row--error td{background:#fdecea}
/* Relecture de J7-67 (D-106) — lignes en anomalie (paiements, notifications du prestataire) : en sombre, leur fond clair restait clair sous le texte (--ink : 1,0:1)
   et le lien de la première cellule (--link : 2,1:1) ; elles prennent le fond sombre de .flash--error (lien à 6,4:1, texte à 13,1:1). Garde : LinkContrastDarkModeTest. */
@media (prefers-color-scheme:dark){.payment-row--anomaly td{background:#3d1a16}.notification-row--anomaly td{background:#3d1a16}.notification-row--error td{background:#3d1a16}}

/* J4-05 : espace exploitant (tableau de bord, fiche organisation), accès exceptionnel (bandeau, formulaires atténués — le serveur reste l'autorité), TOTP (QR, codes de récupération), sessions */
.platform-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:1rem;align-items:start}.platform-grid>*,.supervision-grid>*{min-width:0}.platform-grid .card h2{margin-top:0}.platform-grid .card h3{font-size:.95rem;margin:.9rem 0 .3rem}
.list--plain li{display:block;padding:.4rem 0}.audit-data{max-width:28rem;word-break:break-word}.audit-kv{display:inline-block;margin-right:.6rem;font-size:.85rem}.heartbeat-tasks li{font-size:.9rem}
.impersonation{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;position:sticky;top:.5rem;z-index:3;background:#fff1c9;border-color:#e0a800;color:#5a3d00;box-shadow:var(--shadow)}.impersonation__detail{flex:1 1 260px}.impersonation__end{margin-left:auto}
body.is-impersonation form[method=post]:not(.impersonation__end) button,body.is-impersonation form[method=POST]:not(.impersonation__end) button{opacity:.45;pointer-events:none}
body.is-impersonation form[method=post]:not(.impersonation__end) button.link{opacity:1;pointer-events:auto}
@media (prefers-color-scheme:dark){.impersonation{background:#4a3a0e;border-color:#b58a1a;color:#ffe7a3}}
.qr{margin:.6rem 0;background:#fff;padding:.5rem;border-radius:8px;display:inline-block;max-width:220px}.qr svg{display:block;width:200px;height:200px}
.setup-steps{padding-left:1.2rem;display:flex;flex-direction:column;gap:.9rem}.setup-steps .form{margin-top:.5rem}
.recovery-codes{list-style:none;padding:.8rem 1rem;margin:.6rem 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.4rem;background:var(--bg);border:1px dashed var(--line);border-radius:8px;font-size:1.05rem;letter-spacing:.05em}
.sessions-table td{vertical-align:middle}.session-row.is-current td:first-child{box-shadow:inset 3px 0 0 var(--brand)}
.profile-cards{margin-top:1rem}.organisations-table td{vertical-align:middle}#open-form{align-items:flex-end}#open-form label{min-width:260px}
/* J5 supervision et alertes (D-037) : jetons de la barre « Espace exploitant » (report J4 : contraste en mode sombre — clair #1c2430 / #ffffff / #cfd6df ≈ 15,5:1 et 10,8:1,
   sombre #2b3a55 / #f1f5f9 / #c7d2de ≈ 10,4:1 et 7,3:1), badges de navigation, page de supervision (grille, blocs, barre d'alerte critique) — tag--* et usage-bar réutilisés */
:root{--platform-bar-bg:#1c2430;--platform-bar-ink:#ffffff;--platform-bar-muted:#cfd6df}
@media (prefers-color-scheme:dark){:root{--platform-bar-bg:#2b3a55;--platform-bar-ink:#f1f5f9;--platform-bar-muted:#c7d2de}}
.badge--critical{background:#c0392b;color:#fff}.badge--warning{background:#975a16;color:#fff}
@media (prefers-color-scheme:dark){.badge--critical{background:#e5534b;color:#1a0b0a}.badge--warning{background:#d29922;color:#1f1605}}
.supervision-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:1rem;align-items:start;margin:0 0 1rem}.supervision-grid .card h2{margin-top:0}
.supervision-section{margin:0 0 1rem}.supervision-section h3,.supervision-block h3{font-size:.95rem;margin:.9rem 0 .35rem}.supervision-block{min-width:0}
.supervision-banner--critical{background:#fdecea;border-color:#f1a9a0;color:#8a1c12;font-weight:600}
@media (prefers-color-scheme:dark){.supervision-banner--critical{background:#3d1a16;border-color:#8a3b33;color:#f5b7b1}}
.supervision-table td{font-size:.9rem}.supervision-table .form--compact{margin:0;max-width:18rem}.supervision-alert--critical td:first-child{border-left:3px solid #c0392b}
.supervision-alert--warning td:first-child{border-left:3px solid #b7791f}.supervision-disk{margin:0 0 .8rem}.supervision-disk p{margin:.2rem 0}
.supervision-notifications li.is-unread{font-weight:600}.supervision-notifications .tag{margin-right:.3rem}
/* J6 dispositif d'acquisition (/plateforme/marketing) : sous-navigation, compteurs, statuts des contenus, créneaux, tâches LinkedIn, aperçu, tableau de bord ; clair et sombre ; pas de largeur fixe (375 px) */
.marketing-nav,.marketing-tabs{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin:0 0 1rem;padding:.5rem .8rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.marketing-nav a,.marketing-tabs a{padding:.2rem 0}.marketing-nav a.is-active,.marketing-tabs a.is-active{font-weight:700;text-decoration:underline;text-underline-offset:.3em}
.marketing-counts{display:flex;flex-wrap:wrap;gap:.4rem .9rem;list-style:none;padding:0;margin:0 0 .8rem}.marketing-counts a[aria-current]{font-weight:700}
.marketing-list{list-style:none;padding:0;margin:0 0 .8rem}.marketing-list li{padding:.3rem 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.marketing-list li.is-unread{font-weight:600}
.marketing-history{padding-left:1.2rem}.marketing-history li{margin:.3rem 0;overflow-wrap:anywhere}.marketing-show{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:.9rem}
.marketing-help{margin:.6rem 0}.marketing-help summary{cursor:pointer;color:var(--link)}.marketing-help code{overflow-wrap:anywhere}
.marketing-social{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.8rem;font-family:inherit}
.marketing-preview{border:1px dashed var(--line);border-radius:8px;padding:1rem;overflow-x:auto}.marketing-preview table{border-collapse:collapse}.marketing-preview th,.marketing-preview td{border:1px solid var(--line);padding:.3rem .5rem}
.marketing-preview .comparison-notice{background:var(--internal);border:1px solid var(--internal-line);border-radius:8px;padding:.6rem .8rem;margin:0 0 1rem}.marketing-preview .hypothesis{font-size:.85em;color:var(--muted)}
.marketing-visual{max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px}
.marketing-cal-item{margin:0;font-size:.85rem;overflow-wrap:anywhere}.marketing-slot{margin:0}.marketing-cost{border-bottom:1px solid var(--line);padding:.5rem 0}.marketing-cost summary{cursor:pointer}
.marketing-checklist{list-style:none;padding:0}.marketing-checklist li{margin:.35rem 0}.marketing-notes .banner{margin:0 0 .5rem}
.tag--mstatus-draft{background:var(--bg);border-color:var(--line);color:var(--muted)}.tag--mstatus-in_review{background:#fff3d6;border-color:#f0c36d;color:#7a5400}.tag--mstatus-approved{background:#e7eefc;border-color:#9fb8f0;color:#1d3f8a}
.tag--mstatus-scheduled{background:#efe7fc;border-color:#b9a2ee;color:#4b2a8a}.tag--mstatus-published{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}.tag--mstatus-archived{background:var(--bg);border-color:var(--line);color:var(--muted);text-decoration:line-through}
.tag--slot-covered,.tag--task-done,.tag--check-done{background:#e3f7ea;border-color:#9fd7b8;color:#146c3b}.tag--slot-fillable,.tag--task-todo,.tag--check-todo,.tag--warning-soft{background:#fff3d6;border-color:#f0c36d;color:#7a5400}
.tag--slot-empty,.tag--check-blocked{background:#fdecea;border-color:#f1a9a2;color:#7d2a22}.tag--task-cancelled,.tag--check-optional,.tag--check-external{background:var(--bg);border-color:var(--line);color:var(--muted)}
@media (prefers-color-scheme:dark){.tag--mstatus-in_review,.tag--slot-fillable,.tag--task-todo,.tag--check-todo,.tag--warning-soft{background:#3a2f14;color:#f5d98a}.tag--mstatus-approved{background:#15243d;color:#b8ccf5}.tag--mstatus-scheduled{background:#2a1f45;color:#d5c6f7}
.tag--mstatus-published,.tag--slot-covered,.tag--task-done,.tag--check-done{background:#123524;color:#a9e6c3}.tag--slot-empty,.tag--check-blocked{background:#3d1a16;color:#f5b7b1}}
.marketing-break{overflow-wrap:anywhere;word-break:break-word}.marketing-filters label{min-width:150px;flex:1 1 150px}.marketing-filters .actions{margin:0}
.marketing-periods td,.marketing-periods th{white-space:nowrap}.marketing-periods .usage-bar{min-width:4rem}
/* J7-01 — rôles et permissions : cartes de rôles, tableau comparatif (défilement interne sur mobile, focus visible), cases de permissions à zone tactile large, bouton désactivé */
.btn--disabled{opacity:.55;cursor:not-allowed}.roles-upsell{border:1px dashed var(--line);border-radius:8px;padding:.6rem .8rem;margin:.6rem 0}.roles-upsell p{margin:.25rem 0}.role-cards--locked .role-card{border-style:dashed}.role-card__locked{white-space:nowrap}.role-action--locked{opacity:.55;cursor:not-allowed}.role-form--locked .role-form__body{opacity:.7}.role-cards{margin:1rem 0}.role-card__title{font-size:1.05rem;margin:0;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.role-card__perms{margin:.2rem 0;font-size:.92rem;overflow-wrap:anywhere}.role-card__actions{margin:.3rem 0 0}
.role-matrix-wrap:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.role-matrix th[scope=col]{min-width:7rem;white-space:normal}.role-matrix td.is-on{color:var(--ok);font-weight:700}.role-matrix td.is-off{color:var(--muted)}.role-matrix__group th,.role-matrix__group td{text-align:left;font-weight:600;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--bg)}
.role-form__body{border:0;padding:0;margin:0;min-width:0;display:flex;flex-direction:column;gap:.9rem}.role-perms{display:flex;flex-direction:column;gap:.2rem}.role-perm{display:flex;gap:.7rem;align-items:flex-start;padding:.5rem 0;border-bottom:1px solid var(--line)}.role-perm input[type=checkbox]{width:1.3rem;height:1.3rem;margin:.1rem 0 0;flex:none;cursor:pointer}.role-perm input[type=checkbox]:disabled{cursor:not-allowed}.role-perm input:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.role-perm__text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.role-perm__text>.tag{align-self:flex-start}.role-matrix th[scope=row]{min-width:10rem}.role-perm__text label{display:inline;font-weight:600;cursor:pointer}.role-perm__text small{overflow-wrap:anywhere}#role-errors:focus{outline:2px solid var(--danger);outline-offset:2px}.role-history li{margin:.35rem 0}
/* J7-52 (D-094) — pages commerciales, page de création : repères de l'essai, cartes de forfait à bouton radio sans JavaScript (l'étiquette du bouton couvre la carte : clic, anneau de sélection, cadre de focus), carte recommandée, encart « après l'essai » */
.card--signup{max-width:1080px;margin:1.5rem auto}.card--signup h1{font-size:1.6rem;margin:0 0 .8rem}.signup__name{max-width:28rem}
.trust{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.4rem .5rem}.trust li{background:#e3f7ea;border:1px solid #9fd7b8;color:#146c3b;border-radius:999px;padding:.15rem .7rem;font-size:.88rem;font-weight:600}
@media (prefers-color-scheme:dark){.trust li{background:#123524;border-color:#2c6b47;color:#a9e6c3}}
.plan-choices{border:0;padding:0;margin:0;min-width:0}.plan-choices legend{padding:0;font-weight:600;font-size:1.05rem}.plan-choices__help{margin:.2rem 0 .7rem}
.plan-choices__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.8rem}
.plan-choice{position:relative;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);padding:.8rem .9rem .9rem 2.5rem;min-width:0}.plan-choice--recommended{border-color:var(--ok)}
.plan-choice input[type=radio]{position:absolute;left:.85rem;top:1rem;width:1.1rem;height:1.1rem;margin:0}
.plan-choice__label{display:block;font-size:1rem;cursor:pointer}.plan-choice__label::before{content:"";position:absolute;inset:-2px;border-radius:var(--radius)}
.plan-choice input:checked+.plan-choice__label::before{box-shadow:0 0 0 2px var(--brand)}.plan-choice input:focus-visible+.plan-choice__label::before{outline:3px solid var(--brand);outline-offset:3px}
.plan-choice__name{font-weight:700;font-size:1.05rem}.plan-choice__price{display:block;font-weight:400;margin-top:.2rem}.plan-choice__price strong{font-size:1.25rem}
.plan-choice__details{list-style:none;padding:0;margin:.5rem 0 0;font-size:.9rem;color:var(--muted)}.plan-choice__details li{padding:.12rem 0}.plan-choice__feature{color:var(--ink)}.plan-choice__feature::before{content:"✓ ";color:var(--ok);font-weight:700}
.after-trial{border:1px dashed var(--line);border-radius:8px;padding:.6rem .8rem;font-size:.95rem}.after-trial p{margin:0}
.btn--large{padding:.7rem 1.4rem;font-size:1.05rem}.card--signup .form>.btn{align-self:flex-start}
@media (max-width:600px){.card--signup{margin:.5rem auto}.card--signup .form>.btn{align-self:stretch}}
/* J7-52 (D-094) — pages commerciales, /tarifs : carte recommandée, comparatif des forfaits (défilement interne, première colonne fixe, focus visible) */
.pricing__plan--recommended{border:2px solid var(--ok)}.pricing-compare{margin:1.25rem 0}.plan-compare-wrap:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.plan-compare th[scope=col]{min-width:6.5rem;white-space:normal}.plan-compare th[scope=row]{min-width:10rem;position:sticky;left:0;background:var(--surface)}.plan-compare th small,.plan-compare td small{display:block;font-weight:400}.plan-compare td.is-on{color:var(--ok);font-weight:700}.plan-compare td.is-off{color:var(--muted)}
.plan-compare__group th{text-align:left;font-weight:600;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--bg)}
/* J7-67 (D-106) — liens en mode sombre. Tout texte en couleur de lien (liens, boutons secondaires, résumés repliables, onglet ou filtre actif…) emploie le jeton
   --link : égal à --brand en clair (mode clair inchangé), #6ea8fe en sombre — la teinte des liens du site —, soit 7,7:1 sur --bg, 7,0:1 sur --surface et au moins
   4,5:1 sur chaque fond sombre où un lien peut paraître (messages, bandeaux, notes internes, lignes en anomalie) ; --brand, à 3,7:1 sur --surface, ne garde que les fonds (boutons
   pleins : blanc à 4,6:1), les bords et les contours. La règle bornée aux boutons secondaires de /tarifs (J7-52) n'a plus d'objet. Les boutons-liens de
   suppression, en --danger (3,1:1 en sombre), prennent le rouge clair des textes sombres. Garde : tests/Unit/LinkContrastDarkModeTest. */
@media (prefers-color-scheme:dark){.attachment__delete button.link,.views__chip button.link:hover{color:#f5a09a}}
/* J7-67 (D-106) — cinq cartes de forfait (/tarifs, page de création) : sur grand écran, la cinquième ne passe plus seule sur sa ligne — trois cartes puis deux,
   centrées (six pistes, deux par carte, la quatrième commençant à la deuxième piste). Seuils choisis pour qu'une carte garde au moins sa largeur minimale d'avant,
   même avec une barre de défilement de 17 px (260 px sur /tarifs dès 880 px de fenêtre ; 11rem sur la page de création dès 660 px, qui garde ses cinq cartes
   sur une ligne dès 1 040 px). Téléphone et tablette étroite inchangés ; un autre nombre de cartes garde la grille d'avant, comme un navigateur sans :has(). Garde : tests/Unit/PlanCardsLayoutTest. */
@media (min-width:880px){.pricing:has(>.pricing__plan:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr))}.pricing:has(>.pricing__plan:nth-child(5):last-child)>.pricing__plan{grid-column:span 2}.pricing:has(>.pricing__plan:nth-child(5):last-child)>.pricing__plan:nth-child(4){grid-column:2/span 2}}
@media (min-width:660px){.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr))}.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child)>.plan-choice{grid-column:span 2}.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child)>.plan-choice:nth-child(4){grid-column:2/span 2}}
@media (min-width:1040px){.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child)>.plan-choice,.plan-choices__grid:has(>.plan-choice:nth-child(5):last-child)>.plan-choice:nth-child(4){grid-column:auto}}
/* J7-54 (D-095) — formulaire déjà envoyé : simple retour visuel sur ses boutons d'envoi, sans rôle fonctionnel. Le verrou est l'attribut data-sent que app.js pose sur
   le FORMULAIRE ; aucun bouton d'envoi n'est jamais désactivé (le navigateur ne transmet pas la valeur d'un bouton désactivé, même cliqué). */
form[data-sent] button[type="submit"]{opacity:.55;cursor:progress}
/* J7-53 (D-113) — page Abonnement, rubrique « Forfaits » (#forfaits, org/billing/parts/plans.php) : cartes commerciales sur le fond de la page, dans la colonne principale.
   Cette colonne ne grandit pas avec la fenêtre (828 px au plus, puis 509 px dès 861 px de large, la colonne des règles revenant à droite) : requêtes de CONTENEUR, pas de
   largeur de fenêtre. Une colonne sous 31rem (496 px), deux dès 31rem, trois dès 47rem (752 px) ; cinq cartes en 3 + 2 centrées (D-106), en 2 + 2 + 1 centrée sur deux
   colonnes ; six cartes (les cinq forfaits et la carte « Sur mesure », CAIER 106 = B) en 3 + 3 ou 2 + 2 + 2, sans règle de plus. Aucune carte sous 15rem dès deux colonnes ; sans requête de conteneur, la grille auto-fit
   donne déjà 1, 2 ou 3 colonnes (cartes de 15,5rem au moins : deux colonnes demandent 31,8rem, donc une seule colonne sous 31rem, comme les requêtes). Jetons seulement (le mode sombre suit les jetons). .pricing, .pricing__plan, .plan-card, .cards--grid, .plan-choices__grid : non touchés ;
   .pricing--compact, que plus rien n'employait, est retirée. Spécification : docs/conception/J7-53-page-abonnement.md § 9. */
.billing-plans-section{container:billing-plans/inline-size;margin:0 0 1.25rem}.billing-plans-section:not(:first-child){margin-top:1.5rem}.billing-plans-section>h2{margin:0 0 .3rem;font-size:1.25rem;color:var(--ink);text-transform:none;letter-spacing:0}
.billing-plans{list-style:none;padding:0;margin:.8rem 0;display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(15.5rem,1fr))}
.billing-plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem;display:flex;flex-direction:column;gap:.4rem;min-width:0}
.billing-plan h3{margin:0;font-size:1.1rem;display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .45rem}.billing-plan p{margin:0}.billing-plan small{font-weight:400}
.billing-plan__price strong{font-size:1.3rem}.billing-plan__price small{display:block}
.billing-plan__limits{list-style:none;padding:0;margin:.1rem 0;font-size:.92rem}.billing-plan__limits li{padding:.1rem 0}
.billing-plan .billing-plan__action{margin-top:auto;padding-top:.5rem}
.billing-plan--current{border-color:var(--brand)}.billing-plan--recommended{border:2px solid var(--ok)}.billing-plan:target{outline:2px solid var(--ok);outline-offset:2px}
.billing-plan--custom{border-style:dashed}.billing-plan--custom .billing-plan__action{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}
.billing-compare{margin:.8rem 0}.billing-compare>summary{cursor:pointer;color:var(--link);font-weight:600;max-width:max-content}.billing-compare .plan-compare-wrap{margin-top:.5rem}
/* J7-53 (relecture adverse) — cartes empilées de cette page (Gratuit, état, échéance, résiliation, historique) : .card n'a pas de marge, elles se touchaient ; un écart entre deux cartes voisines, sur cette page seulement (.card non touchée). */
.layout2.subscription>div>.card+.card{margin-top:1rem}
/* J7-53 — comparatif de cette page en mode sombre : la coche « Inclus » (--ok, 3,4:1 sur une carte sombre) prend le vert clair des étiquettes sombres (#a9e6c3, plus de 4,5:1) ; /tarifs garde sa règle (hors du lot). */
@media (prefers-color-scheme:dark){.billing-compare .plan-compare td.is-on{color:#a9e6c3}}
@container billing-plans (min-width:31rem){.billing-plans{grid-template-columns:repeat(2,minmax(0,1fr))}.billing-plans:has(>.billing-plan:nth-child(5):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}.billing-plans:has(>.billing-plan:nth-child(5):last-child)>.billing-plan{grid-column:span 2}.billing-plans:has(>.billing-plan:nth-child(5):last-child)>.billing-plan:nth-child(5){grid-column:2/span 2}}
@container billing-plans (min-width:47rem){.billing-plans{grid-template-columns:repeat(3,minmax(0,1fr))}.billing-plans:has(>.billing-plan:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr))}.billing-plans:has(>.billing-plan:nth-child(5):last-child)>.billing-plan:nth-child(4){grid-column:2/span 2}.billing-plans:has(>.billing-plan:nth-child(5):last-child)>.billing-plan:nth-child(5){grid-column:span 2}}
/* J7-77 (CAIER 144 = A du 25/10/2026, D-120) — barre latérale de l'application : espace exploitant, espace d'une organisation et pages du compte (layouts/base,
   body.has-appnav). Rubriques à icônes (sprite local icons.svg, .ico au trait : la couleur du lien), compte en bas, page courante marquée (is-active et
   aria-current="page" : fond #e7eefc en clair — lien 5,2:1 —, #15243d en sombre — lien 6,4:1 —, comme .views__chip.is-active ; filet --brand à gauche).
   Intitulés de rubrique en --muted (5,0:1 en clair, 5,8:1 en sombre sur --surface). La barre tient la hauteur de la fenêtre : marque en haut, compte toujours
   visible en bas, rubriques défilantes entre les deux (espace exploitant sur un écran de 768 px de haut). Zone de contenu en minmax(0,1fr) et min-width:0 :
   un tableau large défile dans son .table-wrap, la page ne déborde jamais. De 901 à 1 279 px : tableaux resserrés (police, marges, pastille de statut sur
   deux lignes si besoin) ; fiche d'une demande sur une colonne jusqu'à 1 023 px, sur deux (colonne de droite de 270 px) à partir de 1 024 px. Sous 901 px,
   barre masquée et bouton « Menu » : case à cocher #appnav-toggle (aucun JavaScript ; elle n'est dans aucun formulaire), focus visible reporté sur son
   étiquette. Les pages publiques et le portail gardent .topbar (inchangée). */
.shell{display:grid;grid-template-columns:15.5rem minmax(0,1fr);min-height:100vh}
.shell__main{min-width:0;display:flex;flex-direction:column}
.shell__main>.page{width:100%;min-width:0;flex:1 0 auto}
.shell .orgbar{border-top:0;border-bottom:1px solid var(--line)}
.appnav-toggle,.appbar{display:none}
.appnav{position:sticky;top:0;align-self:start;height:100vh;overflow:hidden;display:flex;flex-direction:column;gap:.75rem;padding:.9rem .7rem .8rem;background:var(--surface);border-right:1px solid var(--line)}
.appnav__brand{flex:none;padding:.15rem .5rem}
.appnav__nav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;display:flex;flex-direction:column;gap:.7rem}
.appnav__title{margin:0 0 .15rem;padding:0 .55rem;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.appnav__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
.appnav__list a,.appnav__switch a,.appnav__logout button.link,.appnav__user{display:flex;align-items:center;gap:.6rem;width:100%;margin:0;padding:.36rem .55rem;border-radius:8px;color:var(--ink);text-decoration:none;font-size:.94rem;line-height:1.3;text-align:left}
.appnav__list a:hover,.appnav__switch a:hover,.appnav__logout button.link:hover{background:var(--bg);text-decoration:none}
.appnav a.is-active{background:#e7eefc;color:var(--link);font-weight:600;box-shadow:inset 3px 0 0 var(--brand)}
.appnav a:focus-visible,.appnav button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.appnav__label{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.appnav .badge{flex:none}
.ico{width:1.15rem;height:1.15rem;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.appnav__cta{margin:0 0 .1rem}
.appnav__new{display:flex;align-items:center;justify-content:center;gap:.45rem;width:100%}
.appnav__account{flex:none;margin-top:auto;padding-top:.6rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:1px}
.appnav__switch{margin:0 0 .3rem}
.appnav__user{color:var(--muted);font-weight:600}
.appnav__logout{display:block}
@media (prefers-color-scheme:dark){.appnav a.is-active{background:#15243d}}
@media (min-width:901px) and (max-width:1279px){.shell .table{font-size:.875rem}.shell .table th,.shell .table td{padding:.5rem .4rem}.shell .table th{font-size:.7rem;letter-spacing:.02em}.shell .table .status{white-space:normal;line-height:1.3}}
@media (min-width:901px) and (max-width:1023px){.shell .layout2{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1024px) and (max-width:1279px){.shell .layout2{grid-template-columns:minmax(0,1fr) 270px}}
@media (max-width:900px){.shell{display:block}.appbar{display:flex;align-items:center;gap:.8rem;padding:.55rem 1rem;background:var(--surface);border-bottom:1px solid var(--line)}.appbar__toggle{display:inline-flex;flex-direction:row;align-items:center;gap:.45rem;padding:.35rem .65rem;border:1px solid var(--line);border-radius:8px;font-weight:600;cursor:pointer;user-select:none}.appbar__toggle span{display:inline-flex}.appnav-toggle{display:block;position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0}.appnav-toggle:focus-visible~.appbar .appbar__toggle{outline:2px solid var(--brand);outline-offset:2px}.appnav-toggle:checked~.appbar .appbar__toggle{background:var(--bg);border-color:var(--brand)}.appnav-toggle:checked~.appbar .appbar__open,.appbar .appbar__close{display:none}.appnav-toggle:checked~.appbar .appbar__close{display:inline-flex}.appnav{display:none;position:static;height:auto;overflow:visible;border-right:0;border-bottom:1px solid var(--line)}.appnav__nav{overflow:visible}.appnav-toggle:checked~.appnav{display:flex}.appnav__brand{display:none}.appnav__account{margin-top:.2rem}}
@media print{.appnav,.appbar{display:none}.shell{display:block}}
/* J7-79 (CAIER 148 = C, D-123) : e-mail reçu « mis en forme » dans un cadre isolé ; onglets montrés par app.js (sans programme : les deux versions l'une sous l'autre). Cadre blanc en mode sombre aussi : un e-mail est composé pour un fond blanc (couleur de texte posée) */
.msg-views__tabs{display:flex;gap:.3rem;margin-bottom:.5rem}.msg-views__tab{font:inherit;font-size:.85rem;padding:.25rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:inherit;cursor:pointer}.msg-views__tab[aria-selected="true"]{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.msg-views__bar{font-size:.85rem;margin:0 0 .4rem}.msg-frame{resize:vertical;overflow:hidden;height:70vh;min-height:220px;max-height:200vh;border:1px solid var(--line);border-radius:8px;background:#fff;color:#1f2933}.msg-frame iframe{display:block;width:100%;height:100%;border:0;background:#fff;color:#1f2933}
.msg-views__text{margin-top:.6rem}.msg-views.is-tabbed .msg-views__text{margin-top:0}.msg-views [data-panel][hidden]{display:none}
/* J7-82 (D-127) : Réglages › API — clé, secret et adresse longs coupés à la largeur (téléphone) ; cases des droits : texte d'un seul bloc, groupe sans largeur minimale */
.api-secret{white-space:nowrap;overflow-x:auto;display:inline-block;max-width:100%;vertical-align:middle;user-select:all;-webkit-user-select:all;padding:.25em .4em}.api-secret-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.api-secret-row .api-secret{flex:1 1 16rem;min-width:0}.api-fieldset{min-width:0}.api-check__text{flex:1;min-width:0;font-weight:400}
/* J7-88 (D-133) : boutons des comptes externes — pleine largeur, fond BLANC, fin contour gris, coins légèrement arrondis, logo à gauche, libellé centré ; restent blancs en mode sombre (chartes Apple, Google, Microsoft, LinkedIn) */
.ext-login{display:flex;flex-direction:column;gap:.6rem;margin:0 0 .5rem}.ext-login form{margin:0}
.btn-provider{display:flex;align-items:center;gap:.75rem;width:100%;min-height:44px;box-sizing:border-box;padding:.55rem .9rem;background:#fff;color:#1f1f1f;border:1px solid #747775;border-radius:6px;font:inherit;font-weight:500;line-height:1.2;text-decoration:none;cursor:pointer}
.btn-provider:hover{background:#f6f8fa;color:#1f1f1f;text-decoration:none}.btn-provider:focus-visible{outline:2px solid var(--link);outline-offset:2px}
.btn-provider__logo{display:inline-flex;flex:0 0 20px;width:20px;height:20px}.btn-provider__logo svg{width:20px;height:20px;display:block}
.btn-provider__label{flex:1;text-align:center;padding-right:32px}
.auth-sep{display:flex;align-items:center;gap:.75rem;margin:1rem 0;color:var(--muted);font-size:.9rem}.auth-sep::before,.auth-sep::after{content:"";flex:1;border-top:1px solid var(--line)}
@media (prefers-color-scheme:dark){.btn-provider{background:#fff;color:#1f1f1f;border-color:#8e918f}.btn-provider:hover{background:#f1f3f4;color:#1f1f1f}}
/* J7-93 (D-138) : page d'inscription — deux colonnes dès 900 px (formulaire à gauche, arguments à droite), une seule sur téléphone, formulaire en premier ; couleurs
   et typographie du site vitrine (bleu #1f6feb, bleu nuit #081430 → #0d2558, titres serrés) ; le panneau des arguments reste bleu nuit en mode sombre ; bouton « Afficher » du mot de passe */
.signup{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem;max-width:1080px;margin:.5rem auto 0;align-items:start}
@media (min-width:900px){.signup{grid-template-columns:minmax(0,30rem) minmax(0,1fr);gap:2.5rem;margin-top:1.5rem}}
.signup__main{padding:1.25rem;border-radius:16px}@media (min-width:600px){.signup__main{padding:2rem}}
.signup h1{margin:0 0 .5rem;font-size:clamp(1.55rem,1.3rem + 1vw,1.8rem);font-weight:800;line-height:1.15;letter-spacing:-.025em;text-wrap:balance}
.signup__plan{margin:0 0 1.25rem;font-size:.95rem}
.signup__offer{margin:0 0 1rem;padding:.8rem 1rem;border-radius:12px;background:linear-gradient(135deg,#1f6feb,#1a5dc8);color:#fff;font-size:.92rem;line-height:1.45}
.signup__offer strong{display:block;margin-bottom:.15rem;font-size:1.2rem;letter-spacing:-.01em}
h1.signup__offer{font-size:1.35rem;font-weight:700;letter-spacing:-.01em}
.signup__discover{margin:-.25rem 0 1rem;font-weight:600}
.signup .form{gap:1rem}
.signup__submit{width:100%;min-height:48px;margin-top:.25rem;padding-inline:.75rem;border-radius:10px;font-size:1rem;font-weight:700}@media (min-width:600px){.signup__submit{font-size:1.05rem}}
.signup__submit:hover{filter:none;background:#1a5dc8;border-color:#1a5dc8}
.signup__reassure{margin:-.25rem 0 0;color:var(--muted);font-size:.85rem;line-height:1.5;text-align:center}.signup__reassure span{white-space:nowrap}.signup__reassure .signup__price{display:block;white-space:normal}.signup__reassure i{margin:0 .3rem;font-style:normal}
.signup__terms{margin:0;font-size:.85rem}.signup__login{margin:1.25rem 0 0;text-align:center;font-size:.95rem}
.pw-field{display:flex;flex-direction:column;gap:.3rem;font-size:.95rem}.pw-field>label{display:block}.pw-field small{font-size:.85rem}
.pw-field__row{position:relative;display:flex}.pw-field__row input{padding-right:6rem}
.pw-toggle{position:absolute;top:50%;right:.25rem;min-height:36px;padding:.2rem .65rem;border:0;border-radius:6px;background:transparent;color:var(--link);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transform:translateY(-50%)}
.pw-toggle:hover{background:rgba(31,111,235,.12)}.pw-toggle[hidden]{display:none}
.signup__pitch{padding:1.25rem;border-radius:16px;color:#c5d3ec;background:radial-gradient(50% 45% at 85% 10%,rgba(31,111,235,.5),transparent 70%),linear-gradient(180deg,#081430,#0d2558)}
@media (min-width:600px){.signup__pitch{padding:2rem}}
.signup__pitch h2{margin:0 0 1.25rem;color:#fff;font-size:1.35rem;font-weight:750;line-height:1.25;letter-spacing:-.015em;text-transform:none}
.signup__shot{margin:0 -.4rem 1.25rem}.signup__shot img{display:block;width:100%;height:auto}
.signup__benefits{display:grid;gap:1.1rem;margin:0;padding:0;list-style:none}
.signup__benefits li{display:flex;gap:.85rem;align-items:flex-start;font-size:.95rem;line-height:1.45}
.signup__benefits strong{display:block;margin-bottom:.1rem;color:#fff;font-size:1rem}
.signup__ico{display:grid;flex:none;place-items:center;width:40px;height:40px;border-radius:10px;background:rgba(138,184,255,.16);color:#8ab8ff}.signup__ico .ico{width:20px;height:20px}
/* J7-97 (D-142) : « En savoir plus » du formulaire d'une boîte (détails techniques repliés, sans JavaScript) */
.mail-more{margin:.6rem 0;font-size:.92rem;color:var(--muted)}.mail-more summary{cursor:pointer;color:var(--link);font-weight:600}.mail-more[open] summary{margin-bottom:.3rem}.mail-more p{margin:.35rem 0}
/* J7-130 (D-132, révision du 08/11/2026) : enquête de recommandation en carte — 11 pastilles 0 à 10 (radios natifs masqués visuellement mais focalisables, flèches du clavier), extrémités, « Pourquoi ? » montré après le choix (:has ; sans :has, toujours visible), « Plus tard ✕ » en haut à droite ; sans script */
.survey-score{position:relative;margin:0 0 1rem}
.survey-score__scale{margin:0;padding:0;border:0;min-width:0}
.survey-score__title{float:none;padding:0 7.5rem 0 0;margin:0 0 .85rem;font-size:1.05rem;font-weight:700;color:var(--ink)}
.survey-score__pills{position:relative;max-width:34rem;display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:.4rem}
.survey-score__input{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0}
.survey-score__pill{display:flex;flex-direction:row;align-items:center;justify-content:center;min-height:2.6rem;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--ink);font-size:1rem;font-weight:600;cursor:pointer;user-select:none;transition:background-color .12s,border-color .12s,color .12s}
.survey-score__pill:hover{border-color:var(--link);color:var(--link)}
.survey-score__input:focus-visible+.survey-score__pill{outline:2px solid var(--brand);outline-offset:2px}
.survey-score__input:checked+.survey-score__pill{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.survey-score__ends{max-width:34rem;display:flex;justify-content:space-between;gap:1rem;margin:.4rem 0 0;font-size:.85rem;color:var(--muted)}
.survey-score__why{display:flex;flex-direction:column;gap:.6rem;max-width:34rem;margin-top:1rem}
@supports selector(:has(*)){.survey-score__why{display:none}.survey-score__form:has(input[name="note"]:checked) .survey-score__why{display:flex}}
.survey-score__field textarea{min-height:4.5rem}
.survey-score__actions{margin:0}
.survey-score__later{position:absolute;top:.75rem;right:.75rem;margin:0}
.survey-score__close{background:none;border:0;border-radius:6px;padding:.3rem .5rem;color:var(--muted);font:inherit;font-size:.88rem;cursor:pointer}
.survey-score__close:hover{background:var(--bg);color:var(--ink)}
@media (max-width:480px){.survey-score__pills{grid-template-columns:repeat(6,minmax(0,1fr))}.survey-score__title{padding-right:6.5rem;font-size:1rem}}
@media (prefers-color-scheme:dark){.survey-score__pill:hover{border-color:var(--link);color:var(--link)}.survey-score__input:focus-visible+.survey-score__pill{outline-color:var(--link)}.survey-score__close:hover{background:var(--line)}}
@media (prefers-reduced-motion:reduce){.survey-score__pill{transition:none}}
/* J7-136 (D-174) — bouton « en cours » (app.js) : petite roue + texte d'attente, sans désactiver le bouton (D-095) ; couleur du texte du bouton (modes clair et sombre) */
button.is-busy{cursor:progress;display:inline-flex;align-items:center;gap:.45em}
button.is-busy.is-busy[aria-disabled="true"]{opacity:1}
.busy-spinner{width:1em;height:1em;flex:0 0 auto;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:busy-spin .8s linear infinite}
@keyframes busy-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.busy-spinner{animation-duration:2.4s}}

/* Retouches (inventaire du 10/11/2026, point 8) : adresse mise en avant sur « Confirmez votre adresse e-mail », coupée au besoin à 390 px */
.verify-email{overflow-wrap:anywhere}
/* Retouches (inventaire du 10/11/2026, point 8 ; TACHES « Débordements en largeur à 360 px dans l'espace exploitant », D-103) — mesurés à 360 px dans Chromium :
   identifiants techniques de la chronologie (fiche d'une organisation : gateway_payment_id=…, payment_ref=…) coupés au besoin ; étiquette longue d'une fiche
   .props (Secours : « non validé (aucun serveur de confiance déclaré) », VIES) sur plusieurs lignes ; boutons d'en-tête (.meta, page Abus) qui passent à la ligne. */
.timeline li{overflow-wrap:anywhere}
.props dd .tag{white-space:normal;max-width:100%;border-radius:.6rem}
@media (max-width:480px){.tag{white-space:normal;max-width:100%;border-radius:.6rem}} /* téléphone : une étiquette longue (Sous-traitants : « à compléter : … ») passe à la ligne au lieu de déborder */
.meta{flex-wrap:wrap;min-width:0}
/* Temps réel (14/10 et 18/10/2026) : bandeau fixe en bas de l'écran (ne déplace jamais la page), message ajouté sans rechargement, réglage du navigateur */
.live-banner{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);z-index:40;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;max-width:calc(100vw - 2rem);box-sizing:border-box;padding:.6rem .9rem;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:var(--radius);box-shadow:0 4px 16px rgba(16,24,40,.18)}
.live-banner[hidden]{display:none}.live-banner__text{font-weight:600}
.msg--fresh{box-shadow:0 0 0 2px var(--brand)}
@media (prefers-reduced-motion:no-preference){.msg--fresh{transition:box-shadow 1s}}
.live-browser{margin:1rem 0}.live-browser h2{font-size:1rem;margin:0 0 .3rem}.live-browser__toggle[hidden],.live-banner [hidden]{display:none}
@media (prefers-color-scheme:dark){.live-banner{box-shadow:0 4px 16px rgba(0,0,0,.5)}}

/* J7-142 — page Paramètres « graphe de paramétrage » (maquette validée le 10/11/2026, proposition retenue A + B + C) : anneau, schéma vivant à bulles, thèmes et recherche. Préfixe sg-. États : ok réglé, warn à vérifier, bad à corriger, off facultatif. Couleurs par jetons (variantes sombres ci-dessous), aucun style en ligne (CSP). */
.sg{--sg-ok:#1a7f4b;--sg-warn:#94600a;--sg-bad:#c0392b;--sg-off:#5f6b7a;--sg-soft:color-mix(in srgb,var(--brand) 8%,var(--surface));display:flex;flex-direction:column;gap:1.1rem}
.sg-ok{--sg-c:var(--sg-ok)}.sg-warn{--sg-c:var(--sg-warn)}.sg-bad{--sg-c:var(--sg-bad)}.sg-off{--sg-c:var(--sg-off)}
.sg-h{font-size:.95rem;font-weight:600;color:var(--muted);margin:0 0 .3rem}
.sg-ring{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.9rem 1rem;border:1px solid var(--line);border-radius:14px;background:var(--sg-soft)}
.sg-ring__dial{position:relative;width:76px;height:76px;flex:none}
.sg-ring__dial svg{width:76px;height:76px;transform:rotate(-90deg)}
.sg-ring__dial circle{fill:none;stroke-width:9}
.sg-ring__bg{stroke:var(--line)}
.sg-ring__fg{stroke:var(--link);stroke-linecap:round}
.sg-ring.is-done .sg-ring__fg{stroke:var(--sg-ok)}
.sg-ring__pct{position:absolute;inset:0;display:grid;place-items:center;font-weight:700;font-size:1.05rem}
.sg-ring__text{flex:1;min-width:12rem}
.sg-ring__text h2{margin:0;font-size:1.15rem}
.sg-ring__text p{margin:.15rem 0 0;color:var(--muted)}
.sg h2,.sg h3{text-transform:none;letter-spacing:normal}
.sg-scheme{display:grid;grid-template-columns:minmax(0,1fr) 56px minmax(0,1.7fr) 56px minmax(0,1fr);align-items:stretch}
.sg-col{display:flex;flex-direction:column;gap:.6rem;min-width:0;list-style:none;margin:0;padding:0}
.sg-colwrap{min-width:0}
.sg-colwrap--mid{background:var(--sg-soft);border-radius:16px;padding:.75rem}
.sg-col--mid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:.6rem}
.sg-col--mid>.sg-node:first-child{grid-column:1/-1}
.sg-pipe{display:flex;align-items:center;justify-content:center}
.sg-pipe svg{overflow:visible}
.sg-pipe__h{width:62px;height:26px}
.sg-pipe__v{display:none;width:26px;height:46px}
.sg-pipe .sg-flow{stroke:var(--sg-ok);stroke-width:4;stroke-linecap:round;stroke-dasharray:1 9;animation:sg-flow 1.1s linear infinite}
.sg-pipe .sg-head{fill:none;stroke:var(--sg-ok);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.sg-pipe--cut .sg-flow{stroke:var(--sg-bad);stroke-dasharray:none;animation:none}
.sg-pipe--cut .sg-head,.sg-pipe .sg-x{fill:none;stroke:var(--sg-bad);stroke-width:3;stroke-linecap:round}
@keyframes sg-flow{to{stroke-dashoffset:-20}}
.sg-node{position:relative;border:1px solid var(--line);border-radius:12px;background:var(--surface);transition:transform .15s,box-shadow .15s;min-width:0}
.sg-node:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(20,40,80,.10)}
.sg-node.sg-bad{border-color:var(--sg-bad)}
.sg-node__link{display:flex;gap:.75rem;align-items:center;padding:.75rem .85rem;border-radius:12px;color:var(--ink);text-decoration:none;min-width:0}
.sg-node__link:hover{text-decoration:none}
.sg-node__link:focus-visible{outline:3px solid var(--link);outline-offset:2px}
.sg-ic{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:var(--sg-c);background:color-mix(in srgb,var(--sg-c) 14%,var(--surface))}
.sg-ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sg-tx{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
.sg-tx b{font-weight:600}
.sg-tx span{font-size:.85rem;color:var(--muted)}
.sg-bad .sg-tx span{color:var(--sg-bad)}
.sg-bub{position:absolute;top:-9px;right:-9px;width:26px;height:26px;border-radius:50%;border:2px solid var(--surface);font-weight:800;cursor:pointer;color:#fff;display:grid;place-items:center;padding:0;z-index:2;background:var(--sg-c);font-size:.9rem;line-height:1}
.sg-bad>.sg-bub{animation:sg-pulse 2s ease-in-out infinite}
@keyframes sg-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--sg-bad) 25%,transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--sg-bad) 25%,transparent)}}
.sg-pop{display:none;position:absolute;z-index:5;top:calc(100% + 6px);right:0;left:0;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:.6rem .75rem;box-shadow:0 10px 24px rgba(10,20,40,.18);font-size:.86rem;flex-direction:column;gap:.5rem;align-items:flex-start}
.sg-pop p{margin:0}
.sg-node:hover>.sg-pop,.sg-node:focus-within>.sg-pop,.sg-node.is-open>.sg-pop{display:flex}
.sg-account{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
.sg-refs{margin:0;font-size:.9rem;color:var(--muted)}
.sg-sect{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.sg-sect h2{margin:0;font-size:1.15rem}
.sg-sect span{font-size:.82rem;color:var(--muted)}
.sg-search input{width:100%;padding:.6rem .75rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.sg-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:.75rem;align-items:start}
.sg-group{border:1px solid var(--line);border-radius:var(--radius);padding:.75rem;background:var(--surface);display:flex;flex-direction:column;gap:.5rem;min-width:0}
.sg-group__h{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.sg-group__h h2{margin:0;font-size:1.05rem}
.sg-group .cards{display:flex;flex-direction:column;gap:.4rem;list-style:none;margin:0;padding:0}
.sg-group .cards__item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.1rem .6rem;padding:.45rem .6rem;border:0;border-radius:8px;background:var(--bg);align-items:start}
.sg-group .cards__item strong{margin:0}
.sg-group .cards__item>.sg-st{grid-column:2;grid-row:1}
.sg-group .cards__item>p{grid-column:1/-1;margin:0;font-size:.84rem}
.sg-cur{color:var(--ink)}
.sg-cur.sg-bad{color:var(--sg-bad)}
.sg-st{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:600;padding:.1rem .55rem;border-radius:999px;white-space:nowrap;color:var(--sg-c);background:color-mix(in srgb,var(--sg-c) 13%,var(--surface))}
.sg-st::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.sg-adv summary{cursor:pointer;color:var(--muted);font-size:.85rem;font-weight:600;padding:.25rem .1rem}
.sg-adv[open] summary{margin-bottom:.4rem}
.sg-note{font-size:.85rem;color:var(--muted);margin:0}
@media (max-width:1100px){.sg-scheme{grid-template-columns:minmax(0,1fr)}.sg-pipe{height:50px}.sg-pipe__h{display:none}.sg-pipe__v{display:block}.sg-account{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:560px){.sg-col--mid,.sg-account{grid-template-columns:minmax(0,1fr)}}
@media (prefers-color-scheme:dark){.sg{--sg-ok:#5fd18f;--sg-warn:#f0b54d;--sg-bad:#ff8a7e;--sg-off:#9aa6b6}.sg-bub{color:#10151c}.sg-node:hover{box-shadow:0 6px 16px rgba(0,0,0,.35)}}
@media (prefers-reduced-motion:reduce){.sg-pipe .sg-flow{animation:none;stroke-dasharray:none}.sg-bad>.sg-bub{animation:none}.sg-node{transition:none}.sg-node:hover{transform:none}}
/* J7-35 (CAIER 27 = B ; conception § 7.1) : texte d’un devis sur mesure (paragraphes gardés tels quels, retours à la ligne compris) ; page imprimable */
.custom-text{white-space:pre-wrap;overflow-wrap:anywhere}
@media print{.custom-proposal{border:0;box-shadow:none}#custom-proposal-accept form{display:none}}
/* J7-148 (D-187) : écran de choix d'organisation, sélecteur de la barre, bandeau des assistants */
.orgpicks{display:flex;flex-direction:column;gap:10px;padding:0;list-style:none}
.orgpick{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}
.orgpick__main{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:2px}
.orgpick__main .small{overflow-wrap:anywhere}
.orgpill{display:inline-block;border-radius:999px;padding:1px 10px;font-size:.82rem;font-weight:600;border:1px solid var(--line);background:var(--bg);color:var(--ink);white-space:normal}
.orgpill--internal{background:#fff7e6;border-color:#f0c36d;color:#6b4307}
.orgpill--trial{background:#e8f0fe;border-color:#b8cdf5;color:#1a4fa8}
.orgpill--active,.orgpill--free{background:#e9f6ef;border-color:#b9e0c9;color:#1d5a3c}
.orgpill--past_due,.orgpill--read_only,.orgpill--suspended{background:#fdecea;border-color:#e5a49c;color:#8a2116}
.orgpill--cancelled,.orgpill--closing{background:#eef0f3;border-color:#cfd5dc;color:#3d4652}
.orgpicks-closed summary{cursor:pointer;font-weight:600;min-height:28px}
.orgswitch{position:relative;display:inline-block}
.orgswitch>summary{cursor:pointer;list-style:none;display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}
.orgswitch__list{position:absolute;z-index:40;left:0;top:calc(100% + 6px);min-width:280px;max-width:min(420px,92vw);margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(16,24,40,.12)}
.orgswitch__list a{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;padding:8px 10px;border-radius:8px;text-decoration:none;color:var(--ink)}
.orgswitch__list a[aria-current]{background:var(--bg)}
.orgswitch__all{padding:8px 10px;font-size:.88rem;border-top:1px solid var(--line);margin-top:4px}
.assistant-org{font-size:1.05rem;font-weight:700;background:#fff7e6;border:1px solid #f0c36d;color:#1c2430;border-radius:var(--radius);padding:10px 14px;margin:0 0 12px}
@media (prefers-color-scheme:dark){.orgpill--internal,.assistant-org{background:#3a2f14;border-color:#8a6a1f;color:#f5e6c8}.orgpill--trial{background:#16284a;border-color:#2f4f86;color:#c9dbff}.orgpill--active,.orgpill--free{background:#123222;border-color:#2b6a4a;color:#c8efd9}.orgpill--past_due,.orgpill--read_only,.orgpill--suspended{background:#3a1714;border-color:#7a2f27;color:#ffd5cf}.orgpill--cancelled,.orgpill--closing{background:#232a33;border-color:#3a4552;color:#d5dde6}}
/* J7-157 (D-195) — étiquette au libellé long (plus de 40 caractères, D-040) : retour à la ligne propre au lieu de déborder (écran de 360 px) ; coins adoucis sur plusieurs lignes */
.tag.tag--long{white-space:normal;overflow-wrap:anywhere;max-width:100%;box-sizing:border-box;border-radius:.6rem;text-align:start}
/* J7-159 (D-197) — champ couleur commun (partials/color-field) : la pastille EST le sélecteur natif ; champ « Code couleur » à côté ; 44 px au toucher */
.colorfield{display:flex;flex-direction:column;gap:.35rem}
.colorfield__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.6rem}
.colorfield__swatch{flex:none;width:44px;height:44px;padding:0;border:2px solid var(--line);border-radius:50%;background:none;cursor:pointer;overflow:hidden;-webkit-appearance:none;appearance:none}
.colorfield__swatch::-webkit-color-swatch-wrapper{padding:0}
.colorfield__swatch::-webkit-color-swatch{border:none;border-radius:50%}
.colorfield__swatch::-moz-color-swatch{border:none;border-radius:50%}
.colorfield__swatch:focus-visible{outline:3px solid var(--link);outline-offset:3px}
.colorfield__code{flex:1 1 9rem;max-width:14rem;gap:.2rem}
.colorfield__code>span{font-size:.85rem}
.colorfield__code input{min-height:44px;box-sizing:border-box;font-size:1rem}
.colorfield__code input[aria-invalid=true]{border-color:#b42318;box-shadow:0 0 0 1px #b42318}
.colorfield__help{margin:0}
.colorfield__err{margin:0;color:#b42318;font-size:.9rem;font-weight:600}
.colorfield__warn{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;font-size:.9rem;color:#7a4b00;background:#fff7e6;border:1px solid #f0c36d;border-radius:8px;padding:.45rem .6rem}
.colorfield__warn button{min-height:44px}
@media (prefers-color-scheme:dark){.colorfield__err{color:#ff9b8f}.colorfield__code input[aria-invalid=true]{border-color:#ff9b8f;box-shadow:0 0 0 1px #ff9b8f}.colorfield__warn{background:#3a2f14;border-color:#8a6a1f;color:#f5e6c8}}
.widget-host__sub{margin:-.3rem 0 .6rem;font-weight:600;color:var(--muted)}
/* J7-161 (D-199) — page « Statistiques du site vitrine » (/plateforme/statistiques) : barres en <svg> (attributs, aucun style en ligne), UNE seule couleur (var(--link) :
   #1a5dc8 sur blanc ≈ 6:1, #6ea8fe sur #171d25 en sombre ≈ 7:1), piste en var(--line) ; chiffres clés en grille qui passe à une colonne à 390 px ; liens de période
   de 44 px de haut ; tableaux dans .table-wrap (défilement) ; « Autres chiffres » repliés. */
.stats-periods{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.stats-periods .btn{min-height:44px;display:inline-flex;align-items:center}
.stats-kpis{list-style:none;margin:0 0 1rem;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem}
.stats-kpi{display:flex;flex-direction:column;gap:.2rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1rem}
.stats-kpi__label,.stats-kpi__line{font-size:.85rem;color:var(--muted)}.stats-kpi__value{font-size:1.75rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}
.stats-card__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.3rem 1rem}.stats-card__head h2{margin:0}.stats-card__aside{margin:0}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1rem;margin:1rem 0}
.stats-chart-wrap{margin:.6rem 0}
.stats-chart{display:block;width:100%;height:200px;border-bottom:1px solid var(--muted)}.stats-chart--tall{height:200px}.stats-chart--small{height:90px}
.stats-bar{fill:var(--link)}.stats-chart__hit{fill:transparent}.stats-chart g:hover .stats-bar{opacity:.75}
.stats-axis{display:flex;justify-content:space-between;margin:.2rem 0 0;font-size:.8rem;color:var(--muted)}
.stats-hbar{display:block;width:100%;min-width:4rem;height:.85rem;border-radius:4px;overflow:hidden}.stats-hbar__track{fill:var(--line)}
.stats-bars .stats-bars__bar{width:45%}
.stats-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.stats-details{margin:.6rem 0}.stats-details summary{cursor:pointer;color:var(--link);min-height:44px;display:flex;align-items:center;width:max-content;max-width:100%}
.stats-export{margin:.5rem 0 0;font-size:.9rem}
.stats-other{margin-top:1.5rem}.stats-other>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.stats-other__title{display:inline;margin:0;font-size:1.15rem}
.stats-bars tbody th{text-transform:none;letter-spacing:normal;font-size:inherit;color:var(--ink);font-weight:600}
.legal-texts__list{list-style:none;padding:0;margin:.5rem 0}.legal-texts__list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.3rem .8rem;padding:.4rem 0;border-bottom:1px solid var(--line)}
.legal-texts__name{font-weight:600;min-width:0;overflow-wrap:anywhere}.legal-texts__links{display:flex;flex-wrap:wrap;gap:.4rem}.legal-texts__links .btn{min-height:44px;display:inline-flex;align-items:center}
.legal-changes{margin:1rem 0;padding:.8rem 1rem;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.legal-changes__page h4{margin:1rem 0 .4rem;overflow-wrap:anywhere}
.legal-diff{list-style:none;padding:0;margin:.3rem 0}.legal-diff li{padding:.35rem .6rem;margin:.25rem 0;border-left:4px solid;border-radius:4px;overflow-wrap:anywhere}.legal-diff ins{text-decoration:none}.legal-diff del{text-decoration:line-through}
.legal-diff__add{background:#e8f5ee;border-color:#1a7f4b;color:#11351f}.legal-diff__del{background:#fdecea;border-color:#c0392b;color:#4a1410}
.legal-diff__label{display:inline-block;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-right:.4rem;text-decoration:none}
@media (prefers-color-scheme:dark){.legal-diff__add{background:#123524;color:#c9f0d9;border-color:#3fb37a}.legal-diff__del{background:#3d1a16;color:#f8c9c3;border-color:#e57368}}
.legal-preview__banner{margin:0 0 1rem}.legal-preview__banner p{margin:.3rem 0}.legal-preview__pages{display:flex;flex-wrap:wrap;gap:.3rem 1rem;list-style:none;padding:0}
.legal-preview{max-width:80ch;overflow-wrap:anywhere}.legal-preview table{display:block;overflow-x:auto;max-width:100%}
