/* Thème CDA premium. Présentation uniquement, chargé après la charte. */
:root {
 --cda-green-950:#043526; --cda-green-900:#063d2d; --cda-green-700:#007b43; --cda-green-600:#008f4c;
 --cda-green-100:#e7f5ec; --cda-ivory:#f7f6f0; --cda-surface:#fcfcf9; --cda-gold:#c7a35a;
 --cda-warning:#d99027; --cda-danger:#b83432; --text-primary:#12251e; --text-secondary:#687970;
 --border-subtle:#dfe6dd; --shadow-sm:0 3px 10px rgba(19,51,35,.04); --shadow-md:0 12px 30px rgba(19,51,35,.07);
 --radius-sm:10px; --radius-md:14px; --radius-lg:18px;
 --vert:var(--cda-green-600); --vert-fonce:var(--cda-green-700); --vert-nuit:var(--cda-green-950);
 --vert-clair:#95bd91; --ink:var(--text-primary); --ink-2:#334b40; --muted:var(--text-secondary);
 --paper:var(--cda-ivory); --surface:var(--cda-surface); --surface-2:#f3f6ef;
 --line:var(--border-subtle); --line-strong:#b7c8b8; --pine:var(--vert-fonce); --pine-soft:var(--cda-green-100); --pine-mid:var(--vert);
 --ok:#087541; --ok-bg:#e7f5ec; --down:var(--cda-danger); --down-bg:#fbe9e6; --up:#956217; --up-bg:#fcf1de;
 --r:var(--radius-md); --fond-menu:linear-gradient(160deg,#0a4935,#063d2d 45%,#03291e);
 --fond-bouton:linear-gradient(150deg,var(--vert),var(--vert-fonce)); --filet-accent:linear-gradient(var(--cda-gold),transparent);
}
body {background:var(--paper);color:var(--ink);font-size:14px;}
body.essai {
 --cda-green-950:#38230d; --cda-green-900:#51300d; --cda-green-700:#a85800; --cda-green-600:#c16b00; --cda-green-100:#fcebd2;
 --fond-menu:linear-gradient(160deg,#51300d,#38230d); --fond-bouton:linear-gradient(150deg,#d68522,#a85800); --filet-accent:linear-gradient(#f0a830,transparent);
}
.app {min-height:100vh;}
.side {width:248px;flex:0 0 248px;background:var(--fond-menu);position:sticky;top:0;height:100vh;overflow:auto;border-right:1px solid rgba(199,163,90,.26);box-shadow:5px 0 24px rgba(3,41,30,.08);padding-bottom:22px;}
.brand {padding:29px 23px 23px;border-bottom:1px solid rgba(255,255,255,.12);}
.brand b {font-family:'Playfair Display',Georgia,serif;font-size:27px;color:#fff;letter-spacing:-.5px;}
.brand>span {font-size:10px;line-height:1.65;letter-spacing:.17em;text-transform:uppercase;color:#c0d2c5;margin-top:12px;}
.brand .bar {opacity:.75;}
.side h4 {color:#91b2a2;letter-spacing:.15em;padding:24px 23px 10px;font-size:10px;}
.nav {padding:0 12px;}
.nav a,.nav button {border:1px solid transparent;border-radius:11px;padding:0 13px;min-height:46px;font-size:13px;margin:3px 0;color:#d3e3d9;gap:12px;text-decoration:none;}
.nav a:hover,.nav button:not(:disabled):hover {background:rgba(255,255,255,.06);color:#fff;}
.nav a.on,.nav button.on {padding-left:13px;border:1px solid rgba(152,213,169,.23);background:linear-gradient(135deg,#138752,#087443);color:#fff;box-shadow:0 6px 16px rgba(0,0,0,.12),inset 0 1px rgba(255,255,255,.12);}
body.essai .nav a.on {background:var(--fond-bouton);}
.nav a.on .ic {color:#d8ebd8;}
.nav.sous a,.nav.sous button {padding-left:28px;}
.sscat {color:#91b2a2;letter-spacing:.15em;padding:16px 23px;font-size:10px;}
.moi {margin-top:auto;padding:24px 23px 0;color:#d3e3d9;font-size:12px;}
.moi b {color:#fff;}.signature {font-family:'Manrope',sans-serif;font-size:10px;font-style:normal;color:#9eb9aa;line-height:1.7;padding:14px 23px 0;}
.main {min-width:0;flex:1;}
.top {position:relative;isolation:isolate;background:linear-gradient(90deg,rgba(252,252,249,.98) 0%,rgba(252,252,249,.95) 42%,rgba(252,252,249,.72) 100%),url('../images/banniere-finance.webp') center right/cover;min-height:174px;margin:26px 30px 0;padding:28px 30px;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);align-items:center;gap:24px;flex-wrap:wrap;}
.top .surtitre {font-size:9px;letter-spacing:.18em;font-weight:800;color:var(--vert-fonce);margin-bottom:10px;}
.top h1 {font-size:40px;font-weight:700;line-height:1.13;color:var(--vert-nuit);}
.top h1 .accent {color:var(--vert-fonce);}.top .sub {font-size:12px;color:var(--muted);margin-top:12px;}
.top .spacer {flex:1;}
.top .field {min-width:145px;}.top .field label {font-size:9px;letter-spacing:.15em;color:var(--ink-2);}
.top select {background:rgba(255,255,255,.94);box-shadow:var(--shadow-sm);border:1px solid #c9d7c9;min-width:145px;max-width:100%;font-size:12px;}
.page {padding:24px 30px 40px;max-width:1800px;margin:0 auto;}
.etat,.ouvre,.picker,.cafbox,.import,.reprise,.essai-bloc,.pilote,.cadenas {border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--line);}
.etat {padding:17px 20px;margin-bottom:16px;font-size:12px;line-height:1.6;}.etat b {font-size:13px;}
.etat.vert,.ouvre {background:linear-gradient(120deg,var(--pine-soft),var(--surface));border-color:#c2ddca;border-left:3px solid var(--vert);}
.ouvre {padding:18px 20px;}.etat.archive {border-color:#eabdb5;}.etat.jaune {border-color:#ead6b0;}
.tabs.nomenclatures {display:flex;flex-wrap:wrap;gap:12px;padding:0;margin:22px 0 24px;border:0;align-items:stretch;}
.tabs.nomenclatures .onglet {position:relative;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:14px;flex:1 1 145px;min-width:130px;min-height:106px;padding:17px 16px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink-2);font-size:11px;font-weight:600;box-shadow:var(--shadow-sm);text-decoration:none;line-height:1.4;}
.tabs.nomenclatures .onglet::before {content:'';display:block;width:22px;height:3px;background:var(--cda-gold);border-radius:3px;margin-bottom:1px;}
.tabs.nomenclatures .onglet .amt {display:block;font-family:'Manrope',sans-serif;font-size:20px;font-weight:800;color:var(--ink);margin:0;white-space:nowrap;}
.tabs.nomenclatures .onglet.on {background:var(--fond-bouton);border-color:var(--vert-fonce);color:#fff;box-shadow:0 10px 23px rgba(0,112,60,.16),inset 0 1px rgba(255,255,255,.15);}
.tabs.nomenclatures .onglet.on .amt {color:#fff;}.tabs.nomenclatures .onglet.on::before {background:#d1bd82;}
.tabs.nomenclatures .sepinv {flex:0 0 100%;border:0;padding:8px 2px 0;margin:0;color:var(--muted);font-size:9px;letter-spacing:.18em;text-transform:uppercase;}
.picker {padding:21px 22px;background:var(--surface);border-left:1px solid var(--line);margin-bottom:20px;}
.field label {font-size:10px;letter-spacing:.12em;color:var(--muted);}.picker .field label {font-family:'Playfair Display',Georgia,serif;text-transform:none;letter-spacing:0;font-size:21px;color:var(--ink);margin-bottom:14px;}
select,input[type=text],input[type=email],input[type=password],input[type=number],textarea {border-radius:var(--radius-sm);border-color:#cad6c8;background:#fff;}
select:focus,input:focus,textarea:focus {border-color:var(--vert);box-shadow:0 0 0 3px color-mix(in srgb,var(--vert) 15%,transparent);}
:focus-visible {outline:3px solid var(--vert);outline-offset:3px;}
.chips {gap:9px;margin-top:14px;}.chip {padding:9px 15px;background:#f4f7f0;border:1px solid #dbe5d7;border-radius:99px;color:var(--ink-2);font-size:12px;text-decoration:none;}
.chip.on {background:var(--vert-fonce);border-color:var(--vert-fonce);color:#fff;box-shadow:0 3px 8px rgba(0,90,44,.12);}
.note {font-size:11px;line-height:1.8;color:var(--muted);margin:14px 0;}.badge {font-size:10px;border-radius:99px;padding:3px 9px;white-space:nowrap;font-weight:600;}
.block,.pgroup,.wrap,.synth {border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:var(--surface);overflow:hidden;}
.block {margin:18px 0;width:100%;max-width:none;}.block>header {padding:17px 20px;background:linear-gradient(110deg,var(--pine-soft),#f7faf4);border-bottom:1px solid var(--line);color:var(--vert-fonce);}
.block.bdir>header {background:linear-gradient(110deg,#fbf1df,#fcfaf4);color:#865d1f;}
.block .body {padding:0;}.block .body>.wrap {border:0;border-radius:0;box-shadow:none;}
.grid.ro {width:100%;box-shadow:none;border:0;border-radius:0;}.grid,.ledger {width:100%;font-size:12px;}
.grid th,.ledger th {background:var(--vert-nuit);color:#fff;padding:14px 17px;letter-spacing:.1em;font-size:9px;box-shadow:none;}
.grid td,.ledger td {padding:12px 17px;vertical-align:middle;line-height:1.55;}
.grid tbody td,.ledger tbody td {border-bottom:1px solid #e8ede4;background-image:none;box-shadow:none;}
.grid tr.mission td,tr.ssect td,tr.sposte td,.ledger tr.poste td {background:linear-gradient(100deg,var(--pine-soft),#f2f7ee);color:var(--vert-fonce);font-weight:700;box-shadow:none;}
.grid tr.op td {background:#f9faf5;color:var(--muted);font-size:11px;}
.grid tr.total td,.ledger tr.total td {background:#edf3e8;color:var(--ink);font-weight:800;}
.grid .r,.ledger .r {font-variant-numeric:tabular-nums;white-space:nowrap;}
.grid tbody tr:not(.mission):not(.total):hover td {background-color:#f2f7ee;}
.recap {border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:var(--surface);padding:24px;margin-top:22px;}.recap h3 {font-size:19px;margin-bottom:15px;}.recap .grand {border-radius:10px;padding:16px;background:var(--pine-soft);color:var(--vert-fonce);}
.kpis {gap:15px;}.kpi {background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);padding:22px;border-radius:var(--radius-md);}.kpi b {font-family:'Manrope',sans-serif;font-size:29px;font-weight:800;}.kpi span {font-size:9px;letter-spacing:.12em;}.kpi.neg {border-color:#e5b7ac;}.kpi.pos {border-color:#c8dec9;}
.sh {font-family:'Playfair Display',Georgia,serif;font-size:23px;font-weight:600;letter-spacing:0;text-transform:none;margin-top:30px;color:var(--ink);}.sh::after {background:linear-gradient(90deg,#d8d0b9,transparent);}
.mini,.bouton,.add,.ok,.primaire {border-radius:10px;font-size:12px;}.mini.primaire,.bouton,.modal>footer .ok,.import .primaire,.reprise .primaire {background:var(--fond-bouton);box-shadow:0 3px 9px rgba(0,84,41,.12);color:#fff;}
.modal {border-radius:var(--radius-lg);box-shadow:0 24px 90px rgba(4,53,38,.2);border:1px solid var(--line);}.modal>header {background:var(--surface-2);padding:22px;}.modal>footer {padding:18px 22px;background:var(--surface-2);}
.public {background:radial-gradient(ellipse at 15% 10%,#195943,transparent 55%),linear-gradient(130deg,#063d2d,#03291e);min-height:100vh;padding:35px 20px;}
.carte {background:var(--surface);border:1px solid rgba(199,163,90,.35);border-radius:22px;box-shadow:0 25px 90px rgba(0,0,0,.22);padding:38px;max-width:480px;}.carte .marque b {font-family:'Playfair Display',Georgia,serif;font-size:29px;}.carte h1 {font-size:29px;}.carte .logo {filter:none;animation:none;}.carte .liens {line-height:1.8;}
.nav-toggle {display:none;}
a,button,input,select,.onglet {transition:background-color .18s,box-shadow .18s,border-color .18s,transform .18s;}
.tabs.nomenclatures .onglet:hover {transform:translateY(-2px);box-shadow:var(--shadow-md);}
button:disabled,input:disabled,select:disabled {opacity:.6;transform:none;}
@media(min-width:1600px) {.top{min-height:190px;}.top h1{font-size:46px;}.tabs.nomenclatures .onglet{flex-basis:150px;}.page{padding-top:28px;}}
@media(max-width:1200px) {.side{width:220px;flex-basis:220px;}.top{margin:20px 22px 0;padding:24px;}.page{padding:22px;}.top .spacer{display:none;}.top h1{font-size:36px;}.top form{flex:1 1 100%;}.top .field{flex:1;}.tabs.nomenclatures .onglet{flex-basis:160px;}}
@media(max-width:800px) {
 .app{display:block;}.side{display:none;width:100%;height:auto;position:relative;max-height:none;}.app.nav-open>.side{display:flex;}.brand{padding:22px;}.main{width:100%;}
 .nav-toggle{display:flex;align-items:center;gap:9px;margin:16px 20px 0;padding:10px 14px;background:var(--vert-nuit);color:#fff;border-radius:10px;min-height:44px;font-size:12px;}.nav-toggle svg{width:18px;height:18px;}
 .top{margin:14px 20px 0;padding:24px 20px;min-height:150px;}.top h1{font-size:33px;}.page{padding:20px;}.top form{gap:10px;display:flex;flex-wrap:wrap;}.top .field{min-width:130px;}.top select{width:100%;}.tabs.nomenclatures .onglet{flex-basis:140px;}
 .wrap{overflow-x:auto;}.grid,.ledger{min-width:620px;}.block>.body{overflow-x:auto;}.kpis{flex-wrap:wrap;}.kpi{flex:1 1 180px;}.sgrid{grid-template-columns:1fr;}
}
@media(max-width:480px) {.top,.nav-toggle{margin-left:12px;margin-right:12px;}.page{padding:18px 12px;}.top{padding:22px 16px;}.top h1{font-size:30px;}.top .field{flex:1 1 100%;}.tabs.nomenclatures{gap:9px;}.tabs.nomenclatures .onglet{flex:1 1 calc(50% - 9px);min-width:0;padding:14px 12px;}.tabs.nomenclatures .onglet .amt{font-size:18px;}.picker{padding:18px 16px;}.chip{font-size:11px;padding:8px 11px;}.carte{padding:26px;}.etat{padding:15px;}.kpi b{font-size:25px;}}
@media(prefers-reduced-motion:reduce) {*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important;}}
@media print {.nav-toggle,.side{display:none!important;}.top{margin:0;border:0;background:#fff;box-shadow:none;min-height:0;padding:0 0 16px;}.page{padding:0;}.main{width:100%;}.wrap,.block,.synth,.kpi,.recap{box-shadow:none;break-inside:avoid;}.tabs.nomenclatures .onglet{box-shadow:none;transform:none;}.grid,.ledger{min-width:0;}.grid th,.ledger th{background:#e7ede6;color:#12251e;}}
/* Neutraliser la barre horizontale de l'ancienne charte sur tablette. */
.top .selecteurs {display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;}
@media(max-width:1200px) {.top .selecteurs{flex:1 1 100%;}}
@media(max-width:1100px) {
 .side{flex-direction:column;align-items:stretch;gap:4px;padding:0 0 22px;}
 .side>div{display:block;}.side .brand{padding:25px 22px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:12px;}
 .brand b{font-size:26px;}.brand>span,.brand .bar,.jalons{display:block;}.brand .bar,.jalons{display:flex;}.signature{display:block;}
 .side h4{display:block;padding:18px 23px 8px;}.nav{display:block;}.nav a,.nav button{width:100%;}.nav .t{display:block;}
 .moi{display:block;margin-left:0;margin-top:auto;padding:22px 23px 0;}.moi span{display:block;}
}
@media(min-width:801px) and (max-width:1100px) {.app{display:flex;}}
@media(max-width:800px) {.side{display:none;}.app.nav-open>.side{display:flex;}.side .nav a,.side .nav button{min-height:46px;}.top .selecteurs{width:100%;}.top .selecteurs .field{flex:1;}.signature{display:none;}}
@media print {.top .selecteurs{display:none;}}
.tabs.nomenclatures .nomenclature-label {display:block;flex:1;}
.tabs.nomenclatures .onglet::before {margin-bottom:4px;}
@media(max-width:480px) {.top .selecteurs .field{flex:1 1 100%;}}
.grid tr.mission td.r,.grid tr.mission td.mono {color:var(--vert-fonce);}
.grid.ro th {background:var(--vert-nuit);color:#fff;}
.tabs.nomenclatures .sepinv~.onglet {flex:0 1 245px;min-height:86px;gap:7px;}
@media(min-width:1600px) {.top{min-height:164px;}.top h1{font-size:42px;}}
@media(max-width:480px) {.tabs.nomenclatures .sepinv~.onglet{flex:1 1 calc(50% - 9px);}}
@media(max-width:800px) {.sgrid,.sgrid2{grid-template-columns:minmax(0,1fr);width:100%;}.synth{width:100%;min-width:0;overflow-x:auto;}.picker select{min-width:0;width:100%;}.picker .field{min-width:0;max-width:100%;}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.kpi{min-width:0;}.kpi b{font-size:23px;overflow-wrap:anywhere;}}
@media(max-width:480px) {.kpis{grid-template-columns:1fr;}.picker .row{flex-wrap:wrap;}.picker .field{flex:1 1 100%!important;}}
/* Composition calée sur la maquette finance fournie, version 2. */
:root{--paper:#f5f4ef;--surface:#fff;--line:#e3e6dc;--shadow-sm:0 6px 18px rgba(50,46,27,.055);--fond-menu:linear-gradient(130deg,#00271c,#003122 48%,#001d16)}
.cda-icon{width:23px;height:23px;flex:none;vertical-align:middle}.cda-leaf{display:block;width:47px;height:42px;margin-bottom:5px;filter:drop-shadow(0 3px 3px #001b13)}
.side{width:240px;flex-basis:240px;background:var(--fond-menu);border-right:1px solid #7b9b64;box-shadow:inset -1px 0 8px #c9e08b17,5px 0 25px #0123151f}
.brand{padding:24px 29px 18px;margin-bottom:0}.brand b{font-size:28px;font-weight:700}.brand>span{margin-top:9px;letter-spacing:.13em;color:#b4c4b3}.brand .bar{display:none}.jalons{margin-top:18px}.side h4{padding:22px 29px 9px;letter-spacing:.18em;font-size:10px}.nav{padding:0 13px}.nav a,.nav button{min-height:44px;font-size:13px;padding-left:15px;margin:2px 0;border-radius:11px}.nav a.on,.nav button.on{background:linear-gradient(#047d50,#00643e);border:1px solid #3ca879;box-shadow:inset 0 2px 9px #92f4ba66,0 0 14px #0ccb622b}.nav a.on .ic{color:#fff}.nav .ic{width:20px;height:20px;color:#f0f4ed}.moi{background:linear-gradient(transparent,#00191299);padding:20px 29px 0;border:0}.signature{font-family:'Playfair Display',Georgia,serif;font-size:15px;font-style:italic;line-height:1.4;color:#ecede1;padding:17px 29px 28px;max-width:210px}
.main{background:radial-gradient(ellipse at 80% 22%,#eeebdfb3,transparent 60%),var(--paper)}
.top{margin:0;padding:37px 38px 67px;border:0;border-radius:0;box-shadow:none;min-height:215px;align-items:flex-start;gap:20px;background:linear-gradient(90deg,#fcfcf9de,#fcfcf9a6 30%,#fcfcf90f 68%),url('../images/banniere-finance.webp') center/cover}
.top .surtitre{font-size:10px;letter-spacing:.2em;color:#173a36;margin-bottom:8px}.top h1{font-size:50px;font-weight:800;letter-spacing:-1px;color:#081c28}.top h1 .accent{color:#005b3d}.top .sub{font-size:14px;color:#29454c;margin-top:10px}
.top .selecteurs{flex:0 1 auto;gap:7px;margin-top:-12px;flex-wrap:nowrap}.top .selecteurs .field{position:relative;background:linear-gradient(130deg,#ffffffa3,#ffffff66);border:1px solid #ffffffd6;box-shadow:0 6px 16px #1e251917,inset 0 1px #fff;border-radius:13px;padding:8px;min-width:142px;backdrop-filter:blur(8px)}.top .selecteurs .field label{font-size:11px;font-weight:600;letter-spacing:0;text-transform:none;margin-bottom:4px;color:#0c2530}.top .selecteurs select{min-height:37px;font-size:11px;border:0;border-radius:9px;background:#fff;padding-left:32px;min-width:132px;box-shadow:0 2px 5px #00000008}.cda-select-icon{position:absolute;bottom:18px;left:18px;width:17px;height:17px;color:#0a2833;pointer-events:none}
.page{position:relative;margin-top:-24px;padding:0 31px 40px}.cda-status-row{display:flex;align-items:stretch;gap:10px;margin-bottom:14px}.cda-status-row:not(:has(>div)){display:none}.cda-status-row>.rappel{flex:1.8}.cda-status-row>.etat{flex:1}.cda-status-row>.rappel,.cda-status-row>.etat{margin:0;max-width:none;min-width:0;border:1px solid #ffffffd9;background:linear-gradient(130deg,#edf7eaf2,#fbfcf7e6);border-radius:15px;box-shadow:0 6px 22px #18301c14,inset 0 1px #fff;min-height:73px;padding:12px 15px;font-size:11px;line-height:1.4}
.cda-status-row .rappel{display:flex;align-items:center;gap:15px}.cda-status-row .rappel>div{flex:1}.cda-status-row b{font-family:'Playfair Display',Georgia,serif;font-size:15px;font-weight:700;color:#073d2a;display:block;margin-bottom:5px}.cda-status-row .rappel .mini{display:flex;align-items:center;justify-content:center;gap:15px;background:linear-gradient(#006442,#003c2b);color:#fff;min-height:44px;white-space:nowrap;border:1px solid #287a56;border-radius:10px;padding:0 24px;box-shadow:inset 0 2px 5px #ffffff24;font-size:12px;font-weight:700}.cda-status-row .rappel .mini .cda-icon{width:18px}
.cda-status-icon{display:flex;align-items:center;justify-content:center;width:37px;height:39px;flex:0 0 37px;border-radius:10px;background:linear-gradient(145deg,#13a66e,#006843 65%,#034331);color:#fff;box-shadow:0 4px 8px #005d283d,inset 1px 2px 2px #a8ffc07a}.rappel .cda-status-icon{border-radius:99px;width:36px;height:36px;flex-basis:36px}.cda-vigueur{display:flex;align-items:center;gap:16px}.cda-vigueur>div{flex:1}.cda-vigueur>div>span{display:block;font-size:10px;line-height:1.5}.cda-status-check{display:flex;width:30px;height:30px;border-radius:50%;background:white;align-items:center;justify-content:center;box-shadow:0 4px 8px #0c3a141f;color:var(--vert-fonce)}.cda-status-check svg{width:19px}.cda-status-row .archive{background:#fce9e5;border-color:#e6a99b}.cda-status-row .jaune{background:#fff3df;border-color:#ecd3a4}
.tabs.nomenclatures{gap:10px;margin:0 0 18px;align-items:stretch}.tabs.nomenclatures .onglet{display:grid;grid-template-columns:37px minmax(0,1fr);grid-template-rows:1fr 1fr;gap:1px 10px;flex:1 1 140px;min-width:130px;min-height:78px;padding:12px 11px;border-radius:14px;border:1px solid #ffffffe6;background:linear-gradient(130deg,#fff,#f7f7f3);box-shadow:0 8px 20px #322d140e}.tabs.nomenclatures .onglet::before{display:none}
.cda-kpi-icon{grid-column:1;grid-row:1/3;align-self:center;display:flex;align-items:center;justify-content:center;width:37px;height:40px;border-radius:10px;background:linear-gradient(145deg,#fff,#eeefea);color:#10232c;box-shadow:0 4px 7px #2a2c1c1c,inset 0 1px #fff}.tabs.nomenclatures .nomenclature-label{grid-column:2;align-self:end;display:block;font-size:9.5px;font-weight:500;line-height:1.25;color:#223841}.tabs.nomenclatures .onglet .amt{grid-column:2;align-self:start;font-size:19px;font-weight:750;color:#081b2a;line-height:1.6}
.tabs.nomenclatures .onglet.on{background:linear-gradient(130deg,#006348,#003f2e);border:1px solid #0c7650;box-shadow:0 8px 18px #0043232e,inset 0 1px 1px #ecffdb66}.tabs.nomenclatures .onglet.on .nomenclature-label,.tabs.nomenclatures .onglet.on .amt{color:white}.tabs.nomenclatures .onglet.on .cda-kpi-icon{background:linear-gradient(130deg,#05a364,#007846);color:white;box-shadow:inset 0 1px 2px #54c796,0 3px 6px #0003;border:1px solid #16a570}
.tabs.nomenclatures .sepinv{display:none}.tabs.nomenclatures .onglet.onglet-investissement{display:flex;flex:0 0 auto;min-height:25px;gap:10px;background:transparent;border:0;border-radius:0;padding:0 6px;box-shadow:none}.onglet-investissement .cda-kpi-icon{display:none}.tabs.nomenclatures .onglet.onglet-investissement .nomenclature-label{font-size:11px;font-weight:650;align-self:center}.tabs.nomenclatures .onglet.onglet-investissement .amt{font-size:12px;font-weight:500;color:#48636c;align-self:center}.tabs.nomenclatures .onglet.onglet-investissement.on{background:var(--pine-soft);border-radius:6px}.tabs.nomenclatures .onglet.onglet-investissement.on .amt,.tabs.nomenclatures .onglet.onglet-investissement.on .nomenclature-label{color:var(--vert-fonce)}
.cda-dashboard{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(330px,1fr);gap:18px;align-items:start}.cda-ledger-column{min-width:0}.picker{background:linear-gradient(125deg,#fffffff5,#fbfbf8e8);border:1px solid #fff;border-radius:15px;padding:11px 17px;box-shadow:0 9px 24px #322e1a0f;margin-bottom:12px}.picker .field label{font-size:19px;line-height:1.2;display:flex;align-items:center;gap:11px;margin:0 0 8px;font-weight:700;color:#081b2a}
.cda-section-icon{display:inline-flex;align-items:center;justify-content:center;width:31px;height:33px;flex:0 0 31px;border-radius:8px;background:linear-gradient(135deg,#12a168,#006741);color:#fff;box-shadow:0 4px 9px #005b272e,inset 0 1px 1px #6cce9f}.cda-section-icon .cda-icon{width:19px;height:19px}.picker select{min-height:37px;border:1px solid #d4d9d0;border-radius:9px;font-size:11px}.chips{gap:8px;margin-top:10px}.chip{display:inline-flex;align-items:center;gap:9px;padding:9px 12px;font-size:11px;border-radius:11px;background:linear-gradient(#fff,#f1f2ee);border:1px solid #e0e2dc;box-shadow:0 4px 6px #3c371f12}.chip .cda-icon{width:22px;height:22px;padding:3px;border-radius:7px;background:#fff;box-shadow:0 2px 4px #21251b12;color:#30454b}.chip.on{background:linear-gradient(#038455,#00623f);border-color:#119163;color:white;box-shadow:inset 0 1px 3px #55ee9247,0 4px 8px #004d231f}.chip.on .cda-icon{background:transparent;color:white;box-shadow:none}
.note{font-size:10px;line-height:1.8;margin:12px 2px 10px}.badge{font-size:9px;padding:2px 7px;border-radius:99px}.block{margin:10px 0;border-radius:13px;border-color:#d9dfd1;box-shadow:0 6px 12px #2d2f180a}.block>header{min-height:38px;padding:7px 16px;border-bottom:1px solid #e6cc9a}.block.bdir>header{background:linear-gradient(#fff8ec,#fff0d8)}.block>header .name{font-size:12px}.block>header .tot{font-size:18px;font-family:'Playfair Display',Georgia,serif}.block .body{padding:5px 16px 9px}.block .body>.wrap{border:1px solid #cad7c3;border-radius:11px}
.grid.ro{font-size:10px}.grid.ro th{background:linear-gradient(#153e31,#053424);font-size:8px;padding:9px 12px;letter-spacing:.06em}.grid.ro td{padding:5px 12px;font-size:10px;line-height:1.5;border-bottom:1px solid #dce2d5}.grid.ro tr.mission td{background:linear-gradient(#078149,#00602f);color:#fff;font-size:10px}.grid.ro tr.mission td.r{color:#fff}.grid.ro tr.op td{font-size:9px;background:#f5f6f1;color:#526b72}.grid.ro tbody tr:not(.mission):not(.total):hover td{background:#edf4ec}.grid.ro tbody tr.mission:hover td{background:linear-gradient(#078149,#00602f)}.grid.ro tr.total td{background:#e7f1e0}.recap{padding:16px;margin-top:13px;border:1px solid white}.recap h3{font-size:16px}.recap .l{font-size:12px}.recap .grand{padding:12px;font-size:13px}
.cda-insights{display:flex;flex-direction:column;gap:16px;min-width:0}.cda-chart-card{background:linear-gradient(125deg,#fff,#f9f9f5);border:1px solid #fff;border-radius:16px;padding:13px 16px 19px;box-shadow:0 10px 23px #37311c0f}.cda-chart-card h2{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:750;color:#0b1b29;margin:0 0 8px;letter-spacing:-.4px}.cda-chart-context{font-size:9px;line-height:1.5;margin:0 0 14px 41px;color:#6f7e77}
.cda-donut-layout{display:grid;grid-template-columns:minmax(130px,1.06fr) minmax(130px,1fr);align-items:center;gap:16px}.cda-donut{position:relative;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--cda-donut-parts));box-shadow:0 10px 13px #004c452e,inset 2px 3px 3px #f1fffc,inset -3px -5px 6px #002d1c38;transform:rotate(-18deg);border:1px solid #0f633a4d}.cda-donut::after{content:'';position:absolute;inset:0;border-radius:50%;background:linear-gradient(140deg,#ffffff2e,transparent 45%,#00301f17);pointer-events:none}
.cda-donut-center{position:absolute;inset:24%;border-radius:50%;background:linear-gradient(#fff,#f9faf5);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 1px #ffffff99,inset 0 6px 12px #18503529;transform:rotate(18deg);text-align:center;color:#0b1d2b}.cda-donut-center b{font-family:'Playfair Display',Georgia,serif;font-size:19px;white-space:nowrap}.cda-donut-center span{font-size:10px;margin-top:5px}
.cda-chart-legend{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.cda-chart-legend li{display:flex;align-items:center;gap:8px;font-size:9px;line-height:1.3}.cda-chart-legend li>i{width:17px;height:17px;flex:0 0 17px;border-radius:50%;background:var(--cda-part-color);box-shadow:inset 0 2px 3px #ffffff73,inset 0 -2px 3px #00000026}.cda-chart-legend li>div{flex:1;min-width:0}.cda-chart-legend span{color:#29424e;display:block}.cda-chart-legend b{display:block;font-size:11px;margin-top:2px;color:#0b1b29}.cda-chart-legend small{font-size:9px;color:#4e626c;white-space:nowrap}
.cda-comparison-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:9px;font-size:11px;margin:20px 4px}.cda-comparison-row b{font-variant-numeric:tabular-nums;color:#143d30}.cda-comparison-track{flex:0 0 100%;height:20px;border-radius:5px;background:repeating-linear-gradient(90deg,#edf1e9 0,#edf1e9 calc(25% - 1px),#dce4d7 calc(25% - 1px),#dce4d7 25%);overflow:hidden}.cda-comparison-track i{display:block;height:100%;border-radius:5px;background:linear-gradient(#a0c6aa,#77a486);box-shadow:inset 0 1px 1px #ffffff99}.retained .cda-comparison-track i{background:linear-gradient(#06a064,#00603d)}.cda-comparison-delta{margin:25px 4px 0;padding:15px 0 0;border-top:1px solid #e0e6db;display:flex;justify-content:space-between;font-size:11px;color:#496155}.cda-comparison-delta b{color:#063d2d}
@media(min-width:1500px){.tabs.nomenclatures .onglet:not(.onglet-investissement){flex-basis:140px}.cda-dashboard{grid-template-columns:minmax(0,1.72fr) minmax(390px,1fr)}.tabs.nomenclatures .onglet:first-of-type{flex-grow:1.3}}
@media(max-width:1400px) and (min-width:801px){.side{width:220px;flex-basis:220px}.top{padding:30px 30px 57px}.top h1{font-size:42px}.top .selecteurs{flex:1 1 auto}.top .selecteurs .field{min-width:125px}.top .selecteurs select{min-width:120px}.cda-dashboard{grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr)}.cda-donut-layout{grid-template-columns:1fr}.cda-donut{width:180px;margin:0 auto 10px}.cda-chart-legend{gap:9px}.cda-chart-card h2{font-size:17px}.tabs.nomenclatures .onglet{flex-basis:140px}}
@media(max-width:1100px) and (min-width:801px){.top .selecteurs{flex:1 1 100%;margin:10px 0 0}.top{min-height:245px}.brand>span{display:block}.brand .bar{display:none}.side .brand{padding:23px 25px}.side h4{padding:20px 25px 8px}.page{padding-left:22px;padding-right:22px}.cda-status-row{flex-direction:column}.cda-dashboard{grid-template-columns:minmax(0,1fr)}.cda-insights{display:grid;grid-template-columns:1fr 1fr}.cda-donut-layout{grid-template-columns:1fr 1fr}.cda-donut{width:150px}.signature{display:block}.tabs.nomenclatures .onglet{flex-basis:160px}}
@media(max-width:800px){.side{width:100%;height:auto;position:relative;background:var(--fond-menu)}.nav-toggle{position:relative;z-index:2;margin:12px;border:1px solid #3c7554;box-shadow:inset 0 1px 3px #ffffff26}.top{margin:0;min-height:220px;padding:24px 20px 48px}.top h1{font-size:38px}.top .selecteurs{flex:1 1 100%;margin:8px 0 0;flex-wrap:wrap;width:100%}.top .selecteurs .field{flex:1 1 140px}.top .selecteurs select{width:100%}.page{margin-top:-20px;padding:0 15px 30px}.cda-status-row{flex-direction:column;gap:9px}.cda-status-row>.rappel,.cda-status-row>.etat{flex:auto}.cda-dashboard{grid-template-columns:minmax(0,1fr)}.cda-insights{display:grid;grid-template-columns:minmax(0,1fr)}.cda-donut-layout{grid-template-columns:minmax(130px,1fr) minmax(130px,1fr)}.cda-donut{width:100%;max-width:230px}.tabs.nomenclatures .onglet{flex:1 1 calc(33.333% - 10px);min-width:130px}.tabs.nomenclatures .onglet.onglet-investissement{flex:0 0 auto}.cda-status-row .rappel .mini{padding:0 16px}.cda-status-row .rappel{flex-wrap:wrap}.cda-status-row .rappel>div{min-width:200px}.block .body{padding:5px 8px 9px}.grid.ro{min-width:580px}.picker .field label{font-size:19px}.signature{display:none}}
@media(max-width:480px){.top h1{font-size:35px}.top .selecteurs .field{flex:1 1 100%}.top .selecteurs{gap:7px}.cda-select-icon{bottom:18px}.tabs.nomenclatures .onglet{flex:1 1 calc(50% - 10px);min-width:0}.tabs.nomenclatures .onglet .amt{font-size:18px}.tabs.nomenclatures .nomenclature-label{font-size:10px}.tabs.nomenclatures .onglet.onglet-investissement{flex:0 1 100%;justify-content:space-between}.cda-donut-layout{gap:10px}.cda-donut-center b{font-size:16px}.cda-chart-legend li{font-size:8px}.chip{padding:8px 10px;font-size:10px}.cda-status-row .rappel .mini{margin-left:51px}}
body.essai .side{background:var(--fond-menu)}body.essai .top h1 .accent{color:var(--vert-fonce)}body.essai .tabs.nomenclatures .onglet.on,body.essai .nav a.on,body.essai .chip.on{background:var(--fond-bouton);border-color:var(--vert-fonce)}body.essai .cda-section-icon,body.essai .cda-status-icon{background:var(--fond-bouton)}body.essai .cda-status-row>.rappel,body.essai .cda-status-row>.etat{background:var(--pine-soft)}body.essai .grid.ro tr.mission td{background:var(--fond-bouton)}
@media print{.top{padding:0 0 14px;min-height:0;background:#fff}.top h1{font-size:32px}.page{margin:0;padding:0}.cda-dashboard{display:block}.cda-insights{display:none}.cda-status-row{display:none}.side,.nav-toggle{display:none!important}.grid.ro tr.mission td{background:#e7ede6;color:#12251e}.grid.ro tr.mission td.r{color:#12251e}}
.brand b .cda-brand-accent{display:inline;font:inherit;letter-spacing:inherit;color:#2db582}
.jalons .jalon{position:relative}.jalons .jalon i{position:relative;height:3px;border-radius:2px;background:var(--teinte)}.jalons .jalon i::before{content:'';position:absolute;left:0;top:-4px;width:10px;height:10px;border:2px solid var(--teinte);border-radius:50%;background:#002c1e;box-shadow:0 0 0 2px #002c1e}.jalons .jalon.prepare i{background:linear-gradient(90deg,#c7a35a,#8a7346)}.jalons .jalon.prepare i::before{border-color:#da973d}.jalons .jalon span{margin-top:7px}
.tabs.nomenclatures{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.tabs.nomenclatures .onglet{min-width:0;min-height:76px;gap:2px 8px;padding:11px 10px;grid-template-columns:34px minmax(0,1fr)}
.cda-kpi-icon{width:34px;height:40px}.tabs.nomenclatures .onglet .amt{font-size:17px;white-space:nowrap}
.tabs.nomenclatures .onglet.onglet-investissement{grid-column:span 2;min-height:22px;padding:0 6px;justify-content:flex-start;gap:10px}
.tabs.nomenclatures .onglet.onglet-investissement .amt{font-size:12px}
@media(min-width:1650px){.tabs.nomenclatures .onglet .amt{font-size:18px}}
@media(max-width:1400px){.tabs.nomenclatures{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){.tabs.nomenclatures{grid-template-columns:repeat(3,minmax(0,1fr))}.tabs.nomenclatures .onglet.onglet-investissement{grid-column:span 3}}
@media(max-width:480px){.tabs.nomenclatures{grid-template-columns:repeat(2,minmax(0,1fr))}.tabs.nomenclatures .onglet.onglet-investissement{grid-column:span 2}.tabs.nomenclatures .onglet .amt{font-size:17px}}
.cda-title-mark{display:inline-flex;align-items:center;justify-content:center;width:39px;height:43px;margin-left:8px;border-radius:11px;vertical-align:middle;background:linear-gradient(130deg,#fcf1d7,#d2b67d);box-shadow:0 5px 12px #5e4c241f,inset 0 2px 2px #fff5d7;color:#164d35}.cda-title-mark .cda-icon{width:26px;height:29px}
.grid.ro th:not(:first-child),.grid.ro td.r{white-space:nowrap}.grid.ro td:first-child{min-width:220px}
@media(max-width:480px){.cda-title-mark{width:29px;height:32px}.cda-title-mark .cda-icon{width:21px;height:23px}}
.tabs.nomenclatures .onglet.onglet-investissement{flex-direction:row;justify-content:flex-start;align-items:center}
.cda-chart-legend{gap:9px}.cda-chart-legend li>div>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cda-donut{max-width:210px;margin-left:auto;margin-right:auto}
.cda-chart-context{font-size:8.5px;margin-bottom:10px}
.cda-donut{width:100%}
.tabs.nomenclatures .onglet.onglet-investissement .nomenclature-label{flex:0 0 auto}
.cda-comparison-row{margin:12px 4px;gap:6px}.cda-comparison-track{height:14px}.cda-comparison-delta{margin-top:15px;padding-top:11px}
/* Harmonisation des cinq propositions : cycle, arbitrage, synthèse, comparatif, pôle. */
.kpis{display:flex;flex-wrap:wrap}.kpis>.kpi{flex:1 1 170px;min-width:0;padding:18px 18px 18px 62px;position:relative}.kpis>.kpi::before{content:'€';position:absolute;left:15px;top:22px;display:grid;place-items:center;width:34px;height:40px;background:linear-gradient(135deg,#eaf7ea,#cfe8d6);border-radius:10px;color:#075637;font-size:24px;font-weight:800;box-shadow:inset 0 1px #fff,0 4px 8px #164f2915}.kpis>.kpi.neg::before{background:linear-gradient(#fff1ef,#f9deda);color:#b63334}.kpis>.kpi b{font-size:clamp(19px,1.65vw,29px)}
.cda-pole-dashboard{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:18px;align-items:start}.cda-recap-pole>.sh{margin:0 0 14px;font-size:21px}.cda-recap-pole .synth{max-width:none;border:0;box-shadow:none;padding:0}.synth .grid{width:100%}.cda-repartition{padding:12px 0 20px}.cda-pole-dashboard .cda-donut{max-width:230px}.cda-chart-legend li{font-size:11px}.cda-chart-legend b{font-size:13px}.cda-chart-legend small{font-size:10px}
.cda-synthese-cards{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.cda-synthese-cards>.synth{max-width:none;min-width:0;padding:15px;border-radius:16px;background:linear-gradient(130deg,#fff,#fafaf6);border:1px solid #fff;box-shadow:0 9px 24px #332e190f}.cda-synthese-cards .cda-donut-layout{grid-template-columns:minmax(90px,.8fr) minmax(110px,1fr);gap:10px}.cda-synthese-cards .cda-donut-center b{font-size:clamp(11px,1vw,17px)}.cda-synthese-cards .cda-chart-legend li{font-size:9px;gap:5px}.cda-synthese-cards .cda-chart-legend b{font-size:10px}.cda-synthese-cards .cda-chart-legend small{font-size:8px}.cda-synthese-cards .grid td,.cda-synthese-cards .grid th{padding:9px 8px;font-size:11px}.cda-synthese-cards .grid td:first-child{white-space:normal}
.synth tr.stot td,.comp tr.stot td{background:linear-gradient(120deg,#f6e9c9,#ede0bd)!important;border-top:1px solid #d7bd83;color:#133d30}.synth tr.sres td,.synth tr.ssolde td,.comp tr.sres td,.comp tr.ssolde td{background:#e5f1e8}.grid.comp thead th{background:linear-gradient(#094c37,#023727);color:#fff}.grid.comp thead tr.sub th{background:#087a4f}.grid.comp tr.ssect td{background:#e9f4ee;color:#075637;font-weight:750}.grid.comp td.tot{background:#e9f2eb}.grid.comp td.def,.cda-comparison-delta.def b{color:#bc2737}.grid.comp td.ben,.cda-comparison-delta.ben b{color:#08713f}.grid.comp{width:100%}
.cda-resultats-strip{display:flex;gap:24px;align-items:center;background:linear-gradient(125deg,#f0f8f1,#fff);border:1px solid #fff;border-radius:16px;padding:18px 22px;margin:0 0 16px;box-shadow:0 6px 18px #332e190c}.cda-resultats-strip h3{font:700 21px 'Playfair Display',Georgia,serif;margin:0 0 6px}.cda-resultats-strip p{font-size:10px;color:#61766b;margin:0}.cda-resultats-items{flex:1;display:flex;gap:14px;overflow-x:auto;padding:5px}.cda-resultat-item{flex:1;min-width:80px;text-align:center;font-size:11px}.cda-resultat-item span{display:block;font-weight:600}.cda-resultat-item b{display:block;margin-top:4px;white-space:nowrap;color:#08713f;font-size:12px}.cda-resultat-item.def b{color:#bc2737}.cda-signed-track{height:100px;position:relative;background:linear-gradient(transparent 49%,#c8d9cf 49%,#c8d9cf 50%,transparent 50%)}.cda-signed-track i{position:absolute;bottom:50%;left:calc(50% - 18px);width:36px;background:linear-gradient(#a8d7be,#33966b);border-radius:3px 3px 0 0}.def .cda-signed-track i{bottom:auto;top:50%;background:linear-gradient(#ed8791,#d94756);border-radius:0 0 3px 3px}
.pilote,.pilote.fige{padding:18px 22px;background:linear-gradient(120deg,#f0f7ec,#fff);border:1px solid #fff;border-top:3px solid #08794d;border-radius:16px;box-shadow:0 8px 24px #332e190f}.pilote .ph{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(0,2fr);align-items:start;gap:20px}.pilote .pa{margin:0;display:flex;gap:12px;align-items:center}.pilote .ouvre{flex:1;min-width:180px;max-width:none}.pilote .ouvre span{font-size:11px;line-height:1.6}.pilote .ph>.pa form{flex:0 0 auto}.pilote .mini{border-radius:9px;padding:10px 13px}.pilote .poles{gap:8px}.pole-lock{border-radius:9px;padding:8px 12px;background:#fff;box-shadow:0 3px 6px #253c1b0d}.cda-arbitrage-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,1fr);gap:18px;align-items:start}.cda-arbitrage-layout .wrap.plein{width:100%;max-width:none}.cda-arbitrage-summary{position:sticky;top:18px}.cda-arbitrage-summary h2{font-size:18px}.cda-arbitrage-summary .note{font-size:11px}.cda-summary-line{display:flex;gap:10px;justify-content:space-between;font-size:11px;line-height:1.5;padding:14px 0;border-bottom:1px solid #e2e9df}.cda-summary-line b{white-space:nowrap}.cda-arbitrage-layout .grid{width:100%;font-size:12px}.cda-arbitrage-layout .grid th{font-size:10px}.cda-arbitrage-layout .grid td{padding:10px}.cda-arbitrage-layout .grid tr.mission td{background:#e5f2e8;color:#075637}
@media(max-width:1200px){.cda-synthese-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cda-arbitrage-layout{grid-template-columns:minmax(0,1fr)}.cda-arbitrage-summary{position:static}.pilote .ph{grid-template-columns:1fr}.cda-pole-dashboard{grid-template-columns:1fr 1fr}.cda-pole-dashboard .cda-donut-layout{grid-template-columns:1fr}.cda-pole-dashboard .cda-chart-legend{margin-top:14px}}
@media(max-width:800px){.cda-pole-dashboard,.cda-synthese-cards{grid-template-columns:minmax(0,1fr)}.pilote .pa{align-items:flex-start}.cda-resultats-strip{display:block}.cda-resultats-items{margin-top:14px}.cda-pole-dashboard .cda-donut-layout{grid-template-columns:1fr 1fr}.kpis>.kpi{flex-basis:140px}.kpis>.kpi b{font-size:20px}.cda-synthese-cards .cda-donut-center b{font-size:16px}.cda-arbitrage-layout .grid{min-width:680px}}
@media print{.cda-pole-dashboard{display:block}.cda-arbitrage-layout{display:block}.cda-arbitrage-summary,.cda-resultats-strip,.cda-repartition{display:none}.cda-synthese-cards{display:block}}
.cda-synthese-cards{width:100%;justify-content:stretch}.cda-synthese-cards>.synth{width:100%;justify-self:stretch}.cda-recap-pole>.synth{width:100%;max-width:none}.cda-recap-pole .grid{width:100%;max-width:none}.pilote .ouvre b{display:inline;font-family:inherit;font-size:inherit}.pilote .ouvre>b{display:block;margin:0 0 5px}.pilote .ouvre{padding:13px 16px}.pilote .ph>div:first-child .sm{display:block;margin:9px 0 0}.cda-synthese-cards .cda-donut-center b{font-size:12px}.cda-synthese-cards .cda-chart-legend span{-webkit-line-clamp:3}

/* ==================================================================
   Retouches des tableaux

   Le tableau est l'outil de travail de cette application : on y passe
   des heures, on y cherche une ligne parmi quarante et une colonne
   parmi huit. Ces règles ne changent aucune couleur de la charte ;
   elles travaillent l'espace, l'alignement et les repères de lecture.
   ================================================================== */

/* ---------- de l'air ---------- */

/*
 * Les lignes respirent. Un tableau serré se lit vite quand il fait dix
 * lignes et devient illisible à quarante : l'œil saute d'une ligne à
 * l'autre en suivant une colonne, et c'est la hauteur qui l'en empêche.
 */
.grid.comp td,
.synth td{padding:13px 16px}
.grid.comp thead th{padding:13px 16px}

/* Les montants gagnent un point : ce sont eux qu'on vient lire. */
.grid.comp td.r,
.synth td.r{font-size:13.5px;letter-spacing:.005em}

/* ---------- la colonne des libellés ---------- */

/*
 * Un filet la sépare des chiffres, et elle reste en place quand on
 * fait défiler vers la droite. Sept pôles en colonnes, et sans cela on
 * défile jusqu'à ne plus savoir quelle ligne on lit.
 */
.grid.comp td:first-child,
.grid.comp thead th:first-child{
  box-shadow:inset -1px 0 0 rgba(18,37,30,.09);
}
.wrap.scroll .grid.comp thead th:first-child,
.wrap.scroll .grid.comp tbody td:first-child{
  position:sticky;left:0;z-index:2;
}
/* les lignes ordinaires n'ont pas de fond : on leur en donne un, sinon
   le tableau défilerait au travers */
.wrap.scroll .grid.comp tbody tr:not([class]) td:first-child{
  background-color:#fff;
}

/* ---------- les bandeaux de section ---------- */

/*
 * Alignés à gauche, avec une pastille : centrés, ils flottaient sans
 * rien accrocher. Une section s'ouvre à gauche, comme une ligne.
 */
.grid.comp tr.ssect td,
.synth tr.ssect td,
.synth tr.stitre td{
  text-align:left;padding-left:16px;
  letter-spacing:.14em;
}
.grid.comp tr.ssect td::before,
.synth tr.ssect td::before{
  content:'';display:inline-block;vertical-align:-1px;
  width:9px;height:9px;border-radius:50%;margin-right:10px;
  background:currentColor;opacity:.55;
}

/* ---------- repères de lecture ---------- */

/* Une ligne sur deux, à peine teintée : de quoi suivre huit colonnes
   sans perdre la sienne. */
.grid.comp tbody tr:not([class]):nth-child(even) td{background:#fbfcfa}
.wrap.scroll .grid.comp tbody tr:not([class]):nth-child(even) td:first-child{
  background-color:#fbfcfa;
}

/* Et la ligne survolée, franchement. */
.grid.comp tbody tr:not([class]):hover td{background:#eef6f0}
.wrap.scroll .grid.comp tbody tr:not([class]):hover td:first-child{
  background-color:#eef6f0;
}

/* ---------- la colonne des totaux ---------- */

.grid.comp td.tot{
  box-shadow:inset 1px 0 0 rgba(8,121,79,.22);
  font-weight:700;
}
.grid.comp thead th.tot{box-shadow:inset 1px 0 0 rgba(199,163,90,.45)}

/* ---------- les lignes de clôture ---------- */

/* Un total ferme ce qu'il additionne ; un filet le dit mieux qu'une
   teinte de plus, qui viendrait s'intercaler dans l'échelle. */
.grid.comp tr.stot td,
.synth tr.stot td{border-top:1px solid #d7bd83}
.grid.comp tr.sres td,
.grid.comp tr.ssolde td,
.synth tr.sres td,
.synth tr.ssolde td{
  border-top:2px solid #08794d;
  padding-top:15px;padding-bottom:15px;
  font-size:14px;
}

/* ==================================================================
   Le filigrane de la Corse

   Le contour fourni remplace celui qui était dessiné à la main : il
   est juste, ce qu'un tracé approximatif ne sera jamais. L'image est
   servie en 360 px de large — deux fois la taille d'affichage, pour
   rester nette sur un écran à forte densité — et pèse 19 Ko.

   Elle est posée en bas de la barre, derrière le nom de la personne
   connectée et la devise, à faible opacité : c'est un repère
   d'identité, pas une illustration.
   ================================================================== */

.side{
  background:
    url('../images/corse.webp') center bottom 104px / 148px auto no-repeat,
    var(--fond-menu);
}
.side::before{
  /* un halo très doux sous l'île, pour qu'elle ne flotte pas sur le
     dégradé du menu */
  content:'';position:absolute;left:50%;bottom:96px;
  width:210px;height:250px;transform:translateX(-50%);
  background:radial-gradient(ellipse at center,rgba(199,163,90,.10),rgba(199,163,90,0) 70%);
  pointer-events:none;
}

/* ==================================================================
   La largeur des blocs de saisie

   Ils occupaient toute la largeur de l'écran. Sur un 27 pouces, un
   libellé de compte se retrouvait à cinquante centimètres de son
   montant : l'œil ne fait plus le lien, et l'on pointe la ligne du
   doigt pour ne pas se tromper.

   Le bloc épouse donc son contenu, avec un plancher pour qu'il ne
   devienne pas étroit quand une mission n'a qu'une ligne, et un
   plafond à la largeur disponible.
   ================================================================== */

.block{
  width:fit-content;
  min-width:min(660px,100%);
  max-width:100%;
}

/* Le tableau, lui, remplit le bloc qu'il vient de dimensionner. */
.block .body>.wrap,
.block table.ledger{width:100%}

/*
 * Le récapitulatif d'onglet, en bas de la saisie, suit la même règle :
 * deux colonnes n'ont pas besoin de toute la page.
 */
.recap{width:fit-content;min-width:min(420px,100%);max-width:100%}

/* ==================================================================
   Lisibilité : légendes, tuiles, tableaux de comptes
   ================================================================== */

/*
 * Les légendes des anneaux.
 *
 * Elles étaient à 9 px, héritées d'une maquette où trois cartes se
 * partageaient la largeur. Les tableaux qui les doublaient sont
 * partis : la place est là, autant s'en servir.
 */
.cda-chart-legend li{font-size:12px;gap:11px}
.cda-chart-legend li>i{width:14px;height:14px;flex:0 0 14px}
.cda-chart-legend span{font-size:12.5px;color:var(--ink-2)}
.cda-chart-legend b{font-size:15px;margin-top:3px}
.cda-chart-legend small{font-size:12px;font-weight:700;color:var(--muted)}
.cda-synthese-cards .cda-chart-legend li{font-size:12px;gap:11px}
.cda-synthese-cards .cda-chart-legend b{font-size:15px}
.cda-synthese-cards .cda-chart-legend small{font-size:12px}
.cda-donut-center b{font-size:clamp(15px,1.5vw,21px)}

/*
 * Les tuiles de nomenclature : même largeur, moitié moins hautes.
 *
 * Elles empilaient un filet, une icône, un libellé et un montant sur
 * 106 px. Tout tient sur une ligne et demie ; ce qui reste n'est que
 * de l'air, et cet air repoussait le tableau sous la ligne de
 * flottaison.
 */
.tabs.nomenclatures .onglet{
  min-height:58px;padding:9px 14px;gap:2px;
  flex-direction:row;align-items:center;
}
.tabs.nomenclatures .onglet::before{display:none}
.tabs.nomenclatures .onglet .cda-kpi-icon{flex:0 0 auto;margin-right:2px}
.tabs.nomenclatures .onglet .nomenclature-label{
  flex:1;min-width:0;font-size:11.5px;line-height:1.2;
}
.tabs.nomenclatures .onglet .amt{font-size:16px;flex:0 0 auto}

/*
 * Les deux onglets d'investissement redeviennent des boutons.
 *
 * Ils avaient été réduits à une ligne de texte : on ne voyait plus
 * qu'ils se cliquaient. Ils gardent leur rangée à part — ils ne se
 * financent pas sur les mêmes ressources — mais reprennent l'habit
 * des autres.
 */
.onglet-investissement{
  display:flex;flex:1 1 200px;min-height:50px;
  padding:8px 14px;gap:10px;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-md);box-shadow:var(--shadow-sm);
  align-items:center;justify-content:flex-start;
}
.onglet-investissement .cda-kpi-icon{display:inline-flex}
.onglet-investissement .nomenclature-label{font-size:11.5px;font-weight:600;flex:1}
.onglet-investissement .amt{font-size:15px;font-weight:800;color:var(--ink)}
.onglet-investissement.on{
  background:var(--fond-bouton);border-color:var(--vert-fonce);
  border-radius:var(--radius-md);
}
.onglet-investissement.on .amt,
.onglet-investissement.on .nomenclature-label{color:#fff}

/*
 * Les tableaux de comptes.
 *
 * 12 px pour des libellés de comptes et des montants qu'on relit dix
 * fois : c'était trop petit. La largeur, elle, s'adapte déjà bien.
 */
.cda-arbitrage-layout .grid{font-size:13.5px}
.cda-arbitrage-layout .grid th{font-size:10.5px}
.cda-arbitrage-layout .grid td{padding:11px 13px}
.ledger .clib{font-size:14px}
.ledger .cnum{font-size:12.5px}
.ledger .csum{font-size:14.5px}
.ledger tr.poste td{font-size:13.5px}
.art input[type=text]{font-size:13.5px}

/* Le dessin d'une mission, dans sa pastille. */
.chip .cda-icon{width:16px;height:16px;flex:0 0 16px;opacity:.9}
.chip.on .cda-icon{opacity:1}

/* ==================================================================
   La largeur des comparatifs

   Ils s'étalaient sur toute la page pendant que les tableaux de la
   synthèse, juste au-dessus, s'arrêtaient bien avant : deux mesures
   différentes sur le même écran, et l'œil doit refaire le trajet à
   chaque fois.

   Ils s'alignent donc sur les cartes de la synthèse. Huit colonnes
   n'y tiennent pas toujours — c'est prévu : le cadre défile
   horizontalement et la colonne des libellés reste en place.
   ================================================================== */

.wrap.scroll.plein{
  width:100%;
  max-width:var(--confort-tableau,1400px);
}

/* ==================================================================
   Deuxième passe de lisibilité
   ================================================================== */

/* ---------- les tuiles, plus basses encore ---------- */

.tabs.nomenclatures{gap:9px;margin:16px 0 18px}
.tabs.nomenclatures .onglet{min-height:44px;padding:6px 12px;gap:9px;flex:1 1 168px}
.tabs.nomenclatures .onglet .cda-kpi-icon{width:22px;height:22px}
.tabs.nomenclatures .onglet .cda-kpi-icon svg{width:15px;height:15px}
.tabs.nomenclatures .onglet .nomenclature-label{font-size:11px}
.tabs.nomenclatures .onglet .amt{font-size:14.5px}
.onglet-investissement{min-height:40px;padding:5px 12px}
.onglet-investissement .amt{font-size:14px}

/* ---------- la saisie : de la place pour écrire ---------- */

/*
 * Le bloc s'élargit. Une opération porte un libellé, un montant et
 * désormais un financeur : à 660 px le libellé ne montrait plus que
 * son début, et l'on tapait sans voir ce qu'on tapait.
 */
.block{min-width:min(920px,100%)}
.art input[type=text]{min-width:260px}
.art .lib input[type=text]{width:100%}

/*
 * Les trois degrés du grand livre se distinguent enfin.
 *
 * Le poste à trois chiffres est un bandeau vert, le compte à six
 * chiffres un gris franc, l'opération le fond de la page. Les deux
 * derniers se ressemblaient, et l'on perdait la frontière entre ce
 * qui totalise et ce qui compose.
 */
.ledger tr.cpt td{
  background:#eceee9;
  box-shadow:inset 0 1px 0 rgba(18,37,30,.07),inset 0 -1px 0 rgba(18,37,30,.07);
}
.ledger tr.cpt .clib{color:var(--vert-fonce);font-weight:700}
.ledger tr.cpt .csum{color:var(--ink);font-weight:800}
.ledger tr.art td{background:var(--surface)}

/* ---------- les tableaux de synthèse, plus contrastés ---------- */

/*
 * « Dépenses », « Recettes » et « Total » étaient trop pâles : les
 * bandeaux de section se confondaient avec les lignes, et le total
 * ne fermait plus rien. Ils reprennent du poids sans changer de
 * famille de couleur.
 */
.synth tr.ssect td{
  background:linear-gradient(180deg,#cfe6d5,#bfdcc8);
  color:#0a3f28;font-weight:800;letter-spacing:.16em;font-size:10.5px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -1px 0 rgba(10,63,40,.14);
}
.synth tr.stot td,.comp tr.stot td{
  background:linear-gradient(120deg,#f0dcae,#e6cf96) !important;
  color:#5a4413;font-weight:800;
  border-top:1px solid #cdae6d;
}
.synth tr.sres td,.synth tr.ssolde td,
.comp tr.sres td,.comp tr.ssolde td{
  background:#D9EADE;
  border-top:2px solid var(--vert-fonce);font-weight:800;
}
.grid.comp tr.ssect td{
  background:linear-gradient(180deg,#cfe6d5,#bfdcc8);
  color:#0a3f28;font-weight:800;
}

/* ---------- les comparatifs ---------- */

/*
 * La première colonne dévorait la largeur : les colonnes de chiffres
 * se réduisaient à leur contenu et tout le reste lui revenait. Elle
 * est bornée, et l'espace se répartit entre les pôles.
 */
.grid.comp td:first-child,
.grid.comp thead th:first-child{width:210px;max-width:210px}
.grid.comp td.r,.grid.comp th.r{width:auto}

/* Le bandeau des résultats s'aligne sur le tableau qu'il commente. */
.cda-resultats-strip,
.wrap.scroll.plein{
  width:100%;
  max-width:var(--confort-tableau,1400px);
  margin-left:0;margin-right:0;
}

/*
 * La section d'investissement se décroche du reste : c'est un autre
 * sujet, et il ne s'additionne pas à ce qui précède.
 */
.grid.comp tr.ssect.sinv td{
  padding-top:26px;
  box-shadow:inset 0 8px 0 -6px rgba(18,37,30,.12),inset 0 1px 0 rgba(255,255,255,.5);
}

/* ==================================================================
   Troisième passe
   ================================================================== */

/*
 * La colonne Total ne clignote plus.
 *
 * Elle portait un fond vert, mais le zébrage d'une ligne sur deux
 * passait par-dessus : le vert n'apparaissait qu'une ligne sur deux,
 * et ne voulait donc rien dire. Elle prend maintenant une teinte
 * unique, quelle que soit la ligne.
 *
 * Sur les lignes qui ont déjà une couleur — total, résultat, solde —
 * c'est celle de la ligne qui gagne : un filet à gauche suffit alors
 * à marquer la colonne.
 */
.grid.comp tbody tr td.tot,
.grid.comp tbody tr:nth-child(even) td.tot,
.grid.comp tbody tr:hover td.tot{
  background:#EDF4EF;
  box-shadow:inset 1px 0 0 rgba(8,121,79,.28);
}
.grid.comp tbody tr.stot td.tot,
.grid.comp tbody tr.sres td.tot,
.grid.comp tbody tr.ssolde td.tot{
  background:transparent;
  box-shadow:inset 1px 0 0 rgba(8,121,79,.35);
}

/*
 * Les anneaux de la synthèse grandissent.
 *
 * 113 px de diamètre et 12 px au centre : le total, qui est
 * l'information qu'on vient chercher, était le texte le plus petit
 * de la page. Les tableaux qui doublaient les légendes sont partis,
 * la place est là.
 */
.cda-synthese-cards .cda-donut-layout{
  grid-template-columns:minmax(160px,1fr) minmax(150px,1.1fr);
  gap:18px;align-items:center;
}
.cda-synthese-cards .cda-donut{width:100%;max-width:190px;height:auto;aspect-ratio:1}
.cda-synthese-cards .cda-donut-center b{font-size:clamp(17px,1.5vw,22px)}
.cda-synthese-cards .cda-donut-center span{font-size:12px}

/*
 * Les tuiles, plus fines encore.
 *
 * La taille des caractères convient ; c'est la boîte autour qui
 * restait haute. On retire le rembourrage vertical plutôt que de
 * toucher au texte.
 */
.tabs.nomenclatures{gap:8px}
.tabs.nomenclatures .onglet{min-height:36px;padding:3px 12px;gap:8px}
.tabs.nomenclatures .onglet .cda-kpi-icon{width:19px;height:19px}
.tabs.nomenclatures .onglet .cda-kpi-icon svg{width:13px;height:13px}
.tabs.nomenclatures .onglet .nomenclature-label{line-height:1.15}
.onglet-investissement{min-height:34px;padding:3px 12px}

/* ---------- les tuiles, au plus juste ---------- */

/*
 * L'intitulé et le montant passent à la ligne : neuf tuiles sur une
 * rangée ne laissent pas la place de les mettre côte à côte. Ce qui
 * se gagne, c'est donc l'interligne et le rembourrage, pas le corps
 * des caractères — il convient.
 */
.tabs.nomenclatures .onglet{padding:2px 12px;gap:6px}
.tabs.nomenclatures .onglet .nomenclature-label{line-height:1.1;margin:0}
.tabs.nomenclatures .onglet .amt{line-height:1.15;margin:0}
.tabs.nomenclatures .onglet .txt,
.tabs.nomenclatures .onglet>span:not(.cda-kpi-icon){row-gap:0}

/*
 * Les deux onglets d'investissement redeviennent des boutons — une
 * règle plus ancienne les remettait à plat, il faut la désigner plus
 * précisément qu'elle ne se désigne elle-même.
 */
.tabs.nomenclatures .onglet.onglet-investissement{
  min-height:34px;padding:3px 12px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}
.tabs.nomenclatures .onglet.onglet-investissement.on{
  background:var(--fond-bouton);border-color:var(--vert-fonce);
}
.tabs.nomenclatures .onglet.onglet-investissement .cda-kpi-icon{display:inline-flex}

/* ---------- le budget validé se lit comme l'arbitrage ---------- */

/*
 * Ce tableau était en 10 px, ses en-têtes en 8 et ses opérations en
 * 9 — la moitié moins que le même tableau à l'arbitrage, alors qu'on
 * y relit exactement les mêmes comptes. Il prend la mesure de
 * l'autre.
 */
.grid.ro{font-size:13.5px}
.grid.ro th{font-size:10.5px;padding:12px 14px;letter-spacing:.14em}
.grid.ro td{padding:10px 14px;font-size:13.5px;line-height:1.5}
.grid.ro tr.mission td{font-size:13px}
.grid.ro tr.op td{font-size:12.5px}

/* ---------- le montant tient dans l'anneau ---------- */

/*
 * Le trou faisait 52 % du diamètre et le montant débordait sur la
 * couronne : « 8 639 266 € » en Playfair est plus large que le
 * disque qui devait l'accueillir.
 *
 * Le trou s'ouvre à 62 % — la couronne reste largement assez épaisse
 * pour se lire — et le montant se cale dessus, avec une marge pour
 * qu'il ne touche jamais le bord.
 */
.cda-donut-center{inset:19%;padding:0 6px}
.cda-donut-center b{font-size:16px;line-height:1.1;max-width:100%}
.cda-donut-center span{font-size:10.5px;margin-top:3px}
.cda-synthese-cards .cda-donut-center b{font-size:clamp(14px,1.25vw,18px)}
.cda-synthese-cards .cda-donut-center span{font-size:11px}
