:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#182338;background:#f4f6fa;font-size:16px;--blue:#245ddd;--line:#dce2ec;--muted:#66748b;--nav:#121d31}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #ecad3f;outline-offset:3px}button{border:1px solid var(--line);background:#fff;color:#25344d;border-radius:8px;padding:9px 14px;font-size:.875rem;font-weight:600}button:hover{background:#edf2fb}button.primary{background:var(--blue);color:white;border-color:var(--blue)}button.danger{color:#b02333}input,select,textarea{border:1px solid #cbd4e2;background:white;color:#192a44;border-radius:7px;padding:10px;min-width:0}input[type=checkbox]{width:17px;height:17px;accent-color:var(--blue)}textarea{resize:vertical}label{display:grid;gap:7px;font-size:.875rem;color:#4b5c74}h1,h2,h3,p{margin-top:0}h1{font-size:1.65rem;letter-spacing:-.7px;margin-bottom:8px}h2{font-size:1.1rem}h3{font-size:.95rem}p{line-height:1.6}.muted{color:var(--muted);font-size:.875rem}.small{font-size:.8rem}.eyebrow{text-transform:uppercase;letter-spacing:1.6px;font-size:.72rem;font-weight:700;color:var(--muted);margin-bottom:12px}.shell{display:grid;grid-template-columns:226px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#c6d2e5;padding:28px 18px;display:flex;flex-direction:column;gap:30px}.brand{display:flex;gap:11px;align-items:center;color:white;font-size:1.3rem;font-weight:650;padding-left:8px}.logo{width:33px;height:33px;display:grid;place-items:center;background:#4078f3;color:white;border-radius:9px;font-size:1.35rem}.brand small{font-size:.7rem;border:1px solid #43516b;color:#adbbcf;border-radius:4px;padding:3px 5px;margin-left:4px}.project{padding:15px;border:1px solid #334158;border-radius:10px;font-size:.875rem}.project small{display:block;color:#8d9bb1;margin-bottom:7px}.nav{display:grid;gap:6px}.nav button{border:0;background:transparent;color:#b8c6dd;text-align:left;padding:13px 14px;font-weight:500;display:flex;align-items:center;gap:12px}.nav button:hover{background:#202f49}.nav button.active{background:#263d67;color:#fff}.nav .symbol{font-size:1.15rem;width:22px;text-align:center}.sidebar-bottom{margin-top:auto;font-size:.78rem;line-height:1.6;color:#99a9c1;padding:12px}.sidebar-bottom strong{display:block;color:#dbe6f6;font-weight:500}.work{min-width:0}.topbar{min-height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:18px 30px;gap:15px;flex-wrap:wrap}.crumb{font-size:.875rem;color:var(--muted)}.crumb b{color:#253858;font-weight:500}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pill{font-size:.75rem;padding:5px 9px;border-radius:6px;background:#eaf0fb;color:#365b97;white-space:nowrap}.pill.private{background:#edf0ff;color:#5556a0}.pill.shared{background:#e7f3ef;color:#206c57}.pill.dirty{background:#fff3d9;color:#8c5a0b}.content{padding:30px;max-width:1600px;margin:auto}.heading{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:23px}.heading p{margin:0;max-width:700px}.card{background:white;border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:18px;box-shadow:0 2px 3px #14213d03}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.inspector .card{padding:18px}.inspector label{margin-bottom:15px}.canvas-head{padding:15px 20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.canvas-card{padding:0;overflow:hidden}.graph-scroll{overflow:auto;min-height:420px}.graph{position:relative;width:880px;height:480px;background-color:#fafcff;background-image:radial-gradient(#d6deeb 1px,transparent 1px);background-size:18px 18px}.graph svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.graph svg text{font:12px system-ui;fill:#5c6c84;paint-order:stroke;stroke:#fafcff;stroke-width:5px;stroke-linejoin:round}.state{position:absolute;width:165px;min-height:74px;background:white;border:1px solid #b8c7df;border-radius:11px;box-shadow:0 5px 15px #1834610b;padding:13px 15px;text-align:left;touch-action:none;cursor:grab;user-select:none}.state.selected{border:2px solid var(--blue);padding:12px 14px;box-shadow:0 0 0 4px #2563eb10}.state strong{display:block;font-size:.875rem;overflow-wrap:anywhere}.state small{display:block;font-size:.72rem;color:var(--muted);margin-top:8px}.state.initial:before{content:'';position:absolute;left:-5px;top:30px;width:9px;height:9px;border-radius:50%;background:var(--blue)}.graph-footer{border-top:1px solid var(--line);padding:13px 20px;display:flex;gap:18px;justify-content:space-between;color:var(--muted);font-size:.75rem}.palette{border:1px dashed #b2c0d5;border-radius:8px;padding:12px;background:#f8faff;cursor:grab;font-size:.875rem;display:flex;gap:10px;align-items:center}.notice{border:1px solid #c8d9f8;background:#eff5ff;color:#32517f;border-radius:9px;padding:13px 15px;font-size:.85rem;line-height:1.5;margin-bottom:18px}.notice.warn{border-color:#edd49c;background:#fff9ec;color:#805715}.notice code{font-size:.8rem}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.875rem}th{text-align:left;color:#6a7890;background:#f8fafd;font-weight:500;font-size:.8rem;padding:12px}td{padding:13px 12px;border-bottom:1px solid #e8edf4;vertical-align:middle}tr:last-child td{border:0}td input:not([type=checkbox]),td select{max-width:190px;width:100%;font-size:.85rem;padding:8px}td .row{gap:5px}.iconbtn{padding:6px 10px}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.tabs button.active{background:#eaf0ff;color:var(--blue);border-color:#b7cbfb}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.form-grid .full{grid-column:1/-1}.check{display:flex;align-items:center;gap:9px;margin:7px 0;font-size:.875rem}.checks{display:flex;gap:8px 15px;flex-wrap:wrap}.code{width:100%;height:520px;background:#132038;color:#dbe8fc;border:0;padding:23px;font:14px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:2;resize:vertical}.code:focus{outline-offset:-3px}.code-card{padding:0;overflow:hidden}.code-tools{padding:14px 20px;display:flex;gap:12px;align-items:center;justify-content:space-between}.stat{padding:12px;background:#f5f8fc;border-radius:8px;font-size:.85rem;line-height:1.6}.stat strong{display:block;color:#273d5e}.empty{padding:35px;text-align:center;color:var(--muted)}.page-preview{border:1px solid #ccd7e7;border-radius:9px;padding:20px;background:#f8faff}.page-preview h3{margin-bottom:15px}.preview-chip{display:inline-block;margin:4px;padding:8px 10px;background:white;border:1px solid #d4dfef;border-radius:5px;font-size:.8rem}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-intro{background:#14223c;color:white;padding:12vh 8vw;display:flex;flex-direction:column;justify-content:center}.login-intro h1{font-size:3rem;line-height:1.15;max-width:440px;margin:45px 0 24px;letter-spacing:-2px}.login-intro p{color:#b2c4e0;max-width:430px}.login-intro .row{margin-top:35px}.login-intro .pill{background:#243a5d;color:#bacded}.login-form{display:flex;align-items:center;justify-content:center;padding:30px}.login-form form{width:100%;max-width:380px}.login-form label{margin-bottom:20px}.login-form button{width:100%;margin-top:5px}.error{color:#b02333;font-size:.875rem;white-space:pre-wrap}.login .brand{padding:0}.login-hint{margin-top:25px;padding:15px;border:1px solid var(--line);border-radius:8px;font-size:.8rem;line-height:1.6;color:var(--muted)}code{font-family:ui-monospace,monospace}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:min(90vw,650px);background:#192b47;color:white;padding:14px 22px;border-radius:9px;box-shadow:0 6px 30px #0003;z-index:1000;font-size:.875rem;display:none}#toast.show{display:block}#toast.failure{background:#8c2537}dialog{border:1px solid var(--line);border-radius:15px;padding:28px;width:min(620px,92vw);max-height:90vh;color:#182338}dialog::backdrop{background:#10233a77;backdrop-filter:blur(3px)}dialog label{margin-bottom:15px}dialog .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.bottom-note{font-size:.8rem;color:var(--muted);margin-top:18px}.drag-handle{cursor:grab;color:#91a0b6}.runtime-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.matrix input{display:block;margin:auto}.matrix th:not(:first-child),.matrix td:not(:first-child){text-align:center}.status-badge{display:inline-block;padding:5px 8px;border-radius:5px;background:#edf2fb;color:#4c628a;font-size:.75rem}.state-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:15px}.permission-summary{display:grid;gap:10px}.rule{font-size:.85rem;border-left:3px solid #7899d6;padding:4px 0 4px 12px;color:#526480}.rule strong{display:block;color:#253b5c;margin-bottom:4px}
@media(min-width:1650px){.graph{width:1100px}}@media(max-width:1150px){.editor-layout{grid-template-columns:1fr}.inspector{display:grid;grid-template-columns:1fr 1fr;gap:18px}.shell{grid-template-columns:195px minmax(0,1fr)}.content{padding:22px}.topbar{padding:16px 22px}}@media(max-width:760px){.shell{display:block}.sidebar{padding:14px;gap:14px}.project,.sidebar-bottom{display:none}.nav{display:flex;overflow:auto}.nav button{white-space:nowrap;padding:10px}.nav .symbol{display:none}.brand{font-size:1.1rem}.logo{width:28px;height:28px}.topbar{padding:14px}.content{padding:18px 14px}.heading{flex-direction:column;gap:12px}.grid2,.form-grid,.inspector{grid-template-columns:1fr}.login{grid-template-columns:1fr}.login-intro{padding:35px;min-height:auto}.login-intro h1{font-size:2rem;margin:25px 0 10px}.login-intro .row{display:none}.login-form{padding:35px 25px}.toolbar .pill{display:none}.card{padding:17px}.canvas-card,.code-card{padding:0}.graph-footer{flex-wrap:wrap}.form-grid .full{grid-column:auto}}

.editor-layout>div,.inspector,.card{min-width:0}.sidebar-bottom button{font-size:.8rem}.state:focus-visible{outline:3px solid #ecad3f;outline-offset:4px}

.dev-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(270px,1fr);gap:20px}.dev-output{font:13px/1.65 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;background:#f0f4fa;border-radius:8px;padding:16px;color:#263b5a;max-height:440px;overflow:auto}.hash,.install-command{overflow-wrap:anywhere}.install-command{display:block;background:#eef3fc;padding:12px;font-size:.8rem;line-height:1.7}.dev-layout .code{height:510px}.canvas-head{flex-wrap:wrap}summary{cursor:pointer;font-size:.875rem;padding:10px 0}a{color:#245ddd}@media(max-width:1050px){.dev-layout{grid-template-columns:1fr}}

/* 0.4 : assistant et site public */
.assist-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px;align-items:start}
.assist-text{width:100%;font:15px/1.7 ui-sans-serif,system-ui,sans-serif;padding:16px;border-radius:10px;min-height:250px}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.tpl-card{display:grid;gap:6px;text-align:left;padding:14px;border-radius:10px;align-content:start;font-weight:500;line-height:1.4}
.tpl-card strong{font-size:.92rem;color:#1d2c46}.tpl-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:#eaf0fb;color:var(--blue);font-size:1rem}
.tpl-card:hover{border-color:#b7cbfb}
.phrase-list table td{vertical-align:top;font-size:.85rem;padding:9px 10px}
.report{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:8px;max-height:560px;overflow:auto}
.report li{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border-radius:8px;background:#f5f8fc;font-size:.86rem;line-height:1.5}
.report li q{display:block;color:#6a7890;font-size:.8rem;quotes:"« " " »";margin-bottom:2px;overflow-wrap:anywhere}
.report li span:last-child{overflow-wrap:anywhere}
.report-badge{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.8rem;background:#e2e8f2;color:#45587a}
.report-ok .report-badge{background:#dff3ea;color:#1c6b4f}.report-info .report-badge{background:#e6eefc;color:#2f56a6}
.report-warn{background:#fff8e8!important}.report-warn .report-badge{background:#fde7b4;color:#7c5208}
.report-ignore{background:#fdf0f1!important}.report-ignore .report-badge{background:#f8d3d8;color:#8c2537}
@media(max-width:1150px){.assist-layout{grid-template-columns:1fr}}input[type=color]{padding:4px;height:42px;width:100%;cursor:pointer}

/* 0.5 : prototype client et génération IA */
.proto-steps{display:grid;gap:0}
.proto-banner{border:1px solid #b7cbfb;background:linear-gradient(180deg,#f3f7ff,#fff)}
.proto-banner textarea{font:inherit}
#assist-ai:not(:disabled){border-color:#b7cbfb;color:var(--blue)}

/* 0.7 : modifications, certificat */
.proposal{border:1px solid var(--line);border-radius:10px;padding:16px;margin-top:10px;background:#fff}
.proposal-text{margin:12px 0;padding:10px 14px;border-left:3px solid #b7cbfb;background:#f5f8ff;font-size:.92rem;white-space:pre-wrap}
.diff-area{font-size:.78rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin:14px 0 6px}
.diff-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}.diff-list li{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;align-items:start;font-size:.88rem}
.rights-box{margin-top:14px;padding:14px;border-radius:10px;background:#f7f9fc;border:1px solid var(--line)}
.journal-item{border-top:1px solid var(--line);padding:10px 0}.journal-item summary{font-size:.86rem}
.cert-table th{font-size:.72rem;line-height:1.3;text-align:center;vertical-align:bottom}.cert-table td{text-align:center}.cert-table td:first-child,.cert-table th:first-child{text-align:left}
.cert-table .ok{color:#1c6b4f;font-weight:700}.cert-table .no{color:#a3283a;font-weight:700}
.save-preview{max-height:62vh;overflow:auto}
@media(max-width:760px){.diff-list li{grid-template-columns:1fr}}

/* Assistant : résultat juste sous la description sur écran étroit, en colonne de droite sinon */
.assist-layout{grid-template-areas:"desc res" "tpl res" "phr res";grid-auto-rows:min-content}
.assist-layout>.a-desc{grid-area:desc}.assist-layout>.a-res{grid-area:res;align-self:start;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}
.assist-layout>.a-tpl{grid-area:tpl}.assist-layout>.a-phr{grid-area:phr}
@media(max-width:1150px){.assist-layout{grid-template-areas:"desc" "res" "tpl" "phr"}.assist-layout>.a-res{position:static;max-height:none}}
@keyframes flash{from{box-shadow:0 0 0 4px #b7cbfb}to{box-shadow:0 2px 3px #14213d03}}.flash{animation:flash 1.2s ease-out}
/* 0.7.1 — résultat pleine largeur avec aperçu de l'application */
.assist-layout{grid-template-areas:"desc tpl" "res res" "phr phr"}
.assist-layout>.a-res{position:static;max-height:none;overflow:visible}
@media(max-width:1150px){.assist-layout{grid-template-areas:"desc" "res" "tpl" "phr"}}
.res-tabs{margin:14px 0 16px}.res-actions{margin-bottom:6px}
/* 0.8 — éditeur de site par glisser-déposer */
.mini{position:relative;display:block;width:92px;height:58px;border:1px solid #cdd6e4;border-radius:6px;background:#fff;overflow:hidden}
.mini b{position:absolute;left:7px;top:7px;width:20px;height:7px;border-radius:2px;background:#8aa2c8}
.drag-handle{cursor:grab;color:#8a98ad;user-select:none;padding:0 2px}
.thumb{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:7px;background:#eef2f8}.thumb.small{width:72px;height:48px;aspect-ratio:auto}
.asset{position:relative;margin:0;border:1px solid var(--line);border-radius:9px;padding:6px;cursor:grab;background:#fff}
.asset figcaption{display:grid;gap:1px;margin-top:5px;font-size:.75rem}.asset figcaption span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.iconbtn.active{background:#eaf0ff;color:var(--blue);border-color:#b7cbfb}
/* 0.9 — sécurité, pièces jointes, courriels */
.checklist{list-style:none;padding:0;margin:0;display:grid;gap:10px}.checklist li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:start}
.checklist .mark{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:#eef2f8;color:#6b7a92}.checklist li.ok .mark{background:#dff3ea;color:#1c6b4f}
.checklist strong{display:block;font-size:.9rem}.checklist code{font-size:.78rem}
.steps{padding-left:20px;display:grid;gap:14px}.qr{width:180px;margin:10px 0;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px}.qr svg{display:block;width:100%;height:auto}
.secret{letter-spacing:.06em;font-size:.82rem;word-break:break-all}
.recovery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;list-style:none;padding:0;margin:12px 0}.recovery code{font-size:.95rem;letter-spacing:.04em}
.file-field{display:grid;gap:4px}.file-field input[type=file]{padding:8px;border:1px dashed #b8c4d6;background:#fafcff}
.file-chip{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.file-preview{max-width:100%;max-height:60vh;display:block;margin:auto;border-radius:8px}
.inbox{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:6px}.inbox li{border:1px solid var(--line);border-radius:8px;padding:8px 12px}.inbox summary{cursor:pointer;display:flex;gap:10px;justify-content:space-between;flex-wrap:wrap}
.mail-body{white-space:pre-wrap;margin:8px 0 0;font-size:.85rem;color:#33435c}
.var-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 4px}.chip{padding:3px 8px;font-size:.75rem;font-weight:500;border-radius:999px;background:#f3f6fb}
.warn-text{color:#8c5a0b}.link-box{margin-top:12px}.link-input{flex:1;min-width:220px;font-size:.8rem}
.verify-result{margin-top:6px}
/* 0.10 — nature du projet, boutique */
/* 0.11 — la peau */
.inline-check{display:flex!important;align-items:center;gap:8px;grid-column:1/-1;font-weight:500}.inline-check input{width:auto}
/* 0.12 — les sections composées */
/* 0.13 — cabinet : fiche, chronologie, statistiques, recherche */
.rt-search{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.rt-search input[name=q]{flex:1;min-width:220px}
.rt-res{display:grid;gap:6px}.rt-hit{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;text-align:left;font-weight:500;padding:10px 12px}.rt-hit .muted{grid-column:2}.rt-hit mark{background:#fff1b8;color:inherit;padding:0 1px}
.fiche-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:18px;align-items:start}
@media(max-width:860px){.fiche-layout{grid-template-columns:1fr}}
.fiche-liste{position:sticky;top:12px;display:grid;gap:8px;max-height:75vh;overflow:auto}.fiche-liste ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.fiche-liste button{width:100%;text-align:left;display:grid;gap:2px;font-weight:500;border-color:transparent;background:transparent}.fiche-liste button:hover{background:#eef3fb}.fiche-liste button.active{background:#e8efff;border-color:#c9d8fb}
.fiche-detail{border:1px solid var(--line);border-radius:12px;padding:22px;background:#fff;min-height:200px}
.fiche-tete{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px}.fiche-tete h2{margin:0 0 4px;font-size:1.5rem}
.fiche-champs{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 22px;margin:0 0 10px}.fiche-champs div.large{grid-column:1/-1}
.fiche-champs dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.fiche-champs dd{margin:3px 0 0;white-space:pre-wrap}
.fiche-liees{margin-top:22px}.fiche-liees h3{margin:0}.fiche-evt{display:grid;grid-template-columns:96px 1fr;gap:14px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}.fiche-evt:hover{background:#f8fafd}
.fiche-evt p{margin:0 0 4px}.fiche-evt .muted{display:inline-block;min-width:110px}
.chrono{display:grid;gap:4px}.chrono-mois{margin:18px 0 6px;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.chrono-item{display:grid;grid-template-columns:96px 1fr auto;gap:14px;text-align:left;align-items:start;font-weight:400;padding:12px 14px}
.chrono-date{font-variant-numeric:tabular-nums;font-weight:600;color:var(--blue)}.chrono-corps{display:grid;gap:2px}.chrono-titre{font-weight:600}.chrono-ligne{color:var(--muted);font-size:.875rem}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.stat-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fff}.stat-card h3{margin:0 0 10px}
.stat-total strong{display:block;font-size:2.4rem;line-height:1.1;margin-top:6px}.stat-wide{grid-column:1/-1}
.bars{list-style:none;margin:0;padding:0;display:grid;gap:6px}.bars li{display:grid;grid-template-columns:minmax(80px,40%) 1fr auto;gap:8px;align-items:center;font-size:.85rem}.bars i{height:10px;border-radius:5px;background:var(--blue);display:block;min-width:2px}
.months{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;height:140px;align-items:end}.months div{display:grid;grid-template-rows:1fr auto auto;height:100%;text-align:center;font-size:.7rem;color:var(--muted)}
.months i{align-self:end;background:var(--blue);border-radius:4px 4px 0 0;min-height:2px}.months b{color:#182338;font-size:.75rem}
.nums{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.nums dt{font-size:.75rem;color:var(--muted)}.nums dd{margin:0;font-size:1.3rem;font-weight:600;font-variant-numeric:tabular-nums}
.synth .synth-texte{margin-top:10px;padding:12px;background:var(--q-creux,#fff);border-radius:8px;color:var(--q-texte,#182338);line-height:1.6}
/* La peau de l'application : les jetons de peau.py posés sur les écrans de l'app. */
.peau-app{--blue:var(--cs-accent);--nav:var(--cs-anchor);--line:var(--cs-line);--muted:var(--cs-muted)}
/* 0.33 — UN SEUL VOCABULAIRE. La peau (peau.py, jetons --cs-*) ne style plus les composants : elle ALIMENTE les jetons
   --q-* que lisent tous les écrans de l'application, comme la charte. Ordre : la charte (couleurs exactes) > la peau >
   les valeurs de Clair. Remplace les onze règles « .peau-app … » qui doublaient celles de la charte. */
html.peau-doc:not(.charte-app),.peau-app.peau-app-concepteur:not(.charte-app) #content:has(#runtime){--q-fond:var(--cs-bg);--q-surface:var(--cs-card);--q-texte:var(--cs-ink);
  --q-discret:var(--cs-muted);--q-ligne:var(--cs-line);--q-accent:var(--cs-accent);--q-sur-accent:var(--cs-on-accent);--q-second:var(--cs-accent);
  --q-police-titre:var(--cs-head);--q-police-texte:var(--cs-font);--q-police-chasse:var(--cs-mono);--q-titre-casse:var(--cs-head-case);
  --q-titre-graisse:var(--cs-head-weight);--q-titre-espace:var(--cs-head-spacing);--q-rayon:var(--cs-radius);--q-rayon-bouton:var(--cs-radius-btn)}
html.peau-doc.peau-sombre:not(.charte-app){--q-ok:#8fd0a8;--q-ok-doux:#1f3328;--q-attention:#e8c26a;--q-attention-doux:#3a2f15;--q-alerte:#f2948c;--q-alerte-doux:#40211e;color-scheme:dark}

[hidden]{display:none!important}

/* ── 0.14 : parcours guidé. Tout passe par les jetons --q-* : valeurs du studio par défaut, couleurs exactes de l'app si elle en déclare. ── */
:root{--q-fond:#f6f7f9;--q-surface:#fff;--q-texte:#111827;--q-discret:#566070;--q-ligne:#e2e5ea;--q-accent:#2557d6;--q-second:#1d3f9e;
  --q-police-titre:inherit;--q-police-texte:inherit;--q-police-chasse:ui-monospace,SFMono-Regular,Consolas,monospace;
  --q-ok:#2f6b4a;--q-ok-doux:#e1efe6;--q-attention:#8a5a00;--q-attention-doux:#f6ead0;--q-alerte:#a3312a;--q-alerte-doux:#f6dedb}
.charte-sombre{--q-ok:#8fd0a8;--q-ok-doux:#1f3328;--q-attention:#e8c26a;--q-attention-doux:#3a2f15;--q-alerte:#f2948c;--q-alerte-doux:#40211e;color-scheme:dark}
:root{--q-creux:color-mix(in oklab,var(--q-texte) 6%,var(--q-fond));--q-accent-doux:color-mix(in oklab,var(--q-accent) 12%,var(--q-surface));--q-second-doux:color-mix(in oklab,var(--q-second) 13%,var(--q-surface))}
.charte-app{--q-creux:color-mix(in oklab,var(--q-texte) 6%,var(--q-fond));--q-accent-doux:color-mix(in oklab,var(--q-accent) 12%,var(--q-surface));--q-second-doux:color-mix(in oklab,var(--q-second) 13%,var(--q-surface))}
.ton{display:inline-block;border-radius:999px;padding:.08rem .6rem;font-size:.78rem;font-weight:700;white-space:nowrap;background:var(--q-creux);color:var(--q-discret)}
.ton-ok{background:var(--q-ok-doux);color:var(--q-ok)}.ton-attention{background:var(--q-attention-doux);color:var(--q-attention)}.ton-alerte{background:var(--q-alerte-doux);color:var(--q-alerte)}.ton-accent{background:var(--q-accent-doux);color:var(--q-accent)}
.lib{display:grid;gap:3px}.aide{font-size:.78rem;color:var(--q-accent);font-weight:400;line-height:1.4}
.verrou-champ{display:grid;gap:6px;font-size:.875rem}.verrou{padding:9px 10px;border:1px dashed var(--q-ligne);border-radius:7px;color:var(--q-discret);background:var(--q-creux)}
.texte-long{white-space:pre-line}
.prochaine{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;justify-content:space-between;background:var(--q-accent-doux);border-radius:8px;padding:12px 16px;margin:14px 0 10px}
.prochaine .eyebrow{margin:0 0 2px}.prochaine b{font-size:1.02rem}
.manque{margin:.35rem 0 0;padding-left:1.1rem;font-size:.85rem;color:var(--q-alerte)}
button.second{background:var(--q-second);border-color:var(--q-second);color:var(--q-fond);font-weight:700}
ol.etapes14{list-style:none;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px}
ol.etapes14 li{display:grid;gap:2px;padding:.55rem .7rem;border-radius:6px;border:1px solid var(--q-ligne);background:var(--q-surface)}
ol.etapes14 li.actuelle{border-color:var(--q-accent);background:var(--q-accent-doux)}ol.etapes14 li.faite .n{color:var(--q-ok)}
ol.etapes14 .n{font-family:var(--q-police-chasse);font-size:.72rem;color:var(--q-discret)}ol.etapes14 .t{font-weight:700;font-size:.9rem;line-height:1.2}
.transitions14{margin-bottom:12px}
.grps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0;border:1px solid var(--q-ligne);border-radius:8px;overflow:hidden;background:var(--q-surface);margin:12px 0}
.grps>.grp{border:0;border-radius:0;margin:0;border-right:1px solid var(--q-ligne);border-bottom:1px solid var(--q-ligne)}
.grp{padding:14px 16px;display:grid;gap:8px;align-content:start;background:var(--q-surface);border:1px solid var(--q-ligne);border-radius:8px;margin:12px 0}
.grp.avant{grid-column:1/-1;background:var(--q-second-doux)}
.grp .k{font-family:var(--q-police-chasse);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--q-discret);font-weight:500;margin:0}
.grp .fiche-champs{margin:0}.grp-form .form-grid{grid-template-columns:1fr}.grp-form textarea,.grp-form input{width:100%}
.histo ol{margin:0;padding-left:1.1rem;display:grid;gap:.45rem;font-size:.85rem}
.chaine{display:grid;gap:8px;margin-top:8px}
.maillon{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:start;padding:.6rem .7rem;border:1px solid var(--q-ligne);border-radius:6px;background:var(--q-surface);cursor:pointer}
.maillon .dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.8rem;background:var(--q-creux);color:var(--q-discret)}
.maillon .dot.ton-ok{background:var(--q-ok-doux);color:var(--q-ok)}.maillon .dot.ton-alerte{background:var(--q-alerte-doux);color:var(--q-alerte)}.maillon .dot.ton-attention{background:var(--q-attention-doux);color:var(--q-attention)}
.legende14{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:.82rem;margin-bottom:12px;align-items:center}.legende14>span{display:inline-flex;gap:6px;align-items:center}
.legende14 i.cellule14{min-width:16px;height:16px;padding:0;display:inline-block}
.grille14{display:grid;gap:4px}.crit14{display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr);gap:10px;align-items:start;padding:8px 0;border-top:1px solid var(--q-ligne)}
.cellules14{display:flex;flex-wrap:wrap;gap:6px}
.cellule14{min-width:46px;padding:.35rem .4rem;border-radius:6px;border:1px solid var(--q-ligne);text-align:center;font-family:var(--q-police-chasse);font-size:.8rem;background:var(--q-surface);color:var(--q-texte);font-weight:500}
.cellule14.ton-ok{background:var(--q-ok-doux);border-color:var(--q-ok)}.cellule14.ton-alerte{background:var(--q-alerte-doux);border-color:var(--q-alerte)}.cellule14.ton-attention{background:var(--q-attention-doux);border-color:var(--q-attention)}
.cellule14.ton-neutre{background:var(--q-surface)}.etoile{color:var(--q-second);margin-right:2px}
.etapes .form-grid{grid-template-columns:1fr;gap:0}
.etapes .form-grid>div{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px;padding:10px 0;border-top:1px solid var(--q-ligne);align-items:start}
.etapes .form-grid>div>label{display:contents}.etapes .lib{font-weight:700;font-size:.9rem;color:var(--q-texte)}
ol.onb14{list-style:none;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}
ol.onb14 button{width:100%;text-align:left;font-weight:500;font-size:.82rem;background:var(--q-surface);border-color:var(--q-ligne);color:var(--q-texte)}
ol.onb14 li.actuelle button{border-color:var(--q-accent);background:var(--q-accent-doux)}ol.onb14 li.faite button{color:var(--q-discret)}
ol.onb14 .n{font-family:var(--q-police-chasse)}
.cartes14{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.src14{display:grid;gap:4px;padding:.7rem .8rem;border:1px solid var(--q-ligne);border-radius:6px;background:var(--q-surface)}.src14 b{font-size:1.4rem;font-family:var(--q-police-titre)}
.fiche-seule{grid-template-columns:1fr!important}.fiche-seule>.fiche-liste{display:none}
dialog.large{width:min(980px,95vw)}
@media(max-width:760px){.etapes .form-grid>div,.crit14{grid-template-columns:1fr}.maillon{grid-template-columns:28px minmax(0,1fr)}.maillon>.row{grid-column:2}}

/* 0.33 : ces règles sont des DÉFAUTS du cadre (:where, spécificité nulle) : un composant qui déclare son style l'emporte.
   Avant, leur identifiant (#content) écrasait chaque composant (les onglets d'état devenaient des boîtes). */
/* La charte de l'application posée sur ses écrans (personnes qui utilisent l'application ; l'aperçu du concepteur aussi). */
.charte-app,.q-app,#content:has(#runtime){--blue:var(--q-accent);--line:var(--q-ligne);--muted:var(--q-discret)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog){background:var(--q-fond);color:var(--q-texte);font-family:var(--q-police-texte);font-size:16px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(h1,h2,h3){font-family:var(--q-police-titre);color:var(--q-texte);letter-spacing:0}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) h2{font-size:1.3rem}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(.card,.fiche-detail,.stat-card,.fiche-liste){background:var(--q-surface);border-color:var(--q-ligne);border-radius:8px;box-shadow:none}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button{background:var(--q-surface);border-color:var(--q-ligne);color:var(--q-texte);border-radius:6px;font-weight:500}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button:hover{border-color:var(--q-accent)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.primary{background:var(--q-accent);border-color:var(--q-accent);color:var(--q-fond);font-weight:700}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.second{background:var(--q-second);border-color:var(--q-second);color:var(--q-fond);font-weight:700}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(input,select,textarea){background:var(--q-surface);color:var(--q-texte);border-color:var(--q-ligne);border-radius:6px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(.muted,.small.muted,th){color:var(--q-discret)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) td{border-color:var(--q-ligne)}:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) th{background:transparent;font-size:.8rem;letter-spacing:0;text-transform:none;font-weight:600}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .tabs{gap:.25rem;border-bottom:1px solid var(--q-ligne);margin-bottom:16px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .tabs button{border:0;background:none;border-bottom:2px solid transparent;border-radius:0;padding:.45rem .65rem;color:var(--q-discret)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .tabs button.active{color:var(--q-texte);border-bottom-color:var(--q-second);background:none}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .fiche-liste button.active{background:var(--q-accent-doux);border-color:var(--q-accent)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(.chrono-date,a){color:var(--q-accent)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .eyebrow{color:var(--q-discret);font-family:var(--q-police-texte)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .notice{background:var(--q-accent-doux);border-color:transparent;color:var(--q-texte)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .fiche-tete{border-color:var(--q-ligne)}
html:has(.q-app) #toast,.charte-app #toast{background:var(--q-texte);color:var(--q-fond)}
html:has(.q-app) dialog,.charte-app dialog{background:var(--q-surface);color:var(--q-texte);font-family:var(--q-police-texte)}
.liee-compacte{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--q-ligne)}
.q-app:not(.recherche-ouverte) #rt-search{display:none}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .cellule14{font-family:var(--q-police-chasse);font-weight:500;border-radius:6px;min-width:46px;padding:.35rem .4rem}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .cellule14.ton-ok{background:var(--q-ok-doux);border-color:var(--q-ok)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .cellule14.ton-alerte{background:var(--q-alerte-doux);border-color:var(--q-alerte)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .cellule14.ton-attention{background:var(--q-attention-doux);border-color:var(--q-attention)}
.cellule14.na,.cellule14.ton-neutre.na{color:var(--q-discret)}
.ton-exclu{background:repeating-linear-gradient(45deg,var(--q-creux),var(--q-creux) 4px,transparent 4px,transparent 8px);color:var(--q-discret)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .cellule14.ton-exclu,.cellule14.ton-exclu{background:repeating-linear-gradient(45deg,var(--q-creux),var(--q-creux) 4px,var(--q-surface) 4px,var(--q-surface) 8px);color:var(--q-discret)}
.grps{grid-template-columns:repeat(var(--n,2),minmax(0,1fr))}
@media(max-width:760px){.grps{grid-template-columns:1fr}}

/* ── 0.15 : composants métier ── */
.num{text-align:right;font-variant-numeric:tabular-nums}
.montant15{display:flex;align-items:stretch}.montant15 input{flex:1;text-align:right;font-variant-numeric:tabular-nums;border-top-right-radius:0;border-bottom-right-radius:0;min-width:0}
.montant15 .devise{display:grid;place-items:center;padding:0 10px;border:1px solid var(--q-ligne);border-left:0;border-radius:0 7px 7px 0;background:var(--q-creux);color:var(--q-discret);font-size:.85rem}
.combo15{position:relative;display:flex}.combo15 .combo-saisie{flex:1;min-width:0;padding-right:28px}
.combo15 .combo-vider{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:0;background:none;padding:2px 6px;color:var(--q-discret)}
.combo-liste{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;max-height:260px;overflow:auto;margin:0;padding:4px;list-style:none;background:var(--q-surface);border:1px solid var(--q-ligne);border-radius:8px;box-shadow:0 8px 24px #0002}
.combo-liste li{display:grid;gap:1px;padding:7px 9px;border-radius:6px;cursor:pointer;font-size:.9rem}.combo-liste li.actif,.combo-liste li:hover{background:var(--q-accent-doux)}
.err15{display:block;color:var(--q-alerte);font-size:.8rem;margin-top:4px;min-height:0}.en-erreur :is(input,select,textarea){border-color:var(--q-alerte)!important;box-shadow:0 0 0 2px var(--q-alerte-doux)}
.prerempli{background:var(--q-accent-doux)!important;transition:background .6s}
.fm-calc{margin-top:14px;padding:12px 14px;border-radius:8px;background:var(--q-second-doux)}.fm-calc dl{display:flex;flex-wrap:wrap;gap:10px 26px;margin:6px 0 0}.fm-calc dt{font-size:.75rem;color:var(--q-discret)}.fm-calc dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}
.fm-etat{margin-top:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.diff15{width:100%;border-collapse:collapse;font-size:.88rem;margin:8px 0}.diff15 td,.diff15 th{padding:6px 8px;border-bottom:1px solid var(--q-ligne);vertical-align:top;text-align:left}
del{background:var(--q-alerte-doux);color:var(--q-alerte);text-decoration:line-through;border-radius:3px;padding:0 2px}ins{background:var(--q-ok-doux);color:var(--q-ok);text-decoration:none;border-radius:3px;padding:0 2px}
.mots15{line-height:1.7}
.tab15-barre{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.tab15-barre #tab15-q{flex:1;min-width:200px}.tab15-barre button.actif{border-color:var(--q-accent);color:var(--q-accent)}
.tab15-filtres{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;padding:12px;border:1px solid var(--q-ligne);border-radius:8px;margin-bottom:10px;background:var(--q-creux)}
.tab15-filtres label{margin:0;font-size:.8rem}.f-borne{display:flex;gap:4px}.f-borne input{min-width:0}
.tab15-lot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 12px;border-radius:8px;background:var(--q-accent-doux);margin-bottom:10px}
table.tab15 th{white-space:nowrap}table.tab15 .tri{border:0;background:none;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer}
table.tab15 .sel{width:34px}table.tab15 tbody tr{cursor:pointer}table.tab15 tbody tr:hover{background:var(--q-creux)}table.tab15 tr.choisi{background:var(--q-accent-doux)}
.tab15-pages{display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}.tab15-pages label{display:flex;gap:6px;align-items:center;margin:0}
.refus15{display:grid;gap:6px;padding-left:1.1rem}
table.lignes15{font-size:.88rem}table.lignes15 td{padding:4px 5px;vertical-align:middle}table.lignes15 input{width:100%;min-width:60px;padding:6px 7px;font-size:.88rem}
table.lignes15 td:nth-child(3) input{min-width:180px}table.lignes15 .combo15{min-width:170px}
table.lignes15 .pos{white-space:nowrap;color:var(--q-discret);font-family:var(--q-police-chasse);font-size:.78rem}.deplacer{display:inline-flex;gap:2px;margin-left:6px}
button.mini{padding:2px 6px;font-size:.75rem;line-height:1.2}tr.ligne-erreur{outline:2px solid var(--q-alerte);outline-offset:-2px}
.totaux15{display:grid;justify-content:end;gap:4px;margin-top:12px}.totaux15>div{display:grid;grid-template-columns:150px 140px;gap:4px 14px;align-items:baseline;text-align:right}
.totaux15 b{font-variant-numeric:tabular-nums}.totaux15 .final{border-top:2px solid var(--q-texte);padding-top:6px;font-size:1.08rem}
.ventil{grid-column:1/-1;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;font-size:.78rem;color:var(--q-discret)}.fiche-champs .ventil{justify-content:flex-start;margin-top:3px}
details.schema15{margin:0 0 12px}details.schema15 summary{font-size:.85rem;color:var(--q-accent)}
svg.schema15{width:100%;max-height:340px;background:var(--q-surface);border:1px solid var(--q-ligne);border-radius:8px;margin-top:8px}
.et15 rect{fill:var(--q-surface);stroke:var(--q-ligne);stroke-width:1.5}.et15 text{font-size:13px;fill:var(--q-texte);font-weight:600}
.et15.vu rect{fill:var(--q-creux)}.et15.actuel rect{fill:var(--q-accent-doux);stroke:var(--q-accent);stroke-width:2.5}
.tr15 path{fill:none;stroke:var(--q-ligne);stroke-width:1.5}.tr15 text{font-size:11px;fill:var(--q-discret);text-anchor:middle}#fl15 path{fill:var(--q-discret)}
.tr15.ouverte path{stroke:var(--q-accent);stroke-width:2.5}.tr15.ouverte text{fill:var(--q-accent);font-weight:700;cursor:pointer}.tr15.ouverte{cursor:pointer}
.tr15.fermee path{stroke:var(--q-attention);stroke-dasharray:5 4;stroke-width:2}.tr15.fermee text{fill:var(--q-attention)}
.cle15{display:inline-block;width:22px;height:0;border-top:3px solid var(--q-accent);vertical-align:middle}.cle15.fermee{border-top:3px dashed var(--q-attention)}
.v15-choix label{margin:0;min-width:240px}
@media(max-width:760px){.totaux15>div{grid-template-columns:1fr auto}.tab15-pages{justify-content:flex-start}}
.fiche-layout{align-items:start}
.f-borne input{width:50%}
:where(.q-app,#content:has(#runtime)) button.mini,button.mini{padding:1px 5px;font-size:.72rem;line-height:1.2;min-width:0}
table.lignes15 .deplacer{display:inline-flex;flex-direction:column;gap:1px;vertical-align:middle}
table.lignes15 td:nth-child(2){min-width:150px}table.lignes15 td:nth-child(3) input{min-width:160px}table.lignes15 input.num{min-width:70px;max-width:110px}
table.lignes15 .deplacer{display:inline-flex;flex-direction:column;gap:2px;height:auto;align-items:stretch}
:where(.q-app,#content:has(#runtime)) table.lignes15 button.mini,table.lignes15 button.mini{height:20px;width:24px;padding:0;font-size:.7rem;display:grid;place-items:center}
table.lignes15 td:nth-child(3) input{min-width:130px}
table.lignes15 input.num{min-width:88px}
/* ── 0.16 : gestion — contrôles, synthèse par état, onglets, export, pièce à côté des champs, visionneuse ── */
.fm16{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:20px;align-items:start}
.piece16{position:sticky;top:0;display:grid;gap:12px}.piece16-bloc{display:grid;gap:8px;padding:14px;border:1px dashed var(--q-ligne);border-radius:10px;background:var(--q-creux)}
.apercu16{display:grid;place-items:center;gap:6px;min-height:150px;padding:10px;border-radius:8px;background:var(--q-surface);text-align:center}
.apercu16 img{max-width:100%;max-height:340px;border-radius:4px;box-shadow:0 2px 10px #0002;transform:rotate(-1deg)}
.pdf16{display:grid;place-items:center;width:64px;height:80px;border-radius:6px;background:var(--q-alerte-doux);color:var(--q-alerte);font-weight:800;letter-spacing:.06em}
.piece16 .file-field{display:grid;gap:4px}.piece16 .verrou-champ{margin:0}
.fm16-page{max-width:980px}.fm16-page .actions{display:flex;gap:10px;justify-content:flex-start;margin-top:16px;flex-wrap:wrap}
.notice.ok16{background:var(--q-ok-doux);border-color:var(--q-ok);color:var(--q-texte)}
.aide16{margin:6px 0 0}table.lignes15 tbody tr[data-i]{cursor:pointer}table.lignes15 tr.vue16{background:var(--q-accent-doux)}
table.lignes15 select{width:100%;min-width:120px;padding:5px 6px;font-size:.86rem}table.lignes15 input[type=date]{min-width:130px}
.vision16:not(:empty){margin-top:12px;padding:14px;border:1px solid var(--q-ligne);border-radius:10px;background:var(--q-surface)}
.vision16 h4{margin:0;font-size:.95rem}.vision16-corps{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:16px;margin-top:10px;align-items:start}
.bouton16{display:inline-block;padding:6px 12px;border:1px solid var(--q-ligne);border-radius:7px;background:var(--q-surface);font-size:.85rem;cursor:pointer;text-align:center}
.bouton16:hover{border-color:var(--q-accent);color:var(--q-accent)}
@media(max-width:760px){.fm16,.vision16-corps{grid-template-columns:1fr}.piece16{position:static}}
.voir16{display:inline-flex;gap:5px;align-items:center;border:1px solid var(--q-ligne);background:var(--q-surface);border-radius:999px;padding:2px 8px;font-size:.8rem;cursor:pointer;white-space:nowrap}
.voir16:hover{border-color:var(--q-accent)}.voir16 .sans16{color:var(--q-alerte);font-size:.74rem}.voir16 .ok16{color:var(--q-ok);font-weight:800}
:where(.q-app,#content:has(#runtime)) .vision16 #v16-fermer,.vision16 #v16-fermer{width:auto;height:auto;min-width:0;padding:2px 9px}
:where(.q-app,#content:has(#runtime)) .voir16,.voir16{min-height:0;height:auto}
/* ── 0.16 : modifier là où l'on regarde ── */
.concepteur16{border:1.5px dashed var(--q-accent,#2f6b4f)!important;background:transparent!important;color:var(--q-accent,#2f6b4f)!important;font-weight:600;border-radius:8px;padding:5px 11px;font-size:.84rem;white-space:nowrap;cursor:pointer}
.concepteur16:hover{background:var(--q-accent-doux,#e6efe9)!important}
.tabs .concepteur16{margin-left:8px;align-self:center}th.ajout16{width:1%;text-align:right}
.mode16{margin:0 0 10px;padding:8px 12px;border-radius:8px;background:#fff8e6;color:#5e430a;font-size:.84rem;border:1px solid #ecd28e}
.mod16{margin-bottom:18px;display:grid;gap:10px}.mod16-onglets{display:flex;gap:4px;padding:4px;border-radius:10px;background:#eef1f6;width:fit-content;flex-wrap:wrap}
.mod16-onglets button{border:0;background:none;padding:8px 16px;border-radius:7px;font-weight:600;color:#4b5c74;cursor:pointer}.mod16-onglets button.actif{background:#fff;color:#14213d;box-shadow:0 1px 3px #0002}
.mod16-sous{display:flex;gap:6px;flex-wrap:wrap}.mod16-sous button{padding:5px 12px;border-radius:999px;font-size:.85rem}.mod16-sous button.actif{border-color:#245ddd;color:#245ddd;background:#eef3ff}
.mod16 p{margin:0}.lien16{border:0;background:none;padding:0;color:#245ddd;text-decoration:underline;cursor:pointer;font:inherit}
.q16{display:grid;gap:12px}.q16 label{display:grid;gap:4px;margin:0}.q16 [hidden]{display:none!important}.check16{display:flex!important;gap:8px;align-items:center;grid-template-columns:none}
.cols16{border:1px solid #dfe5ee;border-radius:8px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px 16px;margin:0}.cols16 legend{font-size:.85rem;padding:0 4px}.row16{display:grid;grid-template-columns:1fr 1fr;gap:10px}

.ctl16{width:1%;white-space:nowrap;text-align:center}
/* ── 0.18 : la peau du studio — une seule couleur d'action (0.36 : fond neutre, titres Inter Tight). Les applications gardent leur charte. ── */
/* 0.36 : la peau du studio suit la même grammaire que les applications (fond neutre, une sans empattements) ; elle remplace
   le papier crème et les titres Fraunces de 0.18. */
:root{--st-fond:#f6f7f9;--st-surface:#ffffff;--st-encre:#111827;--st-discret:#566070;--st-ligne:#e2e5ea;--st-accent:#2557d6;--st-accent-doux:#e9effc;--st-chaud:#b23d0b;--st-titre:"Inter Tight Variable","Inter Variable",Inter,ui-sans-serif,system-ui,sans-serif;--st-texte:"Inter Variable",Inter,ui-sans-serif,system-ui,sans-serif}
html.studio18 body,.login{background:var(--st-fond);color:var(--st-encre);font-family:var(--st-texte)}
.shell{background:var(--st-fond);grid-template-columns:236px minmax(0,1fr)}
.shell .sidebar{background:var(--st-surface);color:var(--st-discret);border-right:1px solid var(--st-ligne);padding:26px 16px;gap:24px}
.shell .brand,.login .brand{color:var(--st-encre);font-family:var(--st-titre);font-weight:650;font-size:1.45rem;letter-spacing:-.01em}
.shell .logo,.login .logo{background:var(--st-encre);color:var(--st-fond);border-radius:8px;font-family:var(--st-titre);font-size:1.2rem}
.shell .brand small,.login .brand small{font-family:var(--st-texte);border-color:var(--st-ligne);color:var(--st-discret);letter-spacing:.06em}
.shell .project{border:0;background:var(--st-fond);border-radius:10px;color:var(--st-encre);font-weight:600}
.shell .project small{color:var(--st-discret);letter-spacing:.08em;font-weight:500}
.shell .nav{gap:2px}.shell .nav button{color:var(--st-discret);padding:10px 12px;border-radius:8px;font-weight:550;position:relative}
.shell .nav button:hover{background:var(--st-fond);color:var(--st-encre)}
.shell .nav button.active{background:var(--st-accent-doux);color:var(--st-accent)}
.shell .nav button.active::before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--st-accent)}
.shell .nav .symbol{color:inherit;opacity:.8}
.shell .sidebar-bottom{color:var(--st-discret);border-top:1px solid var(--st-ligne);padding:14px 4px 0}.shell .sidebar-bottom strong{color:var(--st-encre)}
.shell .topbar{background:var(--st-surface);border-bottom:1px solid var(--st-ligne);min-height:64px;padding:12px 30px}
.shell .crumb{color:var(--st-discret)}.shell .crumb b{color:var(--st-encre);font-weight:600}
.shell .content{padding:34px 36px}
.shell .heading h1,.shell .content>h1,.shell .card h2,.shell .exemples18 h1{font-family:var(--st-titre);font-weight:620;letter-spacing:-.015em;color:var(--st-encre)}
.shell .heading h1{font-size:2.1rem;margin-bottom:6px}.shell .heading p{color:var(--st-discret)}
.shell .card{background:var(--st-surface);border:1px solid var(--st-ligne);border-radius:14px;box-shadow:0 1px 0 #00000005,0 8px 24px -18px #1b223040}
.shell .card h2{font-size:1.25rem}
.shell .topbar button,.shell .sidebar button,.shell #content:not(:has(#runtime)) button{border-color:var(--st-ligne);color:var(--st-encre);background:var(--st-surface);border-radius:9px}
.shell .topbar button:hover,.shell #content:not(:has(#runtime)) button:hover{background:var(--st-fond)}
.shell .topbar button.primary,.shell #content:not(:has(#runtime)) button.primary{background:var(--st-accent);border-color:var(--st-accent);color:#fff}
.shell .topbar button.primary:hover,.shell #content:not(:has(#runtime)) button.primary:hover{background:#1f3a7a}
.shell #content:not(:has(#runtime)) :is(input,select,textarea){border-color:#d6d1c5;background:#fff;border-radius:9px}
.shell #content:not(:has(#runtime)) :is(input,select,textarea):focus{border-color:var(--st-accent);outline:2px solid var(--st-accent-doux)}
.shell .pill{background:var(--st-accent-doux);color:var(--st-accent);border-radius:999px}.shell .pill.dirty{background:#fbecd9;color:#8a4a12}.shell .pill.shared{background:#e5f1ea;color:#23674a}
.shell .notice{background:#eef1f8;border-color:#d5dcee;color:#2b3a5e;border-radius:10px}.shell .notice.warn{background:#fdf4e4;border-color:#efd7a8;color:#7b5112}
.shell th{background:transparent;color:var(--st-discret);border-bottom:1px solid var(--st-ligne)}.shell td{border-bottom-color:#eeebe3}
.shell .tpl-card{background:var(--st-surface);border-color:var(--st-ligne)}.shell .tpl-card:hover{border-color:var(--st-accent);box-shadow:0 6px 18px -12px #27458f60}
.shell .tpl-icon{background:var(--st-accent-doux);color:var(--st-accent)}.shell .tpl-card strong{color:var(--st-encre)}
.shell .mod16-onglets{background:#ebe7de}.shell .mod16-onglets button.actif{color:var(--st-encre)}.shell .lien16{color:var(--st-accent)}
.shell .mode16{background:#fbf3df;border-color:#ecd9aa}
/* connexion */
.login{grid-template-columns:minmax(320px,.9fr) minmax(0,1.25fr)}
.login-intro{background:var(--st-encre);color:#f5f3ee;padding:10vh 6vw}
.login-intro .brand{color:#f5f3ee}.login-intro .logo{background:#f5f3ee;color:var(--st-encre)}.login-intro .brand small{color:#c9c6bd;border-color:#3b4354}
.login-intro h1{font-family:var(--st-titre);font-weight:600;letter-spacing:-.02em;font-size:clamp(2.2rem,1.4rem + 2.6vw,3.4rem)}
.login-intro p{color:#cfd3dc}.login-intro .pill{background:#2a3242;color:#e6e3da;border-radius:999px}
.login-form{background:var(--st-fond);align-items:flex-start;padding:7vh 5vw}.login-form h1{font-family:var(--st-titre);font-weight:620;letter-spacing:-.015em}
.login-form button.primary{background:var(--st-accent);border-color:var(--st-accent)}
.login-form.avec-exemples{display:block}.exemples18{max-width:880px}.exemples18 h1{font-size:2rem;margin:4px 0 6px}.exemples18>p{max-width:640px}
.ex18-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:20px 0 22px}
.ex18{display:grid;gap:14px;align-content:space-between;background:var(--st-surface);border:1px solid var(--st-ligne);border-radius:14px;padding:18px;box-shadow:0 8px 24px -20px #1b223050}
.ex18-tete{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.ex18-icone{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--st-accent-doux);color:var(--st-accent);font-size:1.15rem}
.ex18 h2{font-family:var(--st-titre);font-size:1.15rem;margin:0 0 4px;font-weight:620}.ex18 p{margin:0;font-size:.86rem;color:var(--st-discret);line-height:1.45}
.ex18-roles{display:flex;flex-wrap:wrap;gap:6px}.ex18-roles button{padding:6px 11px;font-size:.82rem;border-radius:999px;border-color:var(--st-ligne);background:#fff}
.ex18-roles button:hover{border-color:var(--st-accent);color:var(--st-accent);background:#fff}
.ex18-roles .ex18-concepteur{border-style:dashed;color:var(--st-accent)}
.ex18-compte{border-top:1px solid var(--st-ligne);padding-top:14px;max-width:420px}.ex18-compte summary{cursor:pointer;color:var(--st-discret);font-size:.9rem;margin-bottom:14px}
.ex18-compte form{max-width:380px}
@media(max-width:900px){.login{grid-template-columns:1fr}.login-intro{padding:40px 24px}.login-form{padding:28px 16px}}

/* 0.21 : l’essai de l’application générée */
.essai-barre{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:14px 0 10px}.essai-barre label{display:flex;gap:8px;align-items:center;font-weight:600}.essai-barre select{width:auto}
.essai-cadre{display:block;width:100%;height:720px;border:1px solid var(--line,#d9dee7);border-radius:12px;background:#fff}
.essai-attente{padding:40px 0;text-align:center}
html.essai #logout{display:none}
.essai-avant{margin-top:14px}.essai-avant .essai-cadre{height:640px}
/* 0.24 : « Vouliez-vous dire ? » */
.vouliez24{border-left:4px solid var(--st-accent,#245ddd)}.vouliez24 h2{margin-top:0}.vouliez24-phrase{padding:8px 0;border-top:1px solid #e6e2d8}.vouliez24-phrase:first-of-type{border-top:0}
.vouliez24 ul{list-style:none;margin:6px 0;padding:0;display:grid;gap:6px}.vouliez24 li{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:#faf8f3;border-radius:8px;padding:8px 10px}
.vouliez24 li span{flex:1 1 260px}
/* 0.27 : l'atelier */
.atelier27-regles pre{white-space:pre-wrap;font:inherit;font-size:.9rem;margin:0}.atelier27-etapes{list-style:none;padding:0;display:grid;gap:6px}
.atelier27-etapes>li{padding:8px 10px;border-radius:8px;background:#f2f7f1}.atelier27-etapes>li.ko{background:#fbefed}.atelier27-code{max-height:320px;overflow:auto;font-size:.75rem;background:#f6f4ef;padding:8px;border-radius:6px}
.atelier27-couv{list-style:none;padding:0;display:grid;gap:4px}
/* 0.28 — l'assistant documentaire */
.assistant28{display:grid;gap:14px;max-width:860px}.fil28{display:grid;gap:10px}
.q28{justify-self:end;max-width:80%;background:var(--blue);color:#fff;padding:9px 14px;border-radius:14px 14px 4px 14px;white-space:pre-wrap}
.r28{justify-self:start;max-width:94%;border:1px solid var(--line);border-radius:14px 14px 14px 4px;padding:12px 16px;background:#fff}
.r28 .texte28{line-height:1.55}.attente28{color:var(--muted);font-style:italic}
.renvoi28{display:inline-block;min-width:1.5em;padding:0 5px;margin:0 1px;font-size:.72rem;line-height:1.4;vertical-align:super;border-radius:8px;border:1px solid var(--line);background:transparent;cursor:pointer;font-weight:600}
.sources28{margin-top:10px}.sources28 summary{cursor:pointer;font-weight:600;font-size:.9rem}.sources28 ol{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px}
.sources28 li{border-left:3px solid var(--line);padding:6px 10px;transition:background .3s}.sources28 li.vise28{background:#eaf0ff;border-left-color:var(--blue)}
.sources28 blockquote{margin:6px 0;font-size:.88rem;color:var(--muted);white-space:pre-wrap}
.form28{display:grid;gap:8px}.form28 textarea{width:100%;resize:vertical}.warn28{background:#fff3cd;color:#6b4e00}

/* 0.29 — une demande à préciser */
.preciser29{margin-top:14px}.preciser29 h3{margin-bottom:8px}.phrase29 q{font-weight:600}.tpl-mini{display:inline-flex;gap:8px;align-items:baseline}
.relecture29 .notice{margin:0 0 14px}.relecture29-liste{margin:8px 0 0;padding-left:18px;display:grid;gap:6px}

/* 0.30 — le pilotage : conversation à gauche, application à droite */
.shell.pilotage30{grid-template-columns:68px minmax(0,1fr)}
.pilotage30 .sidebar{padding:18px 10px;gap:18px;align-items:center}
.pilotage30 .brand{padding:0;font-size:0;gap:0}.pilotage30 .brand small,.pilotage30 .project,.pilotage30 .sidebar-bottom strong,.pilotage30 .sidebar-bottom{display:none}
.pilotage30 .nav{gap:4px}.pilotage30 .nav button{font-size:0;padding:12px;justify-content:center;border-radius:10px}.pilotage30 .nav .symbol{font-size:1.15rem;margin:0}
.pilotage30 .topbar{display:none}.pilotage30 .content{padding:0;max-width:none}
.pil30{--haut30:0px;display:grid;grid-template-columns:minmax(380px,460px) minmax(0,1fr);height:calc(100dvh - var(--haut30));min-height:520px;background:#eef3fa}
.pil30-chat{display:flex;flex-direction:column;min-height:0;background:#fff;border-right:1px solid var(--line)}
.pil30-tete{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.pil30-tete strong{display:block;font-size:.95rem}.pil30-tete small{display:block;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.pil30-tete .pil30-mini{margin-left:auto}
.pil30-marque{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#e8efff;color:var(--blue);font-size:1.05rem}
.pil30-mini{padding:6px 11px;font-size:.78rem;border-radius:999px;font-weight:600}
.pil30-fil{flex:1;overflow:auto;padding:18px 18px 8px;display:grid;align-content:start;gap:14px;scroll-behavior:smooth}
.pil30-tour{display:grid;gap:8px}
.pil30-moi{display:flex;justify-content:flex-end}.pil30-lui{display:flex;justify-content:flex-start}
.pil30-bulle{border-radius:16px;padding:11px 14px;font-size:.88rem;line-height:1.5;max-width:94%}
.pil30-moi .pil30-bulle{background:#f2f6ff;border:1px solid #c9d8fb;max-width:88%;white-space:pre-wrap;box-shadow:0 6px 18px #245ddd14}
.pil30-lui .pil30-bulle{background:#f7f9fc;border:1px solid var(--line)}
.pil30-bulle p{margin:0 0 6px}.pil30-bulle p:last-child{margin-bottom:0}.pil30-bulle details{margin-top:6px}.pil30-bulle details ul{margin:6px 0 0;padding-left:18px}
.pil30-systeme{color:var(--muted);font-style:italic;background:transparent!important;border-style:dashed!important}
.pil30-par{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.pil30-changes{margin:4px 0 6px;padding-left:18px;display:grid;gap:3px}
.pil30-non{color:#8c5a0b}
.pil30-annule{opacity:.55}.pil30-annule .pil30-changes{text-decoration:line-through}
.pil30-actions{margin-top:8px;display:flex;gap:8px}
.pil30-relu{font-size:.82rem;color:#206c57;font-weight:600;margin-top:8px!important}
.pil30-relit{display:flex;gap:8px;align-items:center;font-size:.82rem;color:var(--muted);margin-top:8px!important}
.pil30-relu-bloc{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.pil30-puces{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.pil30-puce{border-radius:999px;padding:6px 12px;font-size:.8rem;font-weight:500;text-align:left;background:#fff}
.pil30-puce:hover{border-color:#b7cbfb;background:#f2f6ff}.pil30-puce-forte{border-color:#b7cbfb;color:var(--blue);font-weight:600}
.pil30-travail{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:16px;background:#f2f6ff;border:1px solid #c9d8fb;font-size:.86rem}
.pil30-travail ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font-size:.82rem}
.pil30-roue{width:18px;height:18px;border:2.5px solid #c9d8fb;border-top-color:var(--blue);border-radius:50%;animation:pil30-tourne .8s linear infinite;flex:none}
.pil30-roue.petite{width:13px;height:13px;border-width:2px}@keyframes pil30-tourne{to{transform:rotate(360deg)}}
.pil30-accueil{padding:28px 6px;text-align:center}.pil30-accueil h2{margin:12px 0 8px}.pil30-accueil p{max-width:380px;margin:0 auto}
.pil30-accueil-icone{width:52px;height:52px;margin:0 auto;display:grid;place-items:center;border-radius:16px;background:#e8efff;color:var(--blue);font-size:1.5rem}
.pil30-exemples{display:grid;gap:8px;margin-top:20px;text-align:left}
.pil30-exemple{border-radius:14px;padding:12px 14px;font-weight:400;font-size:.86rem;line-height:1.45;text-align:left;background:#f7f9fc}
.pil30-exemple:hover{background:#f2f6ff;border-color:#b7cbfb}
.pil30-accueil .pil30-puces{justify-content:center}
.pil30-saisie{margin:10px 14px 14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 2px 10px #14213d0d;transition:border-color .15s,box-shadow .15s}
.pil30-saisie:focus-within{border-color:#8fb0f6;box-shadow:0 0 0 4px #245ddd14}
.pil30-saisie textarea{border:0;width:100%;resize:none;padding:13px 14px 4px;background:transparent;max-height:240px;outline:none;font-size:.9rem;line-height:1.5}
.pil30-saisie textarea:focus-visible{outline:none}
.pil30-saisie-pied{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px 8px 14px}
.pil30-envoyer{border-radius:10px;padding:8px 16px}
.pil30-apercu{display:flex;flex-direction:column;min-width:0;min-height:0}
.pil30-barre{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line)}
.pil30-onglets{display:flex;gap:4px;background:#eef3fa;padding:3px;border-radius:999px}
.pil30-onglets button{border:0;border-radius:999px;padding:6px 14px;font-size:.82rem;background:transparent}
.pil30-onglets button.active{background:#fff;color:var(--blue);box-shadow:0 1px 3px #14213d1f}
.pil30-outils{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pil30-role{display:flex;flex-direction:row;align-items:center;gap:6px;font-size:.8rem}.pil30-role select{padding:6px 8px;font-size:.82rem}
.pil30-appareils{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.pil30-appareils button{border:0;border-radius:0;padding:6px 11px;font-size:.82rem;display:flex;gap:6px;align-items:center}
.pil30-appareils button span{font-size:.76rem}.pil30-appareils button.active{background:#eaf0ff;color:var(--blue)}
.pil30-scene{flex:1;min-height:0;overflow:auto;padding:18px;display:flex;flex-direction:column;align-items:center}
.pil30-cadre{width:100%;flex:1;min-height:420px;display:flex;transition:max-width .25s ease}
.pil30-cadre iframe{flex:1;width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 8px 30px #14213d14}
.pil30-cadre[data-appareil="telephone"]{max-width:390px}.pil30-cadre[data-appareil="telephone"] iframe{border-radius:28px;border:8px solid #1b2434}
.pil30-note{font-size:.74rem;color:var(--muted);margin:10px 0 0;text-align:center}
.pil30-programme{width:100%;margin:0;background:#132038;color:#dbe8fc;border-radius:14px;padding:20px;font:13px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre;overflow:auto;flex:1}
.pil30-vide{margin:auto;text-align:center;color:var(--muted);display:grid;justify-items:center;gap:12px}
.pil30-ecran-fantome{width:260px;height:170px;border:1px dashed #b2c0d5;border-radius:14px;display:grid;gap:10px;padding:18px;background:#f8faff}
.pil30-ecran-fantome i{display:block;height:14px;border-radius:7px;background:#e3eaf5}.pil30-ecran-fantome i:first-child{width:55%}.pil30-ecran-fantome i:nth-child(2){width:85%}.pil30-ecran-fantome i:nth-child(3){width:70%}
.pil30-bas{display:none}
@media(max-width:900px){
  .shell.pilotage30{grid-template-columns:1fr}.pilotage30 .sidebar{display:none}
  .pil30{grid-template-columns:1fr;height:calc(100dvh - var(--haut30));padding-bottom:56px}
  .pil30[data-vue="discussion"] .pil30-apercu,.pil30[data-vue="apercu"] .pil30-chat{display:none}
  .pil30-bas{display:flex;position:fixed;left:0;right:0;bottom:0;height:56px;background:#fff;border-top:1px solid var(--line);z-index:40;padding-bottom:env(safe-area-inset-bottom)}
  .pil30-bas button{flex:1;border:0;border-radius:0;background:transparent;font-weight:600;position:relative}
  .pil30[data-vue="discussion"] .pil30-bas button[data-pil-vue="discussion"],.pil30[data-vue="apercu"] .pil30-bas button[data-pil-vue="apercu"]{color:var(--blue);box-shadow:inset 0 3px 0 var(--blue)}
  .pil30-bas i{position:absolute;top:14px;margin-left:6px;width:8px;height:8px;border-radius:50%;background:var(--blue)}
  .pil30-appareils{display:none}.pil30-scene{padding:10px}
}

/* 0.31 — le suivi par étapes : les étapes reliées comme une ligne, chaque carte dit ce qui se passe ensuite pour vous */
/* Le tableau par étapes (0.31 ; dessin 0.34 : des couloirs sur le creux, des cartes simples ; jamais une couleur écrite). */
.suivi31{display:grid;gap:14px}
.suivi31-barre{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.suivi31-filtres{display:flex;gap:4px;flex-wrap:wrap;padding:3px;border-radius:10px;background:var(--q-creux)}
.suivi31 .suivi31-filtres button{min-height:28px;border-radius:7px;padding:0 10px;font-size:13px;font-weight:500;background:none;border:0;box-shadow:none;color:var(--q-discret)}
.suivi31 .suivi31-filtres button b{font-weight:600;color:var(--q-discret);margin-left:4px;font-size:12px}
.suivi31 .suivi31-filtres button.active{background:var(--q-surface);color:var(--q-texte);box-shadow:var(--q-ombre-1,0 1px 2px rgba(0,0,0,.08))}
.suivi31-q{max-width:260px;flex:1;min-width:160px}
.suivi31-colonnes{display:grid;grid-template-columns:repeat(var(--n31),minmax(260px,1fr));gap:12px;overflow-x:auto;padding:2px 2px 12px;scroll-snap-type:x proximity;position:relative}
.col31{display:flex;flex-direction:column;gap:8px;min-width:0;scroll-snap-align:start;border-radius:var(--q-rayon,12px);padding:10px 8px 10px;background:var(--q-creux);transition:background .15s,opacity .15s}
.col31-tete{position:relative;display:flex;gap:9px;align-items:center;padding:2px 6px 6px}
.col31-point{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:650;background:var(--q-surface);color:var(--q-discret);box-shadow:inset 0 0 0 1.5px var(--q-ligne)}
.col31-finale .col31-point{box-shadow:none;color:var(--q-ok);background:var(--q-ok-doux)}
.col31-tete strong{display:block;font-size:13.5px;font-weight:600;line-height:1.2}
.col31-tete small{display:block;color:var(--q-discret);font-size:12px;margin-top:1px;font-variant-numeric:tabular-nums}
.col31-cartes{display:grid;gap:6px;align-content:start;min-height:80px}
.col31-vide{border-radius:10px;padding:14px;text-align:center;font-size:12.5px;color:var(--q-discret)}
.carte31{position:relative;background:var(--q-surface);border:1px solid color-mix(in oklab,var(--q-ligne) 70%,var(--q-surface));border-radius:10px;padding:10px 12px;display:grid;gap:6px;cursor:pointer;box-shadow:0 1px 2px color-mix(in oklab,var(--q-texte) 8%,transparent);transition:box-shadow .12s,border-color .12s}
.carte31:hover,.carte31:focus-visible{box-shadow:0 4px 14px -4px color-mix(in oklab,var(--q-texte) 18%,transparent);border-color:var(--q-ligne);outline:0}
.carte31-titre{font-weight:550;font-size:13.5px;line-height:1.35;overflow-wrap:anywhere}
.carte31-sec{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12.5px;color:var(--q-discret)}
.carte31-pied{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:2px}
.suivi31 .carte31-action{min-height:26px;padding:0 10px;border-radius:7px;font-size:12.5px;background:var(--q-accent);border-color:transparent;color:var(--q-sur-accent,var(--q-fond));font-weight:600}
.suivi31 .carte31-action:hover{background:color-mix(in oklab,var(--q-accent) 88%,var(--q-texte))}
.suivi31 .carte31-autre{min-height:26px;padding:0 9px;border-radius:7px;font-size:12.5px}
.carte31-manque{font-size:12.5px;color:var(--q-attention);line-height:1.35}
.carte31-attente{font-size:12.5px;color:var(--q-discret)}.carte31-fin{font-size:12.5px;color:var(--q-ok);font-weight:550}
.carte31-tenue{opacity:.5;transform:rotate(1.5deg)}
.col31-cible{background:var(--q-accent-doux);outline:2px dashed color-mix(in oklab,var(--q-accent) 45%,transparent);outline-offset:-2px}
.col31-survol{background:color-mix(in oklab,var(--q-accent) 20%,var(--q-surface))}.col31-fermee{opacity:.45}
@media(max-width:760px){.suivi31-colonnes{grid-template-columns:repeat(var(--n31),70vw)}.suivi31-q{max-width:none}}
@media(prefers-reduced-motion:reduce){.carte31,.col31{transition:none}}

/* 0.32 — la file de travail : ce qui attend la personne, en trois tas */
/* La file de travail (0.32 ; dessin 0.34 : une boîte de réception, des lignes, plus des cartes). */
.tr32{display:grid;gap:26px}
.tr32-bandeau{display:flex;justify-content:space-between;align-items:center;gap:16px}
.tr32-bandeau h2{margin:2px 0 4px;font-size:20px;font-family:var(--q-police-titre)}
.tr32-bandeau p{margin:0}.tr32-bandeau .eyebrow{font-size:12.5px;color:var(--q-discret)}
.tr32-ok{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--q-ok-doux);color:var(--q-ok);font-size:1rem;font-weight:700}
.tr32 > .tr32-tas{display:grid;gap:8px}
.tr32-tas header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.tr32-tas header p{margin:0;font-size:12.5px}
.tr32-tas h3{margin:0;font-size:14px;font-weight:600;font-family:var(--q-police-texte);display:flex;align-items:center;gap:6px}
.tr32-tas h3 b{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--q-creux);color:var(--q-discret)}
.tr32-a_faire h3 b{background:var(--q-accent);color:var(--q-sur-accent,var(--q-fond))}.tr32-a_completer h3 b{background:var(--q-attention-doux);color:var(--q-attention)}
.tr32-liste{display:grid;container-type:inline-size;border:1px solid var(--q-ligne);border-radius:var(--q-rayon,12px);overflow:hidden;background:var(--q-surface)}
.tr32-el{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;row-gap:2px;align-items:center;padding:11px 16px 11px 34px;border-bottom:1px solid var(--q-ligne);cursor:pointer;--ton:var(--q-ligne)}
.tr32-el:last-child{border-bottom:0}
.tr32-el::before{content:'';position:absolute;left:15px;top:17px;width:8px;height:8px;border-radius:50%;background:var(--ton)}
.tr32-a_faire .tr32-el{--ton:var(--q-accent)}.tr32-a_completer .tr32-el{--ton:var(--q-attention)}.tr32-chez_autres .tr32-el::before{background:none;box-shadow:inset 0 0 0 1.5px var(--q-discret)}
.tr32-el:hover{background:color-mix(in oklab,var(--q-texte) 4%,var(--q-surface))}
.tr32-el:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--q-accent)}
.tr32-tete{grid-column:1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px;color:var(--q-discret)}
.tr32-table{font-weight:500;color:var(--q-discret)}
.tr32-etape{padding:0 7px;border-radius:999px;background:var(--q-creux);color:var(--q-discret)}
.tr32-depuis{color:var(--q-discret)}.tr32-ancien{color:var(--q-alerte);font-weight:600}
.tr32-titre{grid-column:1;font-weight:550;font-size:14px;line-height:1.35;overflow-wrap:anywhere}
.tr32-actions,.tr32-manque,.tr32-chez{grid-column:2;grid-row:1/span 2;justify-self:end;max-width:min(380px,42cqw)}
.tr32-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.tr32-manque{margin:0;font-size:12.5px;color:var(--q-attention);line-height:1.4;text-align:right}
.tr32-chez{margin:0;font-size:12.5px;color:var(--q-discret)}
.tr32-rien{margin:0;padding:12px 16px;border:1px solid var(--q-ligne);border-radius:var(--q-rayon,12px);color:var(--q-discret);font-size:13px}
@container (max-width:620px){.tr32-el{grid-template-columns:minmax(0,1fr)}.tr32-actions,.tr32-manque,.tr32-chez{grid-column:1;grid-row:auto;justify-self:start;max-width:none;text-align:left;margin-top:6px}}
@media(prefers-reduced-motion:reduce){.tr32-el{transition:none}}

/* ══ 0.34 — Le design de l'application (remplace la couche 0.33 : en-tête à onglets, feuille bordée, grands titres).
   Une barre latérale et un panneau ; des lignes compactes ; les propriétés en « libellé → valeur » ; des fenêtres qui
   flottent. Tout par les jetons --q-* (charte > peau > Clair) : aucune couleur écrite, les nuances en sont dérivées.
   Une seule hiérarchie : le fond (la barre), le panneau (la surface), le creux. Pas de carte dans le panneau. ══ */
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog){
  --q-r:var(--q-rayon,12px);--q-rb:var(--q-rayon-bouton,8px);--q-rc:min(var(--q-rayon,8px),9px);--q-sa:var(--q-sur-accent,var(--q-fond));
  --q-filet:color-mix(in oklab,var(--q-ligne) 65%,var(--q-surface));--q-survol:color-mix(in oklab,var(--q-texte) 5%,var(--q-surface));
  --q-ombre-1:0 1px 2px color-mix(in oklab,var(--q-texte) 9%,transparent);
  --q-ombre-pop:0 24px 48px -16px color-mix(in oklab,var(--q-texte) 30%,transparent),0 0 0 1px color-mix(in oklab,var(--q-texte) 9%,transparent);
  --q-anneau:0 0 0 3px color-mix(in oklab,var(--q-accent) 22%,transparent);
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(h1,h2,h3){text-transform:var(--q-titre-casse,none);font-weight:var(--q-titre-graisse,650);letter-spacing:var(--q-titre-espace,-.01em);line-height:1.2}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(.muted,.small){font-size:13px}

/* Les boutons : trois sortes, une hauteur. */
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button{min-height:32px;padding:0 12px;border-radius:var(--q-rb);font-size:13.5px;font-weight:500;line-height:1.2;
  background:var(--q-surface);border:1px solid var(--q-ligne);color:var(--q-texte);box-shadow:var(--q-ombre-1);transition:background .12s,border-color .12s,box-shadow .12s}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button:hover{background:var(--q-survol);border-color:var(--q-ligne)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.primary{background:var(--q-accent);border-color:transparent;color:var(--q-sa);font-weight:600}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.primary:hover{background:color-mix(in oklab,var(--q-accent) 88%,var(--q-texte))}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.second{background:var(--q-second);border-color:transparent;color:var(--q-sa);font-weight:600}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.small{min-height:28px;padding:0 10px;font-size:13px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) button.danger{color:var(--q-alerte)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(button,input,select,textarea,summary,[tabindex]):focus-visible{outline:0;box-shadow:var(--q-anneau);border-color:var(--q-accent)}

/* Les champs. */
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea){min-height:36px;padding:7px 11px;border-radius:var(--q-rc);border:1px solid var(--q-ligne);
  background:var(--q-surface);color:var(--q-texte);font-size:14px;box-shadow:var(--q-ombre-1);transition:border-color .12s,box-shadow .12s}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(input,select,textarea)::placeholder{color:color-mix(in oklab,var(--q-discret) 80%,var(--q-surface))}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(input,select,textarea):hover{border-color:color-mix(in oklab,var(--q-ligne) 60%,var(--q-texte))}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) :is(input,select,textarea):focus{outline:0;border-color:var(--q-accent);box-shadow:var(--q-anneau)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) input[type=checkbox]{accent-color:var(--q-accent);width:16px;height:16px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) input[type=file]{font-size:13px;color:var(--q-discret);max-width:100%}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) input[type=file]::file-selector-button{min-height:30px;margin-right:10px;padding:0 12px;border-radius:var(--q-rb);border:1px solid var(--q-ligne);background:var(--q-surface);color:var(--q-texte);font:inherit;font-weight:500;cursor:pointer}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) label{color:var(--q-texte);font-size:13px;gap:6px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .lib{font-weight:500;font-size:13px;color:var(--q-texte)}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .aide{color:var(--q-discret);font-size:12.5px}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .form-grid{gap:16px 18px}
.montant15 input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}
.montant15 .devise{border-radius:0 var(--q-rc,8px) var(--q-rc,8px) 0;min-width:36px;font-size:13px}
.err15:not(:empty){font-size:12.5px}

/* Le cadre : la barre latérale sur le fond, le panneau posé à côté. */
.q-app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;background:var(--q-fond);color:var(--q-texte);font-family:var(--q-police-texte)}
.q-side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:14px;padding:16px 12px 14px;overflow-y:auto}
.q-ident{display:flex;gap:10px;align-items:center;padding:2px 6px 4px;min-width:0}
.q-ident>div{min-width:0}
.q-tuile,.q-avatar{flex:none;display:grid;place-items:center;font-weight:650;line-height:1}
.q-tuile{width:32px;height:32px;border-radius:9px;background:var(--q-accent);color:var(--q-sa);font-size:13px;letter-spacing:.02em}
.q-tuile::before,.q-avatar::before{content:attr(data-initiale)}
.q-marque{font-family:var(--q-police-titre);font-size:15px;font-weight:var(--q-titre-graisse,650);line-height:1.25;letter-spacing:var(--q-titre-espace,-.01em);text-transform:var(--q-titre-casse,none);color:var(--q-texte);overflow-wrap:anywhere}
.q-marque span{color:var(--q-second)}
.q-org{font-size:12.5px;color:var(--q-discret);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-app .q-cmd{display:flex;align-items:center;gap:8px;width:100%;min-height:34px;padding:0 10px;color:var(--q-discret);font-weight:400;justify-content:flex-start;background:var(--q-surface)}
.q-app .q-cmd::after{content:attr(data-raccourci);margin-left:auto;font-size:11.5px;padding:2px 6px;border-radius:5px;background:var(--q-fond);color:var(--q-discret);font-family:var(--q-police-texte)}
.q-app .q-cmd[aria-expanded=true]{border-color:var(--q-accent);box-shadow:var(--q-anneau)}
.q-loupe{width:11px;height:11px;border:1.6px solid currentColor;border-radius:50%;position:relative;flex:none;margin-right:2px}
.q-loupe::after{content:"";position:absolute;width:5px;height:1.6px;background:currentColor;right:-5px;bottom:-2.5px;transform:rotate(45deg)}
.q-nav{display:grid;gap:1px;align-content:start;flex:1}
.q-app .q-nav button{display:flex;align-items:center;gap:10px;width:100%;min-height:34px;padding:0 10px;border:0;background:none;box-shadow:none;color:color-mix(in oklab,var(--q-texte) 78%,var(--q-fond));font-weight:500;font-size:13.5px;text-align:left;border-radius:var(--q-rb)}
.q-app .q-nav button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.q-app .q-nav button:hover{background:color-mix(in oklab,var(--q-texte) 6%,var(--q-fond));color:var(--q-texte)}
.q-app .q-nav button.active{background:var(--q-surface);color:var(--q-texte);box-shadow:var(--q-ombre-1),0 0 0 1px var(--q-filet)}
.q-ic{width:17px;height:17px;flex:none;color:var(--q-discret)}
.q-nav button.active .q-ic{color:var(--q-accent)}
.q-moi{display:grid;grid-template-columns:30px minmax(0,1fr);gap:2px 10px;align-items:center;padding:12px 6px 0;border-top:1px solid color-mix(in oklab,var(--q-ligne) 70%,var(--q-fond))}
.q-avatar{width:30px;height:30px;border-radius:50%;background:color-mix(in oklab,var(--q-accent) 16%,var(--q-surface));color:var(--q-accent);font-size:11.5px;grid-row:span 2}
.q-qui{font-size:12.5px;color:var(--q-texte);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-moi-actions{display:flex;gap:12px}
.q-app .q-lien{min-height:0;padding:0;border:0;background:none;box-shadow:none;font-size:12.5px;color:var(--q-discret);font-weight:500}
.q-app .q-lien:hover{background:none;color:var(--q-texte);text-decoration:underline;text-underline-offset:2px}
.q-zone{padding:8px 8px 8px 0;min-width:0}
.q-main{min-height:calc(100vh - 16px);background:var(--q-surface);border:1px solid var(--q-filet);border-radius:var(--q-r);box-shadow:var(--q-ombre-1);padding:0 0 40px;min-width:0}
.q-main>.heading:has(~ #runtime){display:none}
.q-main>.heading{padding:28px 32px 0}
.q-main>.heading h1{font-size:22px;margin:0 0 4px}
.q-main>.grid2,.q-main>.card,.q-main>.notice{margin:20px 32px 0}
.q-barre-tel,.q-voile{display:none}
.q-app .rt-search{display:flex;gap:8px;margin:0;padding:14px 32px;border-bottom:1px solid var(--q-filet);background:var(--q-creux)}
.q-app .rt-search input{flex:1}
.q-app #rt-resultats:not(:empty){padding:12px 32px;border-bottom:1px solid var(--q-filet)}

/* La page : un en-tête (son titre, son action), puis le contenu, sans boîte. */
:where(.q-app,#content:has(#runtime)) #runtime-card{background:none;border:0;border-radius:0;box-shadow:none;padding:0;margin:0}
:where(.q-app,#content:has(#runtime)) .runtime-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:22px 32px 18px;border-bottom:1px solid var(--q-filet)}
:where(.q-app,#content:has(#runtime)) .runtime-head h2{font-size:21px;margin:0}
:where(.q-app,#content:has(#runtime)) #records-content{margin:0!important;padding:20px 32px 0}
:where(.q-app,#content:has(#runtime)) #inbox-card{background:none;border:0;border-top:1px solid var(--q-filet);border-radius:0;box-shadow:none;margin:36px 0 0;padding:22px 32px 0}
:where(.q-app,#content:has(#runtime)) #inbox-card h2{font-size:15px}
:where(.q-app,#content:has(#runtime)) .inbox{gap:0}
:where(.q-app,#content:has(#runtime)) .inbox li{border:0;border-bottom:1px solid var(--q-filet);border-radius:0;background:none;padding:0}
:where(.q-app,#content:has(#runtime)) .inbox summary{padding:10px 2px;font-size:13.5px}
:where(.q-app,#content:has(#runtime)) .notice{border-radius:var(--q-rb);font-size:13.5px}

/* Les états : une pastille avec son point. */
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .ton{display:inline-flex;align-items:center;gap:6px;padding:2px 9px 2px 8px;font-size:12.5px;font-weight:500;border-radius:999px;line-height:1.5}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .ton::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}

/* Le tableau : des lignes compactes, l'en-tête qui reste, les chiffres alignés. */
.onglets16{margin-bottom:14px;padding:3px;border-radius:calc(var(--q-rb,8px) + 2px)}
.onglets16 button{min-height:28px!important;font-size:13px!important;box-shadow:none!important}
.tab15-barre{gap:8px;margin-bottom:12px}
.tab15-barre #tab15-q{min-height:34px}
table.tab15{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}
table.tab15 thead th{position:sticky;top:0;z-index:1;background:var(--q-surface);border-bottom:1px solid var(--q-ligne);padding:8px 12px;text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:500;color:var(--q-discret);text-align:left}
table.tab15 .tri{color:var(--q-discret);font-weight:500;min-height:0;padding:0;border:0;background:none;box-shadow:none;font-size:12.5px}
table.tab15 .tri:hover{color:var(--q-texte);background:none}
table.tab15 th.num,table.tab15 td.num{text-align:right}
table.tab15 tbody td{padding:9px 12px;border-bottom:1px solid var(--q-filet);vertical-align:middle}
table.tab15 tbody td:nth-child(2){font-weight:550}
table.tab15 tbody tr:hover td{background:var(--q-survol)}
table.tab15 tr.choisi td{background:var(--q-accent-doux)}
table.tab15 .sel{width:40px}
table.tab15 td.num,.grp.avant .fiche-champs dd,.lignes15 td.num,.totaux15,.fm-calc dd{font-variant-numeric:tabular-nums}
.tab15-pages{margin-top:12px;font-size:13px}

/* La fiche : la liste à gauche, le dossier à droite. */
:where(.q-app,#content:has(#runtime)) .fiche-layout{grid-template-columns:minmax(220px,272px) minmax(0,1fr);gap:0;margin:-20px -32px 0}
:where(.q-app,#content:has(#runtime)) .fiche-liste{position:sticky;top:0;max-height:calc(100vh - 16px);overflow:auto;background:none;border:0;border-right:1px solid var(--q-filet);border-radius:0;padding:16px 12px;gap:10px;align-content:start}
:where(.q-app,#content:has(#runtime)) .fiche-liste ul{gap:1px}
:where(.q-app,#content:has(#runtime)) .fiche-liste button{min-height:0;border:0;border-radius:var(--q-rb);padding:8px 10px;background:none;box-shadow:none;gap:1px}
:where(.q-app,#content:has(#runtime)) .fiche-liste button strong{font-weight:550;font-size:13.5px}
:where(.q-app,#content:has(#runtime)) .fiche-liste button .muted{font-size:12.5px}
:where(.q-app,#content:has(#runtime)) .fiche-liste button:hover{background:var(--q-survol)}
:where(.q-app,#content:has(#runtime)) .fiche-liste button.active{background:var(--q-accent-doux);box-shadow:none}
:where(.q-app,#content:has(#runtime)) .fiche-detail{background:none;border:0;border-radius:0;box-shadow:none;padding:24px 32px 8px;min-width:0}
:where(.q-app,#content:has(#runtime)) .fiche-seule{margin:-20px -32px 0}
:where(.q-app,#content:has(#runtime)) .fiche-tete{border:0;padding:0;margin:0 0 20px;align-items:flex-start;gap:12px}
:where(.q-app,#content:has(#runtime)) .fiche-tete h2{font-size:24px;margin:0 0 8px}
:where(.q-app,#content:has(#runtime)) .fiche-tete p{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}

/* La prochaine action, puis les étapes. */
:where(.q-app,#content:has(#runtime)) .prochaine{display:flex;align-items:center;gap:14px;background:var(--q-accent-doux);border:1px solid color-mix(in oklab,var(--q-accent) 18%,var(--q-surface));border-radius:var(--q-r);padding:12px 14px 12px 16px;margin:0 0 20px;box-shadow:none}
:where(.q-app,#content:has(#runtime)) .prochaine .eyebrow{display:block;text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:500;color:var(--q-discret);margin:0 0 1px;font-family:var(--q-police-texte)}
:where(.q-app,#content:has(#runtime)) .prochaine b{font-size:15px;font-weight:600}
:where(.q-app,#content:has(#runtime)) ol.etapes14{display:flex;gap:0;margin:0 0 4px;padding:0;counter-reset:etape;overflow-x:auto}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li{flex:1 1 0;min-width:104px;border:0;background:none;border-radius:0;padding:24px 10px 2px 0;position:relative;counter-increment:etape;gap:0}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li::before{content:counter(etape);position:absolute;left:0;top:0;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font-size:9.5px;font-weight:650;background:var(--q-surface);color:var(--q-discret);box-shadow:inset 0 0 0 1.5px var(--q-ligne);z-index:1}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li::after{content:"";position:absolute;left:22px;right:6px;top:7.5px;height:1.5px;border-radius:2px;background:var(--q-ligne)}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li:last-child::after{display:none}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li.faite::before{content:"✓";background:var(--q-accent);color:var(--q-sa);box-shadow:none;font-size:9px}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li.faite::after{background:var(--q-accent)}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li.actuelle{background:none}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li.actuelle::before{background:var(--q-surface);color:var(--q-accent);box-shadow:inset 0 0 0 4.5px var(--q-accent),0 0 0 3px var(--q-accent-doux);content:""}
:where(.q-app,#content:has(#runtime)) ol.etapes14 .n{font-family:var(--q-police-texte);font-size:12px;color:var(--q-discret);letter-spacing:0;line-height:1.3}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li.actuelle .n{color:var(--q-accent);font-weight:550}
:where(.q-app,#content:has(#runtime)) ol.etapes14 .t{font-size:13.5px;font-weight:550;line-height:1.35}
:where(.q-app,#content:has(#runtime)) ol.etapes14 li:not(.faite):not(.actuelle) .t{color:var(--q-discret);font-weight:500}
:where(.q-app,#content:has(#runtime)) .schema15>summary{font-size:13px;color:var(--q-discret);margin:8px 0 4px;cursor:pointer}

/* Les propriétés : « libellé → valeur », une ligne chacune, sur deux colonnes quand la place le permet. */
:where(.q-app,#content:has(#runtime)) .grps{display:grid;grid-template-columns:1fr;gap:0;border:0;border-radius:0;background:none;margin:18px 0 0;overflow:visible;container-type:inline-size}
:where(.q-app,#content:has(#runtime)) .grps>.grp{border:0;border-radius:0;background:none;padding:0;margin:0 0 22px;gap:4px}
:where(.q-app,#content:has(#runtime)) .grp .k{font-family:var(--q-police-texte);font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--q-texte);margin:0 0 4px}
:where(.q-app,#content:has(#runtime)) .grp:not(.avant) .fiche-champs{display:grid;grid-template-columns:1fr;gap:0 40px;margin:0}
@container (min-width:640px){:where(.q-app,#content:has(#runtime)) .grp:not(.avant) .fiche-champs{grid-template-columns:1fr 1fr}}
:where(.q-app,#content:has(#runtime)) .grp:not(.avant) .fiche-champs>div{display:grid;grid-template-columns:136px minmax(0,1fr);gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--q-filet)}
:where(.q-app,#content:has(#runtime)) .grp:not(.avant) .fiche-champs>div:only-child,:where(.q-app,#content:has(#runtime)) .grp:not(.avant) .fiche-champs>div.large{grid-column:1/-1}
:where(.q-app,#content:has(#runtime)) .fiche-champs dt{font-size:13px;color:var(--q-discret);text-transform:none;letter-spacing:0;font-weight:400}
:where(.q-app,#content:has(#runtime)) .fiche-champs dd{margin:0;font-size:14px;line-height:1.45;min-width:0;overflow-wrap:anywhere}
:where(.q-app,#content:has(#runtime)) .grps>.grp.avant{background:var(--q-creux);border-radius:var(--q-r);padding:14px 18px 16px;margin:0 0 22px}
:where(.q-app,#content:has(#runtime)) .grp.avant .fiche-champs{display:flex;flex-wrap:wrap;gap:10px 40px;margin:0}
:where(.q-app,#content:has(#runtime)) .grp.avant .fiche-champs dd{font-size:20px;font-weight:600;letter-spacing:-.01em;margin-top:2px}
:where(.q-app,#content:has(#runtime)) .fiche-liees{margin-top:8px;border-top:1px solid var(--q-filet);padding-top:20px}
:where(.q-app,#content:has(#runtime)) .fiche-liees h3{font-size:14px;font-weight:600}
:where(.q-app,#content:has(#runtime)) .fiche-detail .card{background:none;border:0;border-top:1px solid var(--q-filet);border-radius:0;box-shadow:none;padding:20px 0 4px;margin:8px 0 0}
:where(.q-app,#content:has(#runtime)) .fiche-detail .card h2,:where(.q-app,#content:has(#runtime)) .fiche-detail .card h3{font-size:14px;font-weight:600;font-family:var(--q-police-texte)}
:where(.q-app,#content:has(#runtime)) table.lignes15 th{font-size:12.5px;font-weight:500;color:var(--q-discret);text-transform:none;letter-spacing:0}

/* Les formulaires : sur la page comme dans une fenêtre, les actions toujours à portée. */
:where(.q-app,#content:has(#runtime)) .fm16-page{max-width:980px}
:where(.q-app,#content:has(#runtime)) .fm16-page>.actions{position:sticky;bottom:0;z-index:2;display:flex;gap:8px;padding:12px 0;margin-top:20px;background:var(--q-surface);border-top:1px solid var(--q-filet)}
.piece16{border-radius:var(--q-r,12px)}
.fm-calc{border-radius:var(--q-r,12px)!important;background:var(--q-creux)!important}
.fm-calc .eyebrow{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:500;color:var(--q-discret)}
.fm-calc dd{font-size:16px;font-weight:600}

/* Les fenêtres : elles flottent ; un en-tête, un corps qui défile, un pied avec les actions. */
#dialog.charte-dialog{padding:0;border:0;border-radius:16px;background:var(--q-surface);color:var(--q-texte);box-shadow:var(--q-ombre-pop);width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:hidden}
#dialog.charte-dialog.large{width:min(820px,calc(100vw - 32px))}
#dialog.charte-dialog::backdrop{background:color-mix(in oklab,var(--q-texte) 38%,transparent);backdrop-filter:blur(3px)}
#dialog.charte-dialog[open]{animation:q-fenetre .16s cubic-bezier(.2,.8,.2,1)}
@keyframes q-fenetre{from{opacity:0;transform:translateY(6px) scale(.985)}}
@media (prefers-reduced-motion:reduce){#dialog.charte-dialog[open]{animation:none}}
#dialog.charte-dialog>form{display:flex;flex-direction:column;max-height:calc(100vh - 48px);overflow:auto;padding:0}
#dialog.charte-dialog>form>h2{position:sticky;top:0;z-index:2;margin:0;padding:18px 24px 14px;font-size:17px;background:var(--q-surface);border-bottom:1px solid var(--q-filet)}
#dialog.charte-dialog>form>:not(h2):not(.actions){margin-left:24px;margin-right:24px}
#dialog.charte-dialog>form>h2+*{margin-top:20px}
#dialog.charte-dialog>form>.actions{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:8px;margin:20px 0 0;padding:12px 24px;background:color-mix(in oklab,var(--q-texte) 3%,var(--q-surface));border-top:1px solid var(--q-filet)}
#dialog.charte-dialog .fm-etat{font-size:13px}

/* Ce qui portait encore des capitales espacées. */
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .eyebrow{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:500}
:where(.q-app,#content:has(#runtime)) .chrono-mois{text-transform:none;letter-spacing:0;font-size:13px;font-weight:600;color:var(--q-texte)}

/* Au téléphone : une barre en haut, la barre latérale devient un menu. */
@media (max-width:760px){
  .q-app{grid-template-columns:minmax(0,1fr)}
  .q-barre-tel{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;padding:10px 14px;background:var(--q-fond);border-bottom:1px solid color-mix(in oklab,var(--q-ligne) 70%,var(--q-fond))}
  .q-app .q-menu{width:36px;min-height:36px;padding:0;display:grid;place-items:center}
  .q-menu span,.q-menu span::before,.q-menu span::after{display:block;width:16px;height:1.6px;border-radius:2px;background:currentColor;position:relative}
  .q-menu span::before,.q-menu span::after{content:"";position:absolute;left:0}.q-menu span::before{top:-5px}.q-menu span::after{top:5px}
  .q-side{position:fixed;z-index:40;left:0;top:0;bottom:0;width:min(290px,86vw);height:auto;background:var(--q-fond);box-shadow:var(--q-ombre-pop);transform:translateX(-105%);transition:transform .2s ease;visibility:hidden}
  .q-app.menu-ouvert .q-side{transform:none;visibility:visible}
  .q-voile:not([hidden]){display:block;position:fixed;inset:0;z-index:30;background:color-mix(in oklab,var(--q-texte) 35%,transparent)}
  .q-zone{padding:0}
  .q-main{border-radius:0;border:0;box-shadow:none;min-height:0}
  :where(.q-app,#content:has(#runtime)) .runtime-head,:where(.q-app,#content:has(#runtime)) #records-content,:where(.q-app,#content:has(#runtime)) #inbox-card,.q-app .rt-search{padding-left:16px;padding-right:16px}
  .q-main>.heading{padding:20px 16px 0}.q-main>.grid2,.q-main>.card,.q-main>.notice{margin:16px 16px 0}
  :where(.q-app,#content:has(#runtime)) .fiche-layout,:where(.q-app,#content:has(#runtime)) .fiche-seule{grid-template-columns:minmax(0,1fr);margin:-20px -16px 0}
  :where(.q-app,#content:has(#runtime)) .fiche-liste{position:static;max-height:38vh;border-right:0;border-bottom:1px solid var(--q-filet)}
  :where(.q-app,#content:has(#runtime)) .fiche-detail{padding:20px 16px 8px}
  :where(.q-app,#content:has(#runtime)) .fiche-tete h2{font-size:20px}
  #dialog.charte-dialog{width:100vw;max-width:100vw;max-height:92vh;margin:auto 0 0;border-radius:16px 16px 0 0}
  #dialog.charte-dialog>form{max-height:92vh}}
@media (min-width:761px){.q-app .q-menu{display:none}}
.q-app .q-lien{white-space:nowrap}
.q-moi-actions{grid-column:2}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .err15:empty{display:none}
:where(.q-app,#content:has(#runtime),#dialog.charte-dialog) .form-grid>div>label{margin:0}

/* Les sections du dossier hors des propriétés (historique, versions…) : un filet, pas une boîte ; l'historique en frise. */
:where(.q-app,#content:has(#runtime)) .fiche-detail .grp:not(.grps>.grp){border:0;border-top:1px solid var(--q-filet);border-radius:0;background:none;padding:20px 0 4px;margin:22px 0 0}
:where(.q-app,#content:has(#runtime)) .grp.histo ol{margin:4px 0 0;padding:0;list-style:none;display:grid;gap:0;border-left:1.5px solid var(--q-ligne);margin-left:4px}
:where(.q-app,#content:has(#runtime)) .grp.histo li{position:relative;padding:4px 0 10px 18px;font-size:13.5px}
:where(.q-app,#content:has(#runtime)) .grp.histo li::before{content:"";position:absolute;left:-5px;top:10px;width:8px;height:8px;border-radius:50%;background:var(--q-surface);box-shadow:inset 0 0 0 2px var(--q-accent)}
:where(.q-app,#content:has(#runtime)) .grp.histo li .muted,:where(.q-app,#content:has(#runtime)) .grp.histo li small{display:block;font-size:12.5px}
@media (max-width:760px),(hover:none){.q-app .q-cmd::after{display:none}}

/* ══ 0.35 — Les signes d'un outil actuel ══ */
/* Une personne : ses initiales dans une pastille, teinte dérivée de l'accent. */
.q-pers{display:inline-flex;align-items:center;gap:7px;max-width:100%;vertical-align:middle}
.q-av{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:9.5px;font-weight:650;letter-spacing:.02em;background:color-mix(in oklab,var(--q-accent) 14%,var(--q-surface));color:var(--q-accent)}
.q-av::before{content:attr(data-initiale)}
/* La cloche des messages, et son panneau. */
.q-ident{position:relative}
.q-app .q-cloche{margin-left:auto;position:relative;flex:none;width:32px;min-height:32px;padding:0;display:grid;place-items:center;border:0;background:none;box-shadow:none;color:var(--q-discret)}
.q-app .q-cloche:hover,.q-app .q-cloche[aria-expanded=true]{background:color-mix(in oklab,var(--q-texte) 6%,var(--q-fond));color:var(--q-texte)}
.q-cloche svg{width:18px;height:18px}
.q-pastille{position:absolute;top:-3px;right:-7px;min-width:15px;height:15px;padding:0 4px;border-radius:999px;background:var(--q-alerte);color:var(--q-surface);font-size:9.5px;font-weight:700;line-height:15px;text-align:center;box-shadow:0 0 0 2px var(--q-fond)}
.q-pop{position:fixed;z-index:50;left:256px;top:12px;width:min(400px,calc(100vw - 280px));max-height:min(560px,calc(100vh - 24px));overflow:auto;background:var(--q-surface);color:var(--q-texte);border-radius:14px;box-shadow:var(--q-ombre-pop,0 24px 48px -16px rgba(0,0,0,.3));animation:q-fenetre .14s cubic-bezier(.2,.8,.2,1)}
.q-pop header{position:sticky;top:0;background:var(--q-surface);display:grid;gap:2px;padding:14px 16px 10px;border-bottom:1px solid var(--q-filet,var(--q-ligne))}
.q-pop header strong{font-size:14px}
.q-pop .inbox{list-style:none;margin:0;padding:4px 6px 8px;display:grid;gap:0}
.q-pop .inbox li{border:0;border-radius:9px;padding:0;background:none}
.q-pop .inbox li.nouveau summary strong::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--q-accent);margin:0 7px 1px 0}
.q-pop .inbox summary{display:grid;gap:2px;padding:9px 10px;border-radius:9px;cursor:pointer;list-style:none;font-size:13.5px}
.q-pop .inbox summary::-webkit-details-marker{display:none}
.q-pop .inbox summary:hover{background:color-mix(in oklab,var(--q-texte) 5%,var(--q-surface))}
.q-pop .mail-body{margin:0 10px 10px;padding:10px 12px;border-radius:9px;background:var(--q-creux);font-size:13px;white-space:pre-wrap}
.q-vide-pop{margin:0;padding:22px 16px;color:var(--q-discret);font-size:13px;text-align:center}
@media (prefers-reduced-motion:reduce){.q-pop{animation:none}}
@media (max-width:760px){.q-pop{left:8px;right:8px;top:60px;width:auto}}
/* Les écrans vides : un dessin (le bac vide) au-dessus de la phrase, qui invite à agir ; dessiné en CSS, aux couleurs de
   l'application. */
:where(.q-app,#content:has(#runtime)) .empty{position:relative;padding:118px 20px 40px;text-align:center;color:var(--q-discret);font-size:13.5px;background:none;border:0;box-shadow:none}
:where(.q-app,#content:has(#runtime)) .empty::before{content:"";position:absolute;left:50%;top:40px;transform:translateX(-50%);width:56px;height:56px;border-radius:16px;background:var(--q-creux);box-shadow:inset 0 0 0 1px var(--q-filet,var(--q-ligne)),0 0 0 8px color-mix(in oklab,var(--q-creux) 45%,transparent)}
:where(.q-app,#content:has(#runtime)) .empty::after{content:"";position:absolute;left:50%;top:55px;transform:translateX(-50%);width:26px;height:26px;background:var(--q-accent);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13.5 7 5h10l3 8.5V19a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 19z'/%3E%3Cpath d='M4 13.5h4.5l1.5 2.5h4l1.5-2.5H20'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13.5 7 5h10l3 8.5V19a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 19z'/%3E%3Cpath d='M4 13.5h4.5l1.5 2.5h4l1.5-2.5H20'/%3E%3C/svg%3E") center/contain no-repeat}
.tr32-rien{display:flex;align-items:center;gap:10px}
.tr32-rien::before{content:"✓";flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;background:var(--q-ok-doux);color:var(--q-ok)}
table.tab15 tbody td.empty{position:relative;padding:118px 20px 40px;border-bottom:0;text-align:center}
table.tab15 tbody tr:hover td.empty{background:none}

/* ══ 0.36 — Le studio en quatre menus ══ */
.shell .nav .symbol svg{width:18px;height:18px;display:block}
.shell .nav button{display:flex;align-items:center;gap:10px}
.pilotage30 .nav button{font-size:10.5px!important;line-height:1.15;flex-direction:column;gap:4px;padding:9px 4px!important;text-align:center;font-weight:550}
.pilotage30 .nav .symbol svg{width:20px;height:20px}
.pilotage30 .nav .nav-nom{display:block;max-width:76px;overflow-wrap:normal;hyphens:manual}
.shell.pilotage30{grid-template-columns:88px minmax(0,1fr)}
.pilotage30 .nav{width:100%}.pilotage30 .nav button{width:100%}
.menu36{display:flex;gap:4px;flex-wrap:wrap;width:fit-content;max-width:100%;padding:3px;margin:0 0 18px;border-radius:10px;background:color-mix(in oklab,var(--st-encre,#182338) 6%,transparent)}
.menu36 button{border:0;background:none;box-shadow:none;padding:7px 14px;border-radius:8px;font-weight:550;font-size:.88rem;color:var(--st-discret,#66748b)}
.menu36 button:hover{color:var(--st-encre,#182338)}
.menu36 button.actif{background:var(--st-surface,#fff);color:var(--st-encre,#182338);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.pil30-boutons{display:flex;gap:6px;flex-wrap:wrap}
@media (min-width:761px) and (max-width:1100px){.q-app{grid-template-columns:216px minmax(0,1fr)}}
/* La confirmation de Clair (0.36) : une petite fenêtre au-dessus de tout, aux couleurs du studio ou de l'application. */
.confirmer36{border:0;padding:0;border-radius:14px;width:min(440px,calc(100vw - 32px));background:var(--st-surface,#fff);color:var(--st-encre,#111827);box-shadow:0 24px 48px -16px rgba(15,23,42,.35),0 0 0 1px rgba(15,23,42,.08);font-family:var(--st-texte,inherit)}
.confirmer36.confirmer36-app{background:var(--q-surface,#fff);color:var(--q-texte,#111827);font-family:var(--q-police-texte,inherit)}
.confirmer36::backdrop{background:rgba(15,23,42,.35);backdrop-filter:blur(2px)}
.confirmer36[open]{animation:q-fenetre .14s cubic-bezier(.2,.8,.2,1)}
@media (prefers-reduced-motion:reduce){.confirmer36[open]{animation:none}}
.confirmer36 form{display:grid;gap:14px;padding:20px 22px 18px}
.confirmer36-texte{margin:0;font-size:15px;line-height:1.5}
.confirmer36-saisie{display:grid;gap:6px;font-size:13px}
.confirmer36 .actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.confirmer36 button{min-height:34px;padding:0 14px;border-radius:8px;font-weight:550}
.confirmer36 button.danger-plein{background:var(--q-alerte,#b42318);border:1px solid transparent;color:#fff}
.confirmer36.confirmer36-app button.primary{background:var(--q-accent);border-color:transparent;color:var(--q-sur-accent,var(--q-fond))}

/* 0.39 — Options (paiement en ligne, services extérieurs) et le paiement sur la fiche */
.opt39{display:grid;gap:14px}
.opt39-case{display:flex;gap:12px;align-items:flex-start;cursor:pointer}
.opt39-case input{margin-top:4px;width:18px;height:18px;flex:none}
.opt39-case strong{display:block;font-size:1.05rem;margin-bottom:2px}
.opt39-bloc{border:1px solid var(--q-ligne);border-radius:12px;padding:14px;display:grid;gap:10px}
.opt39-bloc fieldset,.opt39-roles{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 16px}
.opt39-bloc legend{width:100%;margin-bottom:4px;color:var(--q-discret)}
.opt39-serveur{border-top:1px solid var(--q-ligne);padding-top:12px;display:grid;gap:8px}
.opt39 h3{margin:6px 0 0;font-size:1rem}
.opt39-cle{word-break:break-all}
.paie39{margin:10px 0;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--q-ligne);border-radius:12px}
.opt39-bloc fieldset label,.opt39-roles label{display:inline-flex;align-items:center;gap:6px;width:auto;margin:0}
.opt39-bloc fieldset input[type=checkbox],.opt39-roles input[type=checkbox]{width:16px;height:16px;margin:0}

/* 0.40 — Le studio hébergé : Mes projets */
.p40{min-height:100vh;background:var(--q-fond)}
.p40-tete{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;border-bottom:1px solid var(--q-ligne);background:var(--q-surface);position:sticky;top:0;z-index:5}
.p40-actions{display:flex;align-items:center;gap:12px}
.p40-moi{position:relative}
.p40-avatar{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;font-weight:700;font-size:.85rem;background:var(--q-creux);color:var(--q-texte);border:1px solid var(--q-ligne);padding:0}
.p40-avatar.petit{width:30px;height:30px;font-size:.75rem;flex:none}
.p40-menu{position:absolute;right:0;top:46px;min-width:230px;background:var(--q-surface);border:1px solid var(--q-ligne);border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.14);padding:6px;display:grid}
.p40-menu[hidden]{display:none}
.p40-menu-qui{padding:8px 10px 10px;border-bottom:1px solid var(--q-ligne);margin-bottom:4px;display:grid}
.p40-menu button{text-align:left;border:0;background:none;padding:9px 10px;border-radius:8px}
.p40-menu button:hover{background:var(--q-creux)}
.p40-corps{max-width:1120px;margin:0 auto;padding:28px 24px 48px;display:grid;gap:16px}
.p40-titre h1{margin:0}
.p40-titre input{max-width:320px}
.p40-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.p40-carte{display:grid;gap:8px;align-content:start}
.p40-carte h3{margin:0;font-size:1.1rem}
.p40-appli{margin:0}
.p40-boutons{flex-wrap:wrap;gap:6px;margin-top:4px}
.p40-vide{grid-column:1/-1;text-align:center;padding:40px 20px}
.p40-membres{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:10px}
.p40-membres li{display:flex;align-items:center;gap:10px}
.p40-membres li>span:nth-child(2){flex:1}
.p40-mdp{border:0;padding:0;margin:0;display:grid;gap:8px}
.p40-retour{font-weight:600;text-decoration:none;margin-right:6px}
@media (max-width:640px){.p40-tete{padding:12px 16px}.p40-corps{padding:20px 16px}.p40-titre{flex-direction:column;align-items:stretch}.p40-titre input{max-width:none}}
.p40-tete .brand{color:var(--q-texte)}
.p40-marque{text-decoration:none;color:inherit}

/* 0.41 — un seul lieu : l'aperçu montre l'application (essai ou vraies données), en plein écran au besoin */
.pil30-donnees{display:inline-flex;border:1px solid var(--q-ligne);border-radius:10px;overflow:hidden}
.pil30-donnees button{border:0;border-radius:0;padding:6px 10px;background:var(--q-surface);font-size:.85rem}
.pil30-donnees button.active{background:var(--q-accent);color:#fff}
.pil30-plein .pil30-apercu{position:fixed;inset:0;z-index:60;background:var(--q-fond)}
.pil30-plein .pil30-cadre{height:calc(100vh - 110px)}
.pil30-plein .pil30-chat{visibility:hidden}
.pil30-outils .pil30-donnees button.active,.pil30-outils .pil30-donnees button[aria-pressed="true"]{background:var(--q-accent);color:#fff;font-weight:600}

/* 0.42 — les pièces jointes du chat de conception */
.pil42-gauche{display:flex;align-items:center;gap:8px;min-width:0}
.pil42-joindre{border:0;background:transparent;padding:6px 8px;font-size:1.05rem;border-radius:8px;line-height:1}
.pil42-joindre:hover{background:#edf2fb}
.pil30-chat{position:relative}
.pil30-chat.pil42-depot::after{content:'Déposez le fichier : Clair lit ses tableaux et refait ses calculs';position:absolute;inset:10px;display:grid;place-items:center;text-align:center;padding:30px;border:2px dashed #8fb0f6;border-radius:16px;background:#f3f7ffee;color:#1f4bb8;font-weight:600;z-index:5;pointer-events:none}
.pil42-piece{display:grid;gap:10px;margin-bottom:6px}
.pil42-fichier{margin:0;font-size:.9rem}
.pil42-tableau{border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:#fbfcfe}
.pil42-titre{margin:0 0 8px;font-size:.88rem}
.pil42-colonnes{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:5px}
.pil42-colonnes li{font-size:.76rem;border:1px solid #d7dfeb;background:#fff;border-radius:999px;padding:3px 9px;color:#2b3c58}
.pil42-colonnes li span{color:var(--muted);margin-left:3px}
.pil42-colonnes li.pil42-col-calc{border-color:#b9cdf7;background:#eef4ff}
.pil42-calculs{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.pil42-calc{display:flex;gap:8px;align-items:flex-start;font-size:.82rem;line-height:1.45}
.pil42-signe{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;font-weight:700}
.pil42-ok .pil42-signe{background:#e1efe6;color:#2f6b4a}
.pil42-refait .pil42-signe{background:#e8effd;color:#2453c4}
.pil42-ecart .pil42-signe{background:#f6ead0;color:#8a5a00}
.pil42-calc details summary{padding:3px 0;font-size:.78rem}
.pil42-calc details ul{margin:2px 0 4px;padding-left:18px}
.pil42-notes{margin:8px 0 0;padding-left:16px;color:#4b5c74;line-height:1.5}
.pil42-notes li.pil42-non{color:#7a5410}
.pil42-importe{margin:0;color:#206c57;font-weight:600;font-size:.85rem}
.pil42-change summary{padding:4px 0}

/* 0.43 — IA et souveraineté */
.souv43{display:grid;gap:14px}
.souv43 h2{margin:0}
.souv43-etat{margin:0;padding:12px 14px;border-radius:12px;display:grid;gap:2px;border:1px solid}
.souv43-etat span{font-size:.82rem;color:var(--muted)}
.souv43-ici{background:#eaf5ee;border-color:#bfe0cb;color:#1f5c3c}
.souv43-dehors{background:#fff6e6;border-color:#efd7a6;color:#7a5410}
.souv43-table{border:1px solid var(--line);border-radius:10px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px 16px;margin:0}
.souv43-table legend{font-weight:600;font-size:.85rem;padding:0 4px}
.souv43-table label{display:flex;align-items:center;gap:6px;margin:0}
.souv43-journal td{vertical-align:top}
.souv43-l-dehors td:first-child{box-shadow:inset 3px 0 0 #e0a43a}
.souv43-ok{color:#206c57}
.souv43-base{cursor:default}
.souv43-puce{flex:none;width:18px;text-align:center;color:#2f6b4a;margin-top:2px}

/* 0.44 — la boucle */
.inc44 td{vertical-align:top}
.inc44 code{white-space:normal}
.inc44-partage{margin:12px 0}

/* 0.44 — la synthèse */
.syn44{display:grid;gap:16px}
.syn44-tete h2{margin:0 0 2px;font-size:1.25rem}
.syn44-tuiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.syn44-tuile{display:grid;gap:4px}
.syn44-tuile strong{font-size:1.35rem;letter-spacing:-.3px}
.syn44-evo{font-size:.78rem;font-weight:600;color:#4b5c74}
.syn44-evo.haut{color:#8a5a00}.syn44-evo.bas{color:#2453c4}
.syn44-textes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.syn44-bloc{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff}
.syn44-bloc h3{margin:0 0 8px;font-size:.95rem}
.syn44-bloc ul{margin:0;padding-left:18px;display:grid;gap:6px;font-size:.88rem;line-height:1.45}
.syn44-surveiller{border-color:#efd7a6;background:#fffaf0}
.syn44-reco{border-color:#bfe0cb;background:#f3faf5}
.syn44-ia{border-color:#c8d9f8;background:#f5f8ff}
.syn44-ia-texte{font-size:.9rem;line-height:1.55}
.syn44-ok{color:#206c57}
.syn44-table{width:100%;font-size:.85rem}.syn44-table td{padding:6px 4px;border-bottom:1px solid #eef1f6}.syn44-table .num{text-align:right;white-space:nowrap}
.syn44-evo{white-space:nowrap}.syn44-table td:first-child{overflow-wrap:anywhere}
/* 0.45 */
.inc45-progres{border:1px solid #bfe0cb;background:#f3faf5;border-radius:10px;padding:10px 12px;margin:10px 0}
.atelier45-cibles{border:1px solid #c8d9f8;background:#f5f8ff;border-radius:10px;padding:10px 12px;margin-top:10px}
.atelier45-cibles ul{margin:4px 0 6px;padding-left:18px}

/* 0.47 : l'avancement d'une tâche de fond */
.tache47{display:grid;gap:6px;margin:8px 0;max-width:640px}
.tache47-tete{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.tache47 p{margin:0}
.tache47-barre{height:8px;border-radius:99px;background:color-mix(in srgb,currentColor 12%,transparent);overflow:hidden}
.tache47-barre i{display:block;height:100%;background:var(--q-accent,#245ddd);border-radius:99px;transition:width .4s ease}
.tache47-indef i{animation:tache47 1.4s ease-in-out infinite}
@keyframes tache47{0%{margin-left:-30%}100%{margin-left:100%}}
@media (prefers-reduced-motion:reduce){.tache47-indef i{animation:none}.tache47-barre i{transition:none}}

/* 0.47 : le parcours de migration */
.migr47 .migr47-op{border:1px solid var(--line,#dfe3ea);border-radius:10px;padding:12px 14px;margin:10px 0;display:grid;gap:6px}
.migr47 .migr47-op p{margin:0}
.migr47-corr{border-collapse:collapse;font-size:.92em;margin:4px 0}
.migr47-corr th,.migr47-corr td{padding:4px 8px;border-bottom:1px solid var(--line,#dfe3ea);text-align:left}
.migr47-corr input,.migr47-corr select{min-width:180px}
.migr47-sim{border-radius:10px;padding:10px 14px;margin:10px 0;display:grid;gap:6px}
.migr47-sim.ok{background:color-mix(in srgb,#1f8a4c 9%,transparent)}
.migr47-sim.ko{background:color-mix(in srgb,#b3261e 8%,transparent)}
.migr47-sim h3{margin:0;font-size:1em}
.migr47-hist{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.migr47-hist li{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}

/* ── extension gestion.css ── */
/* Extension « gestion » — le style : contrôles, marques, synthèse, onglets d’état, export. */
.ctrl16{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:0;border:1px solid var(--q-ligne);border-radius:var(--q-rayon,12px);overflow:hidden;background:var(--q-surface)}
.ctrl16 li{display:grid;grid-template-columns:14px 1fr auto;gap:1px 10px;align-items:baseline;padding:10px 14px;border-bottom:1px solid var(--q-ligne);font-size:13.5px;--ton:var(--q-discret)}
.ctrl16 li:last-child{border-bottom:0}
.ctrl16 li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ton);align-self:center;grid-row:1}
.ctrl16 li b{font-weight:600}.ctrl16 .etat16{justify-self:end;font-size:12px;font-weight:500;color:var(--ton)}
.ctrl16 .detail16{grid-column:2/-1;font-variant-numeric:tabular-nums;color:var(--q-discret);font-size:13px}
.ctrl16 .ton16-attention{--ton:var(--q-attention);background:var(--q-attention-doux)}
.ctrl16 .ton16-alerte{--ton:var(--q-alerte);background:var(--q-alerte-doux)}
.ctrl16 .ton16-ok{--ton:var(--q-ok)}
.ctrl16 .ton16-neutre::before{background:none;box-shadow:inset 0 0 0 1.5px var(--q-ligne)}
.fm-ctrl:not(:empty){margin-top:14px}
.marque16{display:inline-block;padding:1px 7px;border-radius:999px;background:var(--q-attention-doux);color:var(--q-attention);font-size:.78rem;font-weight:700;white-space:nowrap;cursor:help}
.par16{color:var(--q-discret);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bandeau16{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px 28px;padding:20px 24px;margin-bottom:14px;border:1px solid var(--q-ligne);border-radius:12px;background:var(--q-surface)}
.bandeau16>div:first-child{display:grid;gap:2px}.chiffre16{font-family:var(--q-police-titre);font-size:clamp(1.9rem,1.2rem + 2.4vw,3rem);font-weight:650;line-height:1.05;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.bandeau16 dl{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0}.bandeau16 dl>div{border-left:1px solid var(--q-ligne);padding-left:14px}
.bandeau16 dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.bandeau16 dt{font-size:.78rem;color:var(--q-discret)}
.onglets16{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 12px;padding:4px;border-radius:10px;background:var(--q-creux);width:fit-content;max-width:100%}
.onglets16 button{border:0;background:none;padding:6px 12px;border-radius:7px;font-size:.88rem;color:var(--q-discret);display:inline-flex;gap:6px;align-items:center}
.onglets16 button span{font-variant-numeric:tabular-nums;font-size:.78rem;padding:0 6px;border-radius:999px;background:var(--q-surface)}
.onglets16 button.actif{background:var(--q-surface);color:var(--q-texte);font-weight:650;box-shadow:0 1px 2px #0001,0 0 0 1px var(--q-ligne)}
.onglets16 button.actif span{background:var(--q-accent-doux)}.onglets16 i{font-style:normal;color:var(--q-accent);font-weight:900}
.notice.signal16{background:var(--q-attention-doux);border-color:var(--q-attention);margin:0 0 12px}
table.export16 td{white-space:nowrap}
@media(max-width:760px){.bandeau16{padding:16px}}
.voir16 .marque16{cursor:pointer}
/* 0.35 : la tendance du bandeau, six barres discrètes ; le mois en cours en accent. */
.tend35{display:flex;align-items:flex-end;gap:4px;height:40px;padding:0 4px;align-self:end}
.tend35 i{display:block;width:10px;height:var(--h);border-radius:3px 3px 1px 1px;background:color-mix(in oklab,var(--q-accent) 30%,var(--q-surface))}
.tend35 i.vide{background:var(--q-ligne)}
.tend35 i.dernier{background:var(--q-accent)}

/* ── extension documents.css ── */
/* Extension « documents » — le style du document. */

.doc14 h1{font-family:var(--q-police-titre)}.doc14 h3{margin-top:1.3rem}

/* ── extension calcul.css ── */
/* Extension « calcul » — le style de la vue de calcul. */
.calc15{display:grid;gap:0}.calc15 .form-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.trace15{margin:0;padding-left:1.2rem;display:grid;gap:12px}.trace15 li{display:grid;gap:3px}.trace15 code{font-family:var(--q-police-chasse);font-size:.84rem;white-space:pre-wrap}
.hyp15{margin:0;padding-left:1.2rem;display:grid;gap:4px;font-size:.92rem}

/* ── extension agenda.css ── */
/* Extension « agenda » — le style du calendrier. Il reprend la charte de l'application (jetons --q-*). */
.cal19-barre{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:center;justify-content:space-between;margin-bottom:10px}
.cal19-barre h3{margin:0 0 0 8px;font-family:var(--q-police-titre);font-size:1.2rem}
.res19-filtre{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:10px;background:var(--q-creux)}
.res19-filtre button{border:0;background:none;padding:5px 11px;border-radius:7px;font-size:.84rem;color:var(--q-discret);display:inline-flex;gap:6px;align-items:center}
.res19-filtre button i{width:9px;height:9px;border-radius:50%;background:var(--t)}
.res19-filtre button.actif{background:var(--q-surface);color:var(--q-texte);font-weight:650;box-shadow:0 0 0 1px var(--q-ligne)}
.cal19{border:1px solid var(--q-ligne);border-radius:12px;overflow:hidden;background:var(--q-surface)}
.cal19-tete{display:grid;grid-template-columns:56px repeat(var(--nj),1fr);border-bottom:1px solid var(--q-ligne);background:var(--q-creux)}
.cal19-tete>div{padding:8px 10px;display:flex;gap:6px;align-items:baseline;border-left:1px solid var(--q-ligne)}
.cal19-tete span{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--q-discret)}.cal19-tete b{font-family:var(--q-police-titre);font-size:1.15rem}
.cal19-tete .auj19 b{color:var(--q-accent)}.cal19-tete .auj19{box-shadow:inset 0 -3px 0 var(--q-accent)}
.cal19-corps{display:grid;grid-template-columns:56px repeat(var(--nj),1fr);height:var(--h);position:relative;max-height:68vh;overflow-y:auto}
.cal19-heures{position:relative;height:var(--h)}.cal19-heures span{position:absolute;right:8px;transform:translateY(-50%);font-size:.72rem;color:var(--q-discret);font-family:var(--q-police-chasse)}
.cal19-heures span:first-child{transform:none}
.cal19-jour{position:relative;height:var(--h);border-left:1px solid var(--q-ligne);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 51px,var(--q-ligne) 51px,var(--q-ligne) 52px);cursor:copy}
.cal19-jour.auj19{background-color:color-mix(in srgb,var(--q-accent) 4%,transparent)}
.rdv19{position:absolute;display:grid;align-content:start;gap:1px;text-align:left;padding:4px 7px;border:0;border-left:3px solid var(--t);border-radius:6px;background:color-mix(in srgb,var(--t) 13%,var(--q-surface));color:var(--q-texte);overflow:hidden;font-size:.78rem;line-height:1.25;cursor:pointer;box-shadow:0 1px 2px #0001}
.rdv19:hover{background:color-mix(in srgb,var(--t) 22%,var(--q-surface));z-index:2}
.rdv19 b{font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.h19{font-family:var(--q-police-chasse);font-size:.7rem;color:var(--q-discret)}
.d19{font-size:.72rem;color:var(--q-discret);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.res19{color:var(--t);font-weight:600}
.e19{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--q-discret)}
.etat19-annulee{opacity:.55;text-decoration:line-through;background:repeating-linear-gradient(135deg,var(--q-creux) 0 6px,var(--q-surface) 6px 12px)}
.etat19-realisee{filter:saturate(.45)}
.maintenant19{position:absolute;left:0;right:0;height:2px;background:var(--q-second);z-index:3;pointer-events:none}.maintenant19::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--q-second)}
.cal19-liste{display:grid;gap:12px}.cal19-liste section{border:1px solid var(--q-ligne);border-radius:10px;padding:10px 12px;background:var(--q-surface)}
.cal19-liste section.auj19{border-color:var(--q-accent)}.cal19-liste h3{margin:0 0 8px;font-size:.95rem;text-transform:capitalize}
.rdvl19{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;width:100%;text-align:left;border:0;border-left:3px solid var(--t);border-radius:6px;padding:7px 9px;margin-bottom:6px;background:color-mix(in srgb,var(--t) 10%,var(--q-surface))}
.rdvl19 .d19{grid-column:2}.ajout19{margin-top:2px}
/* la charte de l'application habille tous les boutons : le rendez-vous garde sa forme et sa teinte */
:where(.q-app,#content:has(#runtime)) :is(.rdv19,.rdvl19),:is(.rdv19,.rdvl19){border:0!important;border-left:4px solid var(--t)!important;background:color-mix(in srgb,var(--t) 14%,var(--q-surface,#fff))!important;min-height:0!important;box-shadow:0 1px 2px #0001!important;font-weight:400;justify-content:stretch}
:where(.q-app,#content:has(#runtime)) .rdv19:hover{background:color-mix(in srgb,var(--t) 24%,var(--q-surface,#fff))!important}
:where(.q-app,#content:has(#runtime)) .etat19-annulee{background:repeating-linear-gradient(135deg,var(--q-creux) 0 6px,var(--q-surface) 6px 12px)!important}
:where(.q-app,#content:has(#runtime)) .res19-filtre button{border:0!important;background:none!important;min-height:0!important}
:where(.q-app,#content:has(#runtime)) .res19-filtre button.actif{background:var(--q-surface)!important}

/* ── extension questions_chiffrees.css ── */
/* Extension « questions_chiffrees » : le fil des questions et des réponses. */
.qc46{display:grid;gap:12px;max-width:980px}
.qc46-fil{display:flex;flex-direction:column;gap:10px;max-height:min(64vh,720px);overflow-y:auto;padding:4px 2px}
.qc46-q{align-self:flex-end;max-width:80%;padding:9px 13px;border-radius:14px 14px 4px 14px;background:var(--q-accent,#2f6b8f);color:#fff;white-space:pre-wrap;overflow-wrap:anywhere}
.qc46-r{align-self:flex-start;max-width:100%;padding:10px 14px;border-radius:14px 14px 14px 4px;border:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,currentColor 3%,transparent);display:grid;gap:8px;min-width:0}
.qc46-pas{border-style:dashed}
.qc46-err{border-color:#b3261e;color:#b3261e}
.qc46-attente{opacity:.7;font-style:italic}
.qc46-phrase{margin:0;font-weight:600;line-height:1.45}
.qc46-ex{display:flex;flex-wrap:wrap;gap:6px}
.qc46-puce{font:inherit;font-size:.9em;padding:5px 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--q-accent,#2f6b8f) 45%,transparent);background:transparent;color:inherit;cursor:pointer;text-align:left}
.qc46-puce:hover,.qc46-puce:focus-visible{background:color-mix(in srgb,var(--q-accent,#2f6b8f) 12%,transparent)}
.qc46-tab{overflow-x:auto;max-width:100%}
.qc46-tab table{border-collapse:collapse;font-size:.92em;min-width:280px}
.qc46-tab th,.qc46-tab td{padding:4px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:left;white-space:nowrap}
.qc46-tab td.qc46-n{text-align:right;font-variant-numeric:tabular-nums}
.qc46-tab td.qc46-b{width:160px;min-width:80px;padding-left:4px}
.qc46-barre{display:block;height:10px;border-radius:3px;background:color-mix(in srgb,var(--q-accent,#2f6b8f) 55%,transparent)}
.qc46-avis{margin:0;font-size:.88em;opacity:.85}
.qc46-compris{font-size:.88em}
.qc46-compris summary{cursor:pointer;opacity:.8}
.qc46-compris ul{margin:6px 0 0;padding-left:18px}
.qc46-saisie{display:flex;gap:8px}
.qc46-saisie input{flex:1;min-width:0}
@media (max-width:640px){.qc46-q{max-width:92%}.qc46-saisie{flex-direction:column}}

/* ── extension import_fichier.css ── */
/* Extension « import_fichier » : l'écran d'import (choisir, voir l'aperçu, importer). */
.imp27{display:grid;gap:12px;max-width:960px}
.imp27-choix{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.imp27-fichier{display:inline-flex;flex-direction:column;gap:6px;padding:12px 14px;border:1px dashed var(--q-accent,#2f6b8f);border-radius:8px;cursor:pointer;max-width:100%}
.imp27-fichier span{font-weight:600}
.imp27-fichier input{max-width:100%}
.imp27-cols{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.imp27-cols li{padding:4px 8px;border-radius:6px;border:1px solid color-mix(in srgb,var(--q-accent,#2f6b8f) 30%,transparent);font-size:.9em}
.imp27-table{overflow-x:auto}
.imp27-table table{border-collapse:collapse;width:100%;font-size:.9em}
.imp27-table th,.imp27-table td{padding:4px 8px;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent);text-align:left;white-space:nowrap}
.imp27-rejets{margin:6px 0 0;padding-left:18px}
