/* Format commun de tous les exports Impression / PDF du front-office.
   Tous les documents sont imposés en A4 portrait. */
@page{size:A4 portrait;margin:10mm}

:root{--blue:#4169dc;--blue-dark:#3158c9;--bg:#f3f5f9;--text:#4f5668;--line:#dfe3ea;--teal:#3cb4c4;--white:#fff;--danger:#c93d4a}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--text);background:var(--bg)}a{color:#315fd6;text-decoration:none}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:272px;background:linear-gradient(180deg,#5076df,#2e57c7);color:#fff;padding:0 18px;z-index:20;transition:.25s}.brand{height:86px;display:flex;align-items:center;gap:18px;border-bottom:1px solid rgba(255,255,255,.2);font-size:20px;line-height:1.45}.brand img{width:48px;height:48px}.nav-section{font-size:12px;font-weight:700;opacity:.55;margin:25px 6px 8px}.nav-link{display:flex;gap:12px;align-items:center;color:#fff;padding:14px 8px;border-bottom:1px solid rgba(255,255,255,.14)}.nav-link.active,.nav-link:hover{background:rgba(255,255,255,.09)}.sidebar-toggle{display:block;margin:20px auto;width:50px;height:50px;border:0;border-radius:50%;background:rgba(255,255,255,.22);color:#fff;font-size:34px}.main-content{margin-left:272px;min-height:100vh}.topbar{height:86px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.topbar h1{font-size:28px;color:#747681;margin:0}.user-menu{font-size:15px}.user-menu a{margin-left:15px}.content-area{padding:28px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:22px;padding:5px 0 18px;border-bottom:1px solid var(--line);margin-bottom:20px}.page-heading strong{display:block}.page-heading small{display:block;font-size:14px;color:#8c92a0;margin-bottom:4px}.page-heading form{display:flex;gap:8px;align-items:center;font-size:14px}.panel{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 3px 15px rgba(30,50,90,.07);padding:28px;margin-bottom:22px}.accent-panel{border-left:5px solid var(--blue)}h2{font-size:25px;font-weight:400;color:#3561df;margin:5px 0 10px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{border:1px solid #e1e3e7;padding:8px 10px;vertical-align:top}thead th{background:#bbb;color:#fff;text-align:center;font-weight:500}.money,.number{text-align:right;white-space:nowrap}.negative{color:#c23643}.subtotal td{background:var(--teal);color:#3e5965}.summary-table tfoot th,table tfoot th{background:#596273;color:#fff;text-align:right}.summary-table tfoot th:first-child{text-align:left}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border:1px solid #ccd1dc;border-radius:6px;background:#fff;color:#3f4a5c;font:inherit;cursor:pointer}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.filters{display:grid;grid-template-columns:2fr repeat(5,1fr) auto auto;gap:8px;margin-bottom:18px}input,select,textarea{width:100%;padding:10px;border:1px solid #cfd5df;border-radius:5px;background:#fff;font:inherit}label{display:block;font-weight:600;margin-bottom:5px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.years-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.checks{display:flex;flex-wrap:wrap;gap:20px}.checks>div{display:flex;gap:8px}.checks input{width:auto}.form-actions{position:sticky;bottom:0;background:rgba(243,245,249,.95);padding:15px 0;text-align:right}.current-image,.operation-image{max-width:100%;max-height:360px;object-fit:contain}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}dl{display:grid;grid-template-columns:180px 1fr;gap:8px}dt{font-weight:700}.empty-image{height:220px;display:grid;place-items:center;background:#eef1f6;color:#9298a5}.badge{display:inline-block;padding:4px 8px;border-radius:20px;font-size:12px}.badge-success{background:#dff4e5;color:#26793b}.badge-muted{background:#eee;color:#777}.actions{white-space:nowrap}.actions a{margin-right:10px}.pagination{display:flex;gap:6px;margin-top:16px}.pagination a{padding:7px 10px;border:1px solid var(--line);background:#fff}.pagination .current{background:var(--blue);color:#fff}.flash{padding:12px 16px;border-radius:5px;margin-bottom:15px}.flash-success{background:#dff4e5;color:#226d34}.flash-error{background:#fde2e5;color:#922}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#3158c9,#6b8cf0)}.login-card{width:min(420px,90vw);background:#fff;border-radius:12px;padding:36px;box-shadow:0 20px 50px rgba(0,0,0,.2)}.login-card img{width:64px;display:block;margin:auto}.login-card h1{text-align:center;color:#3a4d76}.login-card input{margin-bottom:16px}.login-card .btn{width:100%}.eco-score{display:inline-grid;place-items:center;min-width:40px;padding:5px;border-radius:20px;background:#e8eefc;color:#2f5acb;font-weight:700}.mobile-menu{display:none}.sidebar.collapsed{width:84px}.sidebar.collapsed .brand strong,.sidebar.collapsed .nav-link span,.sidebar.collapsed .nav-section{display:none}.sidebar.collapsed+.main-content{margin-left:84px}.sidebar.collapsed .brand{justify-content:center}.rich-text{line-height:1.6}.ecology-form{display:grid;grid-template-columns:1fr 2fr;gap:15px}.ecology-form>div:nth-child(odd){grid-column:1}.ecology-form>div:nth-child(even){grid-column:2}@media(max-width:1100px){.filters{grid-template-columns:repeat(2,1fr)}.years-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{transform:translateX(-100%)}body.sidebar-open .sidebar{transform:translateX(0)}.main-content{margin-left:0!important}.mobile-menu{display:block}.topbar{padding:0 16px}.topbar h1{font-size:18px}.user-menu{font-size:12px}.content-area{padding:14px}.page-heading{align-items:flex-start;flex-direction:column}.form-grid,.info-grid,.years-grid,.filters,.ecology-form{grid-template-columns:1fr}.ecology-form>div{grid-column:1!important}.panel{padding:16px}.summary-table{min-width:900px}}

/* Fiche opération */
.operation-page-heading{align-items:flex-end}.operation-actions{display:flex;flex-wrap:wrap;gap:8px}.operation-actions .btn{margin:0}.panel-heading-row{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.panel-heading-row h2{margin:0}.operation-identification-panel{width:100%}.operation-identification-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:0}.operation-identification-grid>div{min-width:0;padding:12px 14px;background:#f7f8fb;border:1px solid #e5e8ef;border-radius:6px}.operation-identification-grid dt{margin:0 0 5px;color:#7d8491;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.operation-identification-grid dd{margin:0;color:#424b5c;font-weight:600;overflow-wrap:anywhere}.operation-description-layout{display:grid;gap:26px;align-items:start}.operation-description-layout.has-image{grid-template-columns:275px minmax(0,1fr)}.operation-description-layout.without-image{grid-template-columns:1fr}.operation-image-frame{width:275px;height:275px;display:flex;align-items:center;justify-content:center;background:#f4f5f7;border:1px solid #e1e4ea;border-radius:6px;overflow:hidden}.operation-sheet-image{display:block;width:275px;height:275px;object-fit:contain}.operation-description-content{min-width:0}.operation-description-content .rich-text>:first-child,.operation-remarks-panel .rich-text>:first-child{margin-top:0}.operation-description-content .rich-text>:last-child,.operation-remarks-panel .rich-text>:last-child{margin-bottom:0}.operation-delivery-date{margin:20px 0 0;padding-top:12px;border-top:1px solid #e4e7ed}.operation-characteristics{display:flex;flex-wrap:wrap;gap:12px}.operation-flag{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:800;letter-spacing:.035em}.operation-flag-recurrent{background:#fff1cf;color:#9a6500;border:1px solid #efcf7a}.operation-flag-obligatoire{background:#fde1e4;color:#ac2635;border:1px solid #efafb7}.operation-flag-cout-parti{background:#dff5e8;color:#197142;border:1px solid #9fd9b7}.operation-characteristics-empty{color:#8b919c;font-style:italic}.operation-programming-heading{align-items:flex-end}.operation-total-amount{text-align:right;font-size:16px;color:#626b7a}.operation-total-amount strong{color:#3f4858}.operation-finance-table-wrap{border-radius:5px}.operation-finance-table{table-layout:fixed;min-width:900px}.operation-finance-table th,.operation-finance-table td{vertical-align:middle}.operation-finance-table thead th{font-weight:700}.operation-finance-table tbody th{text-align:left;background:#f7f8fa;color:#5b6474}.operation-finance-table .finance-label-column{width:160px}.operation-finance-table .finance-total-column{width:165px}.operation-finance-table .finance-period-total{font-weight:800}.operation-finance-table .finance-net-row th,.operation-finance-table .finance-net-row td{background:var(--teal);color:#3d5864;font-weight:800}.operation-finance-table .finance-net-row td.negative{color:#a41f2c}.operation-ecology-table{table-layout:fixed}.operation-ecology-table th,.operation-ecology-table td{vertical-align:middle}.operation-ecology-table thead th:nth-child(1){width:30%}.operation-ecology-table thead th:nth-child(2){width:18%}.operation-ecology-table tbody th{text-align:left;background:#f7f8fa;color:#545e6e}.operation-ecology-table .eco-grade{text-align:center;font-weight:800}.eco-grade-very-negative{background:#965b58;color:#fff}.eco-grade-negative{background:#c8926d;color:#fff}.eco-grade-neutral{background:#a7adb6;color:#fff}.eco-grade-positive{background:#b9e3bd;color:#235d31}.eco-grade-very-positive{background:#557640;color:#fff}.eco-grade-undefined{background:#f4df69;color:#594900}.eco-grade-empty{background:#f1f2f4;color:#7d8490}.no-page-break{break-inside:avoid;page-break-inside:avoid}

@media(max-width:1200px){.operation-identification-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.operation-actions{width:100%}.operation-description-layout.has-image{grid-template-columns:1fr}.operation-image-frame{margin:auto}.operation-identification-grid{grid-template-columns:1fr}.panel-heading-row,.operation-programming-heading{align-items:flex-start;flex-direction:column}.operation-total-amount{text-align:left}.operation-finance-table{min-width:850px}}

@media print{
    *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
    body{background:#fff;color:#3f4653;font-size:9.5pt}
    .sidebar,.topbar,.no-print,.flash{display:none!important}
    .main-content{margin-left:0!important;min-height:auto}
    .content-area{padding:0!important}
    .page-heading{margin:0 0 8mm;padding:0 0 4mm;font-size:18pt}
    .panel{box-shadow:none;border:1px solid #d9dde4;border-radius:0;padding:5mm;margin:0 0 5mm}
    .panel h2{font-size:15pt}
    .operation-identification-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5mm}
    .operation-identification-grid>div{padding:2.5mm}
    .operation-description-layout.has-image{grid-template-columns:275px minmax(0,1fr);gap:6mm}
    .operation-image-frame,.operation-sheet-image{width:275px;height:275px}
    .table-scroll{overflow:visible!important}
    .operation-finance-table{width:100%;min-width:0;table-layout:fixed;font-size:6.8pt}
    .operation-finance-table th,.operation-finance-table td{padding:1.7mm .7mm;white-space:nowrap}
    .operation-finance-table .finance-label-column{width:14%}
    .operation-finance-table .finance-total-column{width:16%}
    .operation-ecology-table{width:100%;font-size:7.6pt}
    .operation-ecology-table th,.operation-ecology-table td{padding:2mm}
    .operation-programming-panel,.operation-ecology-panel,.no-page-break{break-inside:avoid!important;page-break-inside:avoid!important}
    a{color:inherit!important;text-decoration:none!important}
}

/* Correctif impression/PDF : évite les grands blancs dans le bloc description */
@media print{
    .operation-description-panel{
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-description-panel>h2{
        margin:0 0 3mm!important;
        break-after:avoid-page;
        page-break-after:avoid;
    }

    .operation-description-layout,
    .operation-description-layout.has-image,
    .operation-description-layout.without-image{
        display:block!important;
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-description-layout.has-image::after,
    .operation-description-panel::after{
        content:"";
        display:block;
        clear:both;
    }

    .operation-image-frame{
        float:left;
        width:50mm!important;
        height:50mm!important;
        margin:0 5mm 3mm 0!important;
        break-inside:avoid!important;
        page-break-inside:avoid!important;
    }

    .operation-sheet-image{
        width:50mm!important;
        height:50mm!important;
        object-fit:contain!important;
    }

    .operation-description-content{
        display:block!important;
        min-width:0;
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-description-content .rich-text{
        line-height:1.35!important;
    }

    .operation-description-content .rich-text p,
    .operation-remarks-panel .rich-text p{
        margin:0 0 2.5mm!important;
        orphans:3;
        widows:3;
    }

    .operation-description-content .rich-text ul,
    .operation-description-content .rich-text ol,
    .operation-remarks-panel .rich-text ul,
    .operation-remarks-panel .rich-text ol{
        margin:1.5mm 0 2.5mm 5mm!important;
        padding-left:4mm!important;
    }

    .operation-description-content .rich-text li,
    .operation-remarks-panel .rich-text li{
        margin:0 0 1mm!important;
        orphans:2;
        widows:2;
    }

    .operation-description-content .rich-text h1,
    .operation-description-content .rich-text h2,
    .operation-description-content .rich-text h3,
    .operation-description-content .rich-text h4,
    .operation-description-content .rich-text h5,
    .operation-description-content .rich-text h6,
    .operation-remarks-panel .rich-text h1,
    .operation-remarks-panel .rich-text h2,
    .operation-remarks-panel .rich-text h3,
    .operation-remarks-panel .rich-text h4,
    .operation-remarks-panel .rich-text h5,
    .operation-remarks-panel .rich-text h6{
        margin:3mm 0 1.5mm!important;
        break-after:avoid-page;
        page-break-after:avoid;
    }

    .operation-delivery-date{
        margin:3mm 0 0!important;
        padding-top:2.5mm!important;
    }

    .panel{
        padding:4mm!important;
        margin:0 0 3.5mm!important;
    }

    .panel-heading-row{
        margin-bottom:3mm!important;
    }
}

/* Saisie de la programmation financière */
.ppi-amount-entry-scroll{width:100%;overflow-x:auto;margin-top:18px}
.ppi-amount-entry-table{min-width:900px;table-layout:fixed;border-collapse:collapse}
.ppi-amount-entry-table th,.ppi-amount-entry-table td{padding:16px 14px;vertical-align:middle}
.ppi-amount-entry-table thead th{background:#fff;color:#7b8190;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-weight:700;text-align:center}
.ppi-amount-entry-table thead th:first-child{text-align:left}
.ppi-amount-entry-table tbody th{width:135px;background:#f7f8fa;color:#737b8c;text-align:left;font-weight:700;white-space:nowrap}
.ppi-amount-entry-table .ppi-amount-expense-row th,.ppi-amount-entry-table .ppi-amount-expense-row td{background:#eceef2}
.ppi-amount-entry-table td{background:#fff}
.ppi-amount-entry-table input.ppi-amount-input{width:100%;min-width:105px;padding:8px 10px;text-align:right;font-variant-numeric:tabular-nums;background:#fff;border:1px solid #aeb6c4;border-radius:3px}
.ppi-amount-entry-table input.ppi-amount-input:focus{outline:2px solid rgba(65,105,220,.2);border-color:var(--blue)}
.ppi-amount-entry-table .invalid-feedback,.ppi-amount-entry-table .form-error-message{font-size:11px;margin-top:4px}
.ppi-amount-type-column{width:135px}

/* Jodit Editor MIT et tableaux collés depuis Excel */
.operation-rich-text-panel .mb-3{margin-bottom:24px!important}
.rich-text-paste-help{margin-bottom:20px;padding:10px 12px;background:#f6f8fc;border-left:4px solid var(--blue);color:#657087}
.jodit-container{width:100%!important;border-color:#cfd5df!important;border-radius:4px!important;box-shadow:none!important}
.jodit-container:not(.jodit_inline){background:#fff}
.jodit-toolbar__box{border-color:#cfd5df!important;background:#f7f8fb!important}
.jodit-toolbar-editor-collection{background:#f7f8fb!important}
.jodit-workplace{border-color:#cfd5df!important}
.jodit-wysiwyg{max-width:100%;font-family:Inter,Arial,sans-serif!important;color:#3f4858!important;line-height:1.55!important;overflow-wrap:anywhere}
.jodit-wysiwyg table{max-width:100%;margin:1rem 0;border-collapse:collapse!important;table-layout:fixed;background:#fff}
.jodit-wysiwyg th,.jodit-wysiwyg td{border:1px solid #b9c0cc!important;padding:7px 9px!important;vertical-align:top!important;word-break:normal;overflow-wrap:anywhere}
.jodit-wysiwyg th{background:#eef1f5;color:#4f5969;font-weight:700}
.jodit-wysiwyg table p{margin:0}
.jodit-status-bar{border-color:#cfd5df!important;background:#fafbfc!important}
.has-jodit textarea.js-jodit{display:none}

/* Rendu des contenus enrichis dans les fiches et les PDF */
.rich-text{max-width:100%;overflow-wrap:anywhere}
.rich-text figure.table,.rich-text .table{display:block;width:100%;max-width:100%;margin:16px 0;overflow-x:auto}
.rich-text figure.table table,.rich-text .table table,.rich-text>table{max-width:100%;border-collapse:collapse;background:#fff;font-size:.94em}
.rich-text figure.table th,.rich-text figure.table td,.rich-text .table th,.rich-text .table td,.rich-text>table th,.rich-text>table td{border:1px solid #c5cad3;padding:7px 9px;vertical-align:top}
.rich-text figure.table th,.rich-text .table th,.rich-text>table th{background:#eef1f5;color:#4e5868;font-weight:700}
.rich-text figure.table p,.rich-text .table p,.rich-text>table p{margin:0}

@media(max-width:760px){
    .ppi-amount-entry-table{min-width:760px}
}

@media print{
    /* Les tableaux financiers larges restent contenus dans la largeur utile du portrait. */
    .operation-index-table-shell,
    .operation-report-table-shell{overflow:visible!important}
    .operation-index-scrollbar-top,
    .operation-index-scrollbar-bottom{display:none!important}
    .operation-index-table-scroll,
    .operation-report-table-scroll{overflow:visible!important;max-height:none!important}
    .operation-index-finance-table,
    .operation-report-table{width:100%!important;min-width:0!important;table-layout:fixed!important;font-size:5.5pt!important}
    .operation-index-finance-table th,
    .operation-index-finance-table td,
    .operation-report-table th,
    .operation-report-table td{padding:.8mm .45mm!important;white-space:normal!important;overflow-wrap:anywhere!important}
}

@media print{
    .rich-text figure.table,.rich-text .table{overflow:visible!important;break-inside:auto;page-break-inside:auto}
    .rich-text figure.table table,.rich-text .table table,.rich-text>table{font-size:6.8pt;table-layout:auto}
    .rich-text figure.table th,.rich-text figure.table td,.rich-text .table th,.rich-text .table td,.rich-text>table th,.rich-text>table td{padding:1.4mm;word-break:break-word}
}

/* Tableau financier de l'index des opérations */
.operation-index-heading{align-items:flex-end}
.operation-index-actions{display:flex;flex-wrap:wrap;gap:8px}
.btn-excel{background:#217346;border-color:#217346;color:#fff}
.btn-excel:hover{background:#195c38;border-color:#195c38;color:#fff}
.operation-index-panel{padding:22px}
.operation-index-filters{margin-bottom:12px}
.operation-index-note{margin:0 0 14px;padding:9px 12px;border-left:4px solid var(--blue);background:#f5f7fc;color:#697386;font-size:13px}
.operation-index-table-scroll{max-width:100%;border:1px solid #cfd4de;background:#fff}
.operation-index-finance-table{width:max-content;min-width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:12px}
.operation-index-finance-table th,.operation-index-finance-table td{border:0;border-right:1px solid #7c818b;border-bottom:1px solid #7c818b;padding:10px 12px;vertical-align:middle}
.operation-index-finance-table tr>*:last-child{border-right:0}
.operation-index-finance-table tbody tr:last-child td{border-bottom:0}
.operation-index-finance-table thead th{color:#315fd6;background:#f5f6f9;font-weight:700;text-align:center;white-space:nowrap}
.operation-index-finance-table .operation-index-label-row th{height:44px;position:sticky;top:0;z-index:6}
.operation-index-finance-table .operation-index-total-row th{height:36px;position:sticky;top:44px;z-index:5;background:#e7e9ee;color:#353e4d;font-size:12px;font-weight:800}
.operation-index-finance-table .money-column{width:112px;min-width:112px}
.operation-index-finance-table tbody td.money{width:112px;min-width:112px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.operation-index-finance-table tbody tr:nth-child(even) td{background:#f8f9fb}
.operation-index-finance-table tbody tr:hover td{background:#edf2ff}
.operation-index-finance-table .operation-index-department-column{width:190px;min-width:190px;max-width:190px;left:0}
.operation-index-finance-table .operation-index-direction-column{width:210px;min-width:210px;max-width:210px;left:190px}
.operation-index-finance-table .operation-index-operation-column{width:250px;min-width:250px;max-width:250px;left:400px}
.operation-index-finance-table thead .operation-index-department-column,
.operation-index-finance-table thead .operation-index-direction-column,
.operation-index-finance-table thead .operation-index-operation-column{position:sticky;z-index:9;background:#f5f6f9}
.operation-index-finance-table tbody .operation-index-department-column,
.operation-index-finance-table tbody .operation-index-direction-column,
.operation-index-finance-table tbody .operation-index-operation-column{position:sticky;z-index:2;background:#fff;white-space:normal;overflow-wrap:anywhere}
.operation-index-finance-table tbody tr:nth-child(even) .operation-index-department-column,
.operation-index-finance-table tbody tr:nth-child(even) .operation-index-direction-column,
.operation-index-finance-table tbody tr:nth-child(even) .operation-index-operation-column{background:#f8f9fb}
.operation-index-finance-table tbody tr:hover .operation-index-department-column,
.operation-index-finance-table tbody tr:hover .operation-index-direction-column,
.operation-index-finance-table tbody tr:hover .operation-index-operation-column{background:#edf2ff}
.operation-index-finance-table .operation-index-operation-column strong{display:block;color:#315fd6;line-height:1.35}
.operation-index-finance-table .operation-index-operation-column small{display:block;margin-top:4px;color:#7b8494}
.operation-index-finance-table .focus-year-header{background:#2f9eae;color:#fff}
.operation-index-finance-table .operation-index-total-row .focus-year-total{background:var(--teal);color:#31515a}
.operation-index-finance-table tbody td.focus-year-cell{background:var(--teal);color:#31515a;font-weight:700}
.operation-index-finance-table tbody tr:nth-child(even) td.focus-year-cell,
.operation-index-finance-table tbody tr:hover td.focus-year-cell{background:var(--teal)}
.operation-index-finance-table .negative{color:#e03232!important;font-weight:700}

@media(max-width:1100px){
    .operation-index-finance-table .operation-index-department-column{width:160px;min-width:160px;max-width:160px}
    .operation-index-finance-table .operation-index-direction-column{width:180px;min-width:180px;max-width:180px;left:160px}
    .operation-index-finance-table .operation-index-operation-column{width:220px;min-width:220px;max-width:220px;left:340px}
}

@media(max-width:760px){
    .operation-index-actions{width:100%}
    .operation-index-actions .btn{flex:1}
    .operation-index-note{font-size:12px}
    .operation-index-finance-table .operation-index-department-column,
    .operation-index-finance-table .operation-index-direction-column{position:static!important}
    .operation-index-finance-table .operation-index-operation-column{left:0;width:210px;min-width:210px;max-width:210px}
}

/* Index opérations : en-tête fixe, doubles barres de défilement et totaux de période */
.operation-index-table-shell{position:relative;max-width:100%}
.operation-index-scrollbar-top{display:none;max-width:100%;height:18px;margin:0 0 6px;overflow-x:auto;overflow-y:hidden;border:1px solid #cfd4de;border-radius:5px;background:#eef1f6;scrollbar-gutter:stable}
.operation-index-scrollbar-top.is-scrollable{display:block}
.operation-index-scrollbar-spacer{height:1px}
.operation-index-table-scroll{position:relative;max-height:calc(100vh - 330px);min-height:320px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable both-edges}
.operation-index-finance-table thead{position:relative;z-index:10}
.operation-index-finance-table .operation-index-label-row th{top:0;box-shadow:0 1px 0 #7c818b}
.operation-index-finance-table .operation-index-total-row th{top:44px;box-shadow:0 2px 3px rgba(35,45,65,.14)}
.operation-index-finance-table .period-total-header{background:#5d6677;color:#fff;line-height:1.25}
.operation-index-finance-table .period-total-value{background:#dce1e9;color:#303848}
.operation-index-finance-table tbody td.period-total-cell{background:#eef1f5;font-weight:800;color:#384254}
.operation-index-finance-table tbody tr:nth-child(even) td.period-total-cell{background:#e6eaf0}
.operation-index-finance-table tbody tr:hover td.period-total-cell{background:#dfe7f6}
.operation-index-finance-table tfoot th{position:sticky;bottom:0;z-index:7;height:42px;border-top:2px solid #485164;border-bottom:0;background:#596273;color:#fff;text-align:right;font-weight:800;white-space:nowrap;box-shadow:0 -2px 4px rgba(35,45,65,.16)}
.operation-index-finance-table tfoot th:first-child{text-align:left}
.operation-index-finance-table tfoot .focus-year-footer{background:#257f8d;color:#fff}
.operation-index-finance-table tfoot .period-total-footer{background:#404858;color:#fff}
.operation-index-finance-table tfoot .negative{color:#ffd0d0!important}
.operation-index-finance-table .operation-index-total-row .negative{color:#d92727!important}

@media(max-height:760px){
    .operation-index-table-scroll{max-height:calc(100vh - 275px);min-height:260px}
}

@media(max-width:760px){
    .operation-index-table-scroll{max-height:65vh;min-height:300px}
    .operation-index-scrollbar-top{height:16px}
}

/* Tableaux PPI regroupés */
.nav-link-report{padding-left:24px;font-size:13px}
.operation-report-filters{grid-template-columns:1.6fr repeat(6,minmax(135px,1fr)) auto auto}
.operation-report-table .report-group-column,
.operation-report-table .report-operation-column{white-space:normal;overflow-wrap:anywhere}
.operation-report-table .report-operation-column strong{display:block;color:#315fd6;line-height:1.35}
.operation-report-table .report-operation-column small{display:block;margin-top:4px;color:#7b8494}
.operation-report-table tbody .report-group-column{vertical-align:top;font-weight:600;color:#596273}
.operation-report-table tbody .report-group-column,
.operation-report-table tbody .report-operation-column{position:sticky;z-index:3;background:#fff}
.operation-report-table tbody tr:nth-child(even) .report-group-column,
.operation-report-table tbody tr:nth-child(even) .report-operation-column{background:#f8f9fb}
.operation-report-table tbody tr:hover .report-group-column,
.operation-report-table tbody tr:hover .report-operation-column{background:#edf2ff}
.operation-report-table thead .report-group-column,
.operation-report-table thead .report-operation-column{position:sticky;z-index:12;background:#f5f6f9}

.operation-report-table.report-depth-2 .report-group-1-column{left:0;width:185px;min-width:185px;max-width:185px}
.operation-report-table.report-depth-2 .report-group-2-column{left:185px;width:215px;min-width:215px;max-width:215px}
.operation-report-table.report-depth-2 .report-operation-column{left:400px;width:270px;min-width:270px;max-width:270px}
.operation-report-table.report-depth-1 .report-group-1-column{left:0;width:230px;min-width:230px;max-width:230px}
.operation-report-table.report-depth-1 .report-operation-column{left:230px;width:300px;min-width:300px;max-width:300px}

.operation-report-table .report-subtotal th{padding:9px 12px;text-align:right;font-weight:800;white-space:nowrap}
.operation-report-table .report-subtotal th:first-child{text-align:left;white-space:normal}
.operation-report-table .report-subtotal-level-2 th{background:#dff2e5;color:#365b43;border-top:2px solid #8bc49d}
.operation-report-table .report-subtotal-level-1 th{background:#f4ded3;color:#604c43;border-top:2px solid #d8a992}
.operation-report-table .report-subtotal .focus-year-subtotal{background:#82cbd5;color:#294b52}
.operation-report-table .report-subtotal .period-total-subtotal{background:#d7dce4;color:#354052}
.operation-report-table .report-subtotal .negative{color:#c92935!important}
.operation-report-table-scroll{max-height:calc(100vh - 335px)}

@media(max-width:1400px){
    .operation-report-filters{grid-template-columns:repeat(3,minmax(180px,1fr))}
}

@media(max-width:1000px){
    .operation-report-table.report-depth-2 .report-group-1-column{width:155px;min-width:155px;max-width:155px}
    .operation-report-table.report-depth-2 .report-group-2-column{left:155px;width:175px;min-width:175px;max-width:175px}
    .operation-report-table.report-depth-2 .report-operation-column{left:330px;width:230px;min-width:230px;max-width:230px}
    .operation-report-table.report-depth-1 .report-group-1-column{width:190px;min-width:190px;max-width:190px}
    .operation-report-table.report-depth-1 .report-operation-column{left:190px;width:250px;min-width:250px;max-width:250px}
}

@media(max-width:760px){
    .nav-link-report{padding-left:14px}
    .operation-report-filters{grid-template-columns:1fr}
    .operation-report-table tbody .report-group-column,
    .operation-report-table tbody .report-operation-column,
    .operation-report-table thead .report-group-column,
    .operation-report-table thead .report-operation-column{position:static!important}
}

/* Fiche opération — proposition A4 portrait lisible */
.operation-sheet{max-width:1500px;margin:0 auto}
.operation-title-block{min-width:0}
.operation-sheet-title{display:block;color:#173f6c;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1.12;letter-spacing:.01em;text-transform:uppercase;overflow-wrap:anywhere}
.operation-sheet-code{margin-top:8px!important;color:#748097!important;font-size:14px!important;font-weight:600}
.operation-sheet-panel{border-color:#d8dee8;border-radius:10px;box-shadow:0 4px 18px rgba(36,62,105,.06)}
.operation-section-heading{position:relative;margin-bottom:20px;padding-left:16px}
.operation-section-heading::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:4px;border-radius:4px;background:#315fd6}
.operation-section-heading h2{margin:0;color:#245fba;font-size:20px;font-weight:650;line-height:1.2}

.operation-identification-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:0;border:1px solid #e1e5ec;border-radius:8px;background:#fafbfd;overflow:hidden}
.operation-identification-column{display:block;margin:0;padding:22px 26px}
.operation-identification-secondary{border-left:1px solid #e1e5ec}
.operation-identification-column>div{display:grid;grid-template-columns:155px minmax(0,1fr);gap:12px;align-items:start;padding:8px 0}
.operation-identification-column dt,.operation-identification-meta dt{margin:0;color:#6f7a8c;font-size:12px;font-weight:800;letter-spacing:.035em;text-transform:uppercase}
.operation-identification-column dd,.operation-identification-meta dd{margin:0;color:#273448;font-size:15px;font-weight:650;line-height:1.45;overflow-wrap:anywhere}
.operation-identification-primary .operation-identification-value-only{grid-template-columns:minmax(0,1fr)}
.operation-identification-primary .operation-identification-value-only dd{grid-column:1/-1}
.operation-identification-meta{display:grid;grid-template-columns:.75fr 1.2fr 1.2fr;gap:12px;margin:14px 0 0}
.operation-identification-meta>div{min-width:0;padding:11px 14px;border:1px solid #e4e8ef;border-radius:6px;background:#fff}

.operation-description-layout{gap:30px}
.operation-description-layout.has-image{grid-template-columns:275px minmax(0,1fr)}
.operation-image-frame{box-shadow:0 2px 10px rgba(30,45,75,.08)}
.operation-description-content .rich-text,.operation-remarks-panel .rich-text{color:#303b4e;font-size:16px;line-height:1.65}
.operation-delivery-date{font-size:15px;color:#364357}

.operation-characteristics{gap:14px}
.operation-flag{min-height:38px;padding:9px 17px;font-size:13px;border-radius:7px}
.operation-flag-obligatoire{order:1}
.operation-flag-recurrent{order:2}
.operation-flag-cout-parti{order:3}

.operation-total-amount{margin:0 0 18px;text-align:left;color:#4f5b70;font-size:18px;line-height:1.35}
.operation-total-amount strong{margin-left:5px;color:#174f91;font-size:24px;font-weight:850;white-space:nowrap;font-variant-numeric:tabular-nums}
.operation-finance-table-wrap{overflow-x:auto;border:1px solid #cbd3df;border-radius:7px}
.operation-finance-table{width:100%;min-width:900px;table-layout:fixed;font-size:15px;font-variant-numeric:tabular-nums}
.operation-finance-table th,.operation-finance-table td{padding:13px 10px;vertical-align:middle}
.operation-finance-table thead th{background:#255e93;color:#fff;font-size:13px;font-weight:800;white-space:nowrap}
.operation-finance-table tbody th{background:#f4f6f9;color:#26364b;font-size:15px;font-weight:800;white-space:nowrap}
.operation-finance-table tbody td{color:#27364a;font-size:16px;font-weight:650;white-space:nowrap}
.operation-finance-table .finance-label-column{width:150px}
.operation-finance-table .finance-total-column{width:170px}
.operation-finance-table .finance-period-total{font-size:17px;font-weight:900}
.operation-finance-table .finance-net-row th,.operation-finance-table .finance-net-row td{background:#23a9bb;color:#fff;font-weight:900}
.operation-finance-table .finance-net-row td.negative{color:#ffe1e3}

.operation-ecology-table-wrap{overflow-x:auto}
.operation-ecology-table thead th{background:#255e93;color:#fff;font-weight:800}
.operation-ecology-table tbody th{font-weight:750}
.operation-ecology-table tbody tr{break-inside:avoid;page-break-inside:avoid}
.operation-keep-together{break-inside:avoid;page-break-inside:avoid}

@media(max-width:900px){
    .operation-identification-layout{grid-template-columns:1fr}
    .operation-identification-secondary{border-left:0;border-top:1px solid #e1e5ec}
    .operation-identification-meta{grid-template-columns:1fr}
}

@media print{
    body{font-size:10.5pt!important;color:#263247!important}
    .operation-sheet{max-width:none!important;width:100%!important}
    .operation-page-heading{margin:0 0 5mm!important;padding:0 0 3.5mm!important;border-bottom:1px solid #d8dee8!important}
    .operation-sheet-title{font-size:22pt!important;line-height:1.08!important;color:#143d68!important;letter-spacing:.01em!important}
    .operation-sheet-code{margin-top:1.5mm!important;font-size:9pt!important}

    .operation-sheet-panel{padding:5mm!important;margin:0 0 4mm!important;border:1px solid #d8dee8!important;border-radius:2.5mm!important;box-shadow:none!important;background:#fff!important}
    .operation-section-heading{margin-bottom:4mm!important;padding-left:3.5mm!important}
    .operation-section-heading::before{width:1mm!important;top:.6mm!important;bottom:.6mm!important}
    .operation-section-heading h2{font-size:11pt!important;line-height:1.2!important;color:#245fba!important}

    .operation-identification-layout{grid-template-columns:1.35fr .85fr!important;border-radius:2mm!important}
    .operation-identification-column{padding:3.5mm 4mm!important}
    .operation-identification-column>div{grid-template-columns:31mm minmax(0,1fr)!important;gap:2mm!important;padding:1.3mm 0!important}
    .operation-identification-column dt,.operation-identification-meta dt{font-size:7.5pt!important}
    .operation-identification-column dd,.operation-identification-meta dd{font-size:9.2pt!important;line-height:1.35!important}
    .operation-identification-meta{grid-template-columns:.7fr 1.15fr 1.15fr!important;gap:2mm!important;margin-top:2.5mm!important}
    .operation-identification-meta>div{padding:2mm 2.4mm!important;border-radius:1.3mm!important}

    .operation-description-panel{break-inside:auto!important;page-break-inside:auto!important}
    .operation-description-layout,.operation-description-layout.has-image,.operation-description-layout.without-image{display:block!important;break-inside:auto!important;page-break-inside:auto!important}
    .operation-description-layout.has-image::after,.operation-description-panel::after{content:"";display:block;clear:both}
    .operation-image-frame{float:left!important;width:52mm!important;height:52mm!important;margin:0 5mm 3mm 0!important;border-radius:1.5mm!important;break-inside:avoid!important;page-break-inside:avoid!important}
    .operation-sheet-image{width:52mm!important;height:52mm!important;object-fit:contain!important}
    .operation-description-content .rich-text,.operation-remarks-panel .rich-text{font-size:10.2pt!important;line-height:1.48!important;color:#29364a!important}
    .operation-description-content .rich-text p,.operation-remarks-panel .rich-text p{margin:0 0 2.7mm!important;orphans:3;widows:3}
    .operation-delivery-date{clear:none!important;margin:3mm 0 0!important;padding-top:2.5mm!important;font-size:9.5pt!important}

    .operation-characteristics-panel{break-inside:avoid!important;page-break-inside:avoid!important}
    .operation-characteristics{gap:2.5mm!important}
    .operation-flag{min-height:0!important;padding:1.7mm 3mm!important;border-radius:1.5mm!important;font-size:8.5pt!important}

    .operation-programming-panel{break-inside:avoid!important;page-break-inside:avoid!important}
    .operation-total-amount{margin:0 0 3.5mm!important;font-size:10.5pt!important}
    .operation-total-amount strong{font-size:13.5pt!important;white-space:nowrap!important}
    .operation-finance-table-wrap{overflow:visible!important;border-radius:1.3mm!important}
    .operation-finance-table{width:100%!important;min-width:0!important;table-layout:fixed!important;font-size:8.5pt!important}
    .operation-finance-table th,.operation-finance-table td{padding:2.1mm .75mm!important;white-space:nowrap!important;line-height:1.15!important}
    .operation-finance-table thead th{font-size:7.6pt!important}
    .operation-finance-table tbody th{font-size:8.5pt!important}
    .operation-finance-table tbody td{font-size:9.1pt!important;font-weight:700!important}
    .operation-finance-table .finance-label-column{width:17%!important}
    .operation-finance-table .finance-total-column{width:17%!important}
    .operation-finance-table .finance-period-total{font-size:9.7pt!important}

    .operation-remarks-panel{break-inside:auto!important;page-break-inside:auto!important}
    .operation-ecology-panel{break-inside:auto!important;page-break-inside:auto!important}
    .operation-ecology-table-wrap{overflow:visible!important}
    .operation-ecology-table{width:100%!important;font-size:8.4pt!important}
    .operation-ecology-table thead{display:table-header-group}
    .operation-ecology-table tr{break-inside:avoid!important;page-break-inside:avoid!important}
    .operation-ecology-table th,.operation-ecology-table td{padding:2.2mm!important}

    .operation-sheet-panel:last-of-type{margin-bottom:0!important}
}


/* Suppression de l’image dans le formulaire opération */
.current-image-block{display:inline-flex;flex-direction:column;gap:8px;max-width:320px;margin:4px 0 18px;padding:14px;background:#f7f8fb;border:1px solid #dfe3ea;border-radius:7px}
.current-image-title{margin:0;color:#4f5868}
.current-image-block .current-image{display:block;width:275px;height:275px;max-width:100%;object-fit:contain;background:#fff;border:1px solid #e1e4ea;border-radius:5px}
.vich-image{display:grid;gap:10px}
.vich-image input[type=file]{width:100%}
.vich-image .form-check{display:flex;align-items:center;gap:9px;width:max-content;max-width:100%;margin:0;padding:10px 13px;background:#fff1f2;border:1px solid #efb9bf;border-radius:6px;color:#9e2e3b}
.vich-image .form-check-input,.vich-image input[type=checkbox]{flex:0 0 auto;width:18px!important;height:18px;margin:0}
.vich-image .form-check-label{margin:0;font-weight:700;cursor:pointer}

/* Fiche individuelle et Recueil PPI — titre à gauche et identification compacte */
.operation-page-heading{
    justify-content:flex-start;
    align-items:flex-end;
    width:100%;
}
.operation-title-block{
    flex:1 1 auto;
    text-align:left;
}
.operation-actions{
    margin-left:auto;
}
.operation-identification-panel{
    padding-top:22px;
    padding-bottom:22px;
}
.operation-identification-heading{
    margin-bottom:12px;
}
.operation-identification-heading .badge{
    flex:0 0 auto;
}
.operation-identification-column{
    padding-top:14px;
    padding-bottom:14px;
}
.operation-identification-column>div{
    padding-top:5px;
    padding-bottom:5px;
}
.operation-identification-meta{
    margin-top:10px;
}
.operation-identification-meta>div{
    padding-top:8px;
    padding-bottom:8px;
}

/* Aperçu et impression du recueil */
.recueil-ppi-toolbar small{
    display:block;
    margin-top:5px;
    color:#727d90;
    font-size:14px;
    font-weight:500;
}
.recueil-ppi-pages{
    display:grid;
    gap:28px;
}
.recueil-ppi-item{
    min-width:0;
}
.operation-sheet-recueil{
    padding:24px;
    border:1px solid #d8dee8;
    border-radius:10px;
    background:#fff;
    box-shadow:0 4px 18px rgba(36,62,105,.06);
}
.operation-sheet-recueil .operation-page-heading{
    margin-bottom:18px;
}

@media print{
    .operation-page-heading{
        justify-content:flex-start!important;
        align-items:flex-start!important;
        text-align:left!important;
    }
    .operation-title-block{
        width:100%!important;
        text-align:left!important;
    }
    .operation-sheet-title{
        text-align:left!important;
    }

    /* Bloc identification moins haut sans perdre les informations. */
    .operation-identification-panel{
        padding:3.4mm!important;
    }
    .operation-identification-heading{
        margin-bottom:2mm!important;
    }
    .operation-identification-column{
        padding:2.2mm 3mm!important;
    }
    .operation-identification-column>div{
        padding:.65mm 0!important;
    }
    .operation-identification-meta{
        margin-top:1.6mm!important;
        gap:1.5mm!important;
    }
    .operation-identification-meta>div{
        padding:1.35mm 1.8mm!important;
    }

    .recueil-ppi-pages{
        display:block!important;
    }
    .recueil-ppi-item{
        break-after:page;
        page-break-after:always;
    }
    .recueil-ppi-item:last-child{
        break-after:auto;
        page-break-after:auto;
    }
    .operation-sheet-recueil{
        width:100%!important;
        padding:0!important;
        margin:0!important;
        border:0!important;
        border-radius:0!important;
        box-shadow:none!important;
    }
    .operation-sheet-recueil .operation-page-heading{
        margin-top:0!important;
    }
}
.operation-sheet-toolbar{
    display:flex;
    justify-content:flex-end;
    flex-wrap:wrap;
    gap:8px;
    margin:0 0 16px;
}

/* Recueil PPI — version compacte pour optimiser la place sur chaque fiche */
.operation-sheet-recueil .operation-page-heading{
    margin:0 0 10px;
    padding:0 0 8px;
}
.operation-sheet-recueil .operation-sheet-title{
    font-size:clamp(24px,2.4vw,34px);
    line-height:1.05;
}
.operation-sheet-recueil .operation-identification-panel{
    padding:14px 16px;
    margin-bottom:14px;
}
.operation-sheet-recueil .operation-identification-heading{
    margin-bottom:8px;
}
.operation-sheet-recueil .operation-identification-heading h2{
    font-size:20px;
}
.operation-sheet-recueil .operation-identification-column{
    padding:9px 14px;
}
.operation-sheet-recueil .operation-identification-column>div{
    padding:3px 0;
}
.operation-sheet-recueil .operation-characteristics-panel{
    display:flex;
    align-items:center;
    gap:14px;
    padding:12px 16px;
    margin-bottom:14px;
}
.operation-sheet-recueil .operation-characteristics-panel .operation-section-heading{
    flex:0 0 auto;
    margin:0;
    padding-left:12px;
}
.operation-sheet-recueil .operation-characteristics-panel .operation-section-heading h2{
    font-size:20px;
    white-space:nowrap;
}
.operation-sheet-recueil .operation-characteristics{
    gap:6px;
}
.operation-sheet-recueil .operation-flag{
    min-height:28px;
    padding:5px 10px;
    border-radius:5px;
    font-size:10px;
}
.operation-sheet-recueil .operation-characteristics-empty{
    font-size:13px;
}
.operation-sheet-recueil .operation-compact-empty-panel{
    padding:12px 16px;
    margin-bottom:14px;
}
.operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading{
    justify-content:flex-start;
    gap:12px;
    margin:0;
}
.operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading h2{
    flex:0 0 auto;
    font-size:20px;
    white-space:nowrap;
}
.operation-empty-inline{
    color:#667287;
    font-size:13px;
    font-style:italic;
    font-weight:500;
    line-height:1.35;
}

@media(max-width:900px){
    .operation-sheet-recueil .operation-characteristics-panel,
    .operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading{
        align-items:flex-start;
        flex-direction:column;
    }
    .operation-sheet-recueil .operation-characteristics-panel .operation-section-heading h2,
    .operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading h2{
        white-space:normal;
    }
}

@media print{
    .operation-sheet-recueil .operation-page-heading{
        margin:0 0 2mm!important;
        padding:0 0 1.4mm!important;
    }
    .operation-sheet-recueil .operation-sheet-title{
        font-size:17pt!important;
        line-height:1.03!important;
    }
    .operation-sheet-recueil .operation-identification-panel{
        padding:2mm!important;
        margin-bottom:2.5mm!important;
    }
    .operation-sheet-recueil .operation-identification-heading{
        margin-bottom:.8mm!important;
        padding-left:2.4mm!important;
    }
    .operation-sheet-recueil .operation-identification-heading h2{
        font-size:11pt!important;
    }
    .operation-sheet-recueil .operation-identification-column{
        padding:1.2mm 2mm!important;
    }
    .operation-sheet-recueil .operation-identification-column>div{
        padding:.3mm 0!important;
    }
    .operation-sheet-recueil .operation-identification-column dt{
        font-size:6.7pt!important;
    }
    .operation-sheet-recueil .operation-identification-column dd{
        font-size:8.2pt!important;
        line-height:1.22!important;
    }
    .operation-sheet-recueil .operation-characteristics-panel{
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        gap:2mm!important;
        padding:1.4mm 2mm!important;
        margin-bottom:2.5mm!important;
    }
    .operation-sheet-recueil .operation-characteristics-panel .operation-section-heading{
        margin:0!important;
        padding-left:2.3mm!important;
    }
    .operation-sheet-recueil .operation-characteristics-panel .operation-section-heading h2{
        font-size:11pt!important;
        white-space:nowrap!important;
    }
    .operation-sheet-recueil .operation-characteristics{
        gap:1.2mm!important;
    }
    .operation-sheet-recueil .operation-flag{
        min-height:0!important;
        padding:.8mm 1.6mm!important;
        border-radius:1mm!important;
        font-size:6.8pt!important;
        line-height:1.1!important;
    }
    .operation-sheet-recueil .operation-characteristics-empty{
        font-size:7.6pt!important;
    }
    .operation-sheet-recueil .operation-compact-empty-panel{
        padding:1.4mm 2mm!important;
        margin-bottom:2.5mm!important;
    }
    .operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading{
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        justify-content:flex-start!important;
        gap:2.5mm!important;
        margin:0!important;
        padding-left:2.3mm!important;
    }
    .operation-sheet-recueil .operation-compact-empty-panel .operation-section-heading h2{
        font-size:11pt!important;
        white-space:nowrap!important;
    }
    .operation-sheet-recueil .operation-empty-inline{
        font-size:7.7pt!important;
        line-height:1.2!important;
    }
}

/* Recueil PPI : écoulement naturel des remarques et de l'évaluation à l'impression.
   Le titre reste avec le début du contenu, sans réserver un grand espace vide. */
.rich-text > p:empty,
.rich-text > div:empty,
.rich-text > p:has(> br:only-child),
.rich-text > div:has(> br:only-child){
    display:none!important;
}

@media print{
    .operation-sheet-recueil .operation-remarks-panel,
    .operation-sheet-recueil .operation-ecology-panel{
        display:block!important;
        height:auto!important;
        min-height:0!important;
        overflow:visible!important;
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .operation-section-heading,
    .operation-sheet-recueil .operation-ecology-panel .operation-section-heading{
        break-after:avoid-page!important;
        page-break-after:avoid!important;
        margin-bottom:1.8mm!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .rich-text{
        display:block!important;
        height:auto!important;
        min-height:0!important;
        margin:0!important;
        padding:0!important;
        overflow:visible!important;
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .rich-text > *{
        height:auto!important;
        min-height:0!important;
        break-before:auto!important;
        page-break-before:auto!important;
        break-after:auto!important;
        page-break-after:auto!important;
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .rich-text > :first-child{
        margin-top:0!important;
        break-before:avoid-page!important;
        page-break-before:avoid!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .rich-text p{
        margin:0 0 2mm!important;
        orphans:2!important;
        widows:2!important;
    }

    .operation-sheet-recueil .operation-remarks-panel .rich-text p:last-child{
        margin-bottom:0!important;
    }

    .operation-sheet-recueil .operation-ecology-table-wrap,
    .operation-sheet-recueil .operation-ecology-table,
    .operation-sheet-recueil .operation-ecology-table tbody{
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-sheet-recueil .operation-ecology-table thead{
        display:table-header-group!important;
    }

    .operation-sheet-recueil .operation-ecology-table tr{
        break-inside:avoid!important;
        page-break-inside:avoid!important;
    }
}

/* Recueil PPI : le titre des remarques accompagne toujours le premier bloc de texte. */
.operation-remarks-first-block,
.operation-remarks-continuation{
    margin:0;
}
.operation-remarks-first-block > :first-child,
.operation-remarks-continuation > :first-child{
    margin-top:0;
}
.operation-remarks-first-block > :last-child,
.operation-remarks-continuation > :last-child{
    margin-bottom:0;
}
.operation-ecology-caption{
    caption-side:top;
    padding:0 0 14px 16px;
    color:#245fba;
    font-size:20px;
    font-weight:650;
    line-height:1.2;
    text-align:left;
    border-left:4px solid #315fd6;
}

@media print{
    .operation-sheet-recueil .operation-remarks-intro{
        break-inside:avoid!important;
        page-break-inside:avoid!important;
    }

    .operation-sheet-recueil .operation-remarks-intro .operation-section-heading{
        margin-bottom:1.8mm!important;
    }

    .operation-sheet-recueil .operation-remarks-first-block,
    .operation-sheet-recueil .operation-remarks-continuation{
        display:block!important;
        height:auto!important;
        min-height:0!important;
        margin:0!important;
        padding:0!important;
        overflow:visible!important;
    }

    .operation-sheet-recueil .operation-remarks-continuation{
        break-inside:auto!important;
        page-break-inside:auto!important;
    }

    .operation-sheet-recueil .operation-remarks-continuation > :first-child{
        margin-top:2mm!important;
    }

    .operation-sheet-recueil .operation-ecology-caption{
        padding:0 0 1.8mm 2.3mm!important;
        border-left-width:1mm!important;
        color:#245fba!important;
        font-size:11pt!important;
        font-weight:700!important;
        line-height:1.2!important;
        text-align:left!important;
        break-after:avoid-page!important;
        page-break-after:avoid!important;
    }
}

/* Titres des sections des fiches : rendu strictement identique partout.
   Cette règle finale neutralise les anciennes variantes du Recueil PPI. */
.operation-sheet .operation-section-title {
    box-sizing: border-box !important;
    display: block;
    flex: 0 0 auto;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    font-family: Inter, Arial, sans-serif !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    font-style: normal !important;
    font-stretch: normal !important;
    line-height: 1.2 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
}

.operation-sheet .operation-ecology-caption.operation-section-title {
    display: table-caption;
}

@media print {
    .operation-sheet .operation-section-title {
        font-size: 11pt !important;
        font-weight: 700 !important;
        line-height: 1.2 !important;
        letter-spacing: 0 !important;
    }
}

/* Correctif final PDF : les montants sont plus petits que le texte afin de
   rester entiers dans leur colonne, y compris dans les lignes avec colspan. */
.jodit-wysiwyg table .jodit-cell-amount,
.rich-text table .jodit-cell-amount {
    font-size: .82em !important;
    line-height: 1.05 !important;
    padding-left: 2px !important;
    padding-right: 2px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
}

@media print {
    .rich-text,
    .rich-text figure.table,
    .rich-text div.table,
    .rich-text table {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    .rich-text table .jodit-cell-amount {
        font-size: 7px !important;
        line-height: 1 !important;
        padding-left: 1px !important;
        padding-right: 1px !important;
    }

    .rich-text table .jodit-cell-text {
        white-space: normal !important;
        overflow-wrap: break-word !important;
        word-break: normal !important;
    }
}

/* Évaluation écologique compacte : en-tête vert, pictogrammes et synthèse calculée. */
.operation-ecology-table-wrap{
    border:1px solid #cfded2;
    border-radius:8px;
    overflow-x:auto;
    overflow-y:visible;
    background:#fff;
}

.operation-ecology-table{
    width:100%;
    min-width:720px;
    border-collapse:collapse;
    table-layout:fixed;
    font-size:13px;
}

.operation-ecology-table thead th{
    padding:8px 10px;
    border:1px solid #72a878;
    background:#5d9f63!important;
    color:#fff!important;
    font-size:12.5px;
    font-weight:800;
    line-height:1.15;
    text-align:center;
}

.operation-ecology-table thead th:nth-child(1){width:31%}
.operation-ecology-table thead th:nth-child(2){width:20%}
.operation-ecology-table thead th:nth-child(3){width:49%}

.operation-ecology-table tbody th,
.operation-ecology-table tbody td{
    padding:7px 9px;
    border:1px solid #d8e2da;
    line-height:1.25;
    vertical-align:middle;
}

.operation-ecology-table tbody th{
    background:#f7fbf7!important;
    color:#31483a!important;
    font-weight:750;
}

.operation-ecology-table tbody tr:nth-child(even) td{
    background:#fbfdfb;
}

.eco-criterion{
    display:flex;
    align-items:center;
    gap:8px;
    min-width:0;
}

.eco-criterion-icon,
.ecology-summary-icon{
    display:inline-flex;
    flex:0 0 auto;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    color:#2f7a43;
}

.eco-criterion-svg{
    display:block;
    width:100%;
    height:100%;
}

.operation-ecology-table .eco-grade-cell{
    background:#fff!important;
    text-align:center;
}

.eco-grade-pill{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:112px;
    max-width:100%;
    padding:5px 10px;
    border:1px solid rgba(0,0,0,.08);
    border-radius:999px;
    font-size:12px;
    font-weight:800;
    line-height:1.1;
    white-space:nowrap;
}

.ecology-summary{
    margin-top:10px;
    padding:10px 12px 9px;
    border:1px solid #c8ddcc;
    border-radius:8px;
    background:#f5faf6;
    color:#31483a;
    break-inside:avoid;
    page-break-inside:avoid;
}

.ecology-summary-main{
    display:flex;
    align-items:center;
    gap:7px;
    line-height:1.25;
}

.ecology-summary-main strong{
    color:#315f3a;
}

.ecology-summary-level{
    font-weight:800;
}

.eco-summary-very-positive .ecology-summary-level,
.eco-summary-positive .ecology-summary-level{
    color:#257239;
}

.eco-summary-neutral .ecology-summary-level{
    color:#986d00;
}

.eco-summary-negative .ecology-summary-level{
    color:#a13b37;
}

.eco-summary-undefined .ecology-summary-level{
    color:#737b86;
}

.ecology-summary-comment{
    margin:7px 0 0 29px;
    color:#3f4d43;
    line-height:1.35;
}

.ecology-calculation-method{
    margin:7px 0 0 29px;
    color:#6a756d;
    font-size:10.5px;
    line-height:1.3;
}

.ecology-detail-panel .operation-ecology-table-wrap{
    margin-bottom:0;
}

.ecology-form textarea[name$="[syntheseEcologique]"]{
    min-height:110px;
}

@media(max-width:760px){
    .operation-ecology-table{min-width:680px}
    .ecology-summary-main{align-items:flex-start;flex-wrap:wrap}
    .ecology-summary-comment,
    .ecology-calculation-method{margin-left:0}
}

@media print{
    .operation-ecology-table-wrap{
        border-radius:1.5mm!important;
        overflow:visible!important;
    }

    .operation-ecology-table{
        min-width:0!important;
        width:100%!important;
        table-layout:fixed!important;
        font-size:7.2pt!important;
    }

    .operation-ecology-table thead th{
        padding:1.15mm 1.2mm!important;
        font-size:7.1pt!important;
        line-height:1.1!important;
    }

    .operation-ecology-table tbody th,
    .operation-ecology-table tbody td{
        padding:1.15mm 1.25mm!important;
        font-size:7.1pt!important;
        line-height:1.18!important;
    }

    .eco-criterion{
        gap:1.2mm!important;
    }

    .eco-criterion-icon,
    .ecology-summary-icon{
        width:4.5mm!important;
        height:4.5mm!important;
    }

    .eco-grade-pill{
        min-width:0!important;
        padding:.75mm 1.3mm!important;
        font-size:6.7pt!important;
        white-space:nowrap!important;
    }

    .ecology-summary{
        margin-top:1.6mm!important;
        padding:1.5mm 1.8mm 1.3mm!important;
        border-radius:1.5mm!important;
    }

    .ecology-summary-main{
        gap:1.2mm!important;
        font-size:7.4pt!important;
    }

    .ecology-summary-comment{
        margin:1mm 0 0 5.7mm!important;
        font-size:7.1pt!important;
        line-height:1.25!important;
    }

    .ecology-calculation-method{
        margin:1mm 0 0 5.7mm!important;
        font-size:5.9pt!important;
        line-height:1.22!important;
    }

    .operation-sheet-recueil .operation-ecology-table{
        font-size:6.8pt!important;
    }

    .operation-sheet-recueil .operation-ecology-table thead th,
    .operation-sheet-recueil .operation-ecology-table tbody th,
    .operation-sheet-recueil .operation-ecology-table tbody td{
        padding:1mm 1.1mm!important;
        font-size:6.7pt!important;
    }

    .operation-sheet-recueil .ecology-summary-main{
        font-size:7pt!important;
    }

    .operation-sheet-recueil .ecology-summary-comment{
        font-size:6.7pt!important;
    }

    .operation-sheet-recueil .ecology-calculation-method{
        font-size:5.6pt!important;
    }
}

/* Couleurs des niveaux sous forme de badges compacts. */
.eco-grade-pill.eco-grade-very-negative{background:#8f4a47;color:#fff;border-color:#7b3e3b}
.eco-grade-pill.eco-grade-negative{background:#f3d0cc;color:#8b302c;border-color:#dfa19a}
.eco-grade-pill.eco-grade-neutral{background:#fff2cc;color:#886000;border-color:#e5c362}
.eco-grade-pill.eco-grade-positive{background:#e5f4e7;color:#2d713b;border-color:#a8d3ae}
.eco-grade-pill.eco-grade-very-positive{background:#4f7d48;color:#fff;border-color:#426c3d}
.eco-grade-pill.eco-grade-undefined,
.eco-grade-pill.eco-grade-empty{background:#f0f2f4;color:#707984;border-color:#d4d9df}

/* --------------------------------------------------------------------------
   Fiche opération : pictogrammes SVG intégrés aux titres et à l'identification
   -------------------------------------------------------------------------- */
.operation-sheet .operation-section-heading{
    padding-left:0!important;
}
.operation-sheet .operation-section-heading::before{
    display:none!important;
}
.operation-sheet .operation-section-title{
    display:flex!important;
    align-items:center;
    gap:10px;
    color:#174f91!important;
}
.operation-section-icon{
    display:inline-flex;
    flex:0 0 auto;
    align-items:center;
    justify-content:center;
    width:34px;
    height:34px;
    border-radius:50%;
    background:#174f91;
    color:#fff;
}
.operation-section-icon svg{
    display:block;
    width:21px;
    height:21px;
}

.operation-identification-secondary .operation-context-item{
    display:grid;
    grid-template-columns:42px minmax(0,1fr)!important;
    gap:12px!important;
    align-items:center!important;
    padding:9px 0!important;
}
.operation-context-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    border-radius:50%;
    background:#e8f0fb;
    color:#174f91;
}
.operation-context-icon svg{
    display:block;
    width:23px;
    height:23px;
}
.operation-context-copy{
    display:block;
    min-width:0;
}
.operation-context-copy dt,
.operation-context-copy dd{
    display:block;
}
.operation-context-copy dt{
    margin:0 0 2px;
}
.operation-context-copy dd{
    margin:0;
}

/* Caractéristiques : titre et badges sur une même ligne, avec retour propre si nécessaire. */
.operation-sheet .operation-characteristics-panel{
    display:flex;
    align-items:center;
    gap:18px;
}
.operation-sheet .operation-characteristics-panel .operation-section-heading{
    flex:0 0 auto;
    margin:0!important;
}
.operation-sheet .operation-characteristics{
    flex:1 1 auto;
    flex-wrap:wrap;
}

/* L'évaluation écologique utilise sa propre identité verte. */
.operation-sheet .operation-ecology-panel .operation-section-title,
.operation-sheet .operation-ecology-caption.operation-section-title{
    color:#28733c!important;
}
.operation-sheet .operation-ecology-panel .operation-section-icon,
.operation-sheet .operation-ecology-caption .operation-section-icon{
    background:#3d934d;
}
.operation-ecology-caption{
    padding-left:0!important;
    text-align:left;
}
.operation-ecology-caption .operation-section-icon{
    display:inline-flex;
    vertical-align:middle;
    margin-right:8px;
}
.operation-ecology-caption > span:last-child{
    vertical-align:middle;
}

/* La méthode est volontairement très discrète : information secondaire. */
.ecology-calculation-method{
    margin-top:6px!important;
    color:#7d8780!important;
    font-size:8.5px!important;
    font-weight:400!important;
    line-height:1.22!important;
}
.ecology-calculation-method strong{
    font-weight:600!important;
}

@media(max-width:900px){
    .operation-sheet .operation-characteristics-panel{
        align-items:flex-start;
        flex-direction:column;
        gap:10px;
    }
    .operation-identification-secondary .operation-context-item{
        grid-template-columns:38px minmax(0,1fr)!important;
    }
    .operation-context-icon{
        width:34px;
        height:34px;
    }
}

@media print{
    .operation-sheet .operation-section-title{
        gap:1.6mm!important;
    }
    .operation-section-icon{
        width:6.5mm!important;
        height:6.5mm!important;
    }
    .operation-section-icon svg{
        width:4.1mm!important;
        height:4.1mm!important;
    }
    .operation-identification-secondary .operation-context-item{
        grid-template-columns:7.5mm minmax(0,1fr)!important;
        gap:1.6mm!important;
        padding:.8mm 0!important;
    }
    .operation-context-icon{
        width:6.5mm!important;
        height:6.5mm!important;
    }
    .operation-context-icon svg{
        width:4mm!important;
        height:4mm!important;
    }
    .operation-context-copy dt{
        margin-bottom:.25mm!important;
    }
    .operation-sheet .operation-characteristics-panel{
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        gap:2mm!important;
    }
    .operation-sheet .operation-characteristics-panel .operation-section-heading{
        flex:0 0 auto!important;
    }
    .ecology-calculation-method{
        margin-top:.7mm!important;
        font-size:4.8pt!important;
        line-height:1.15!important;
        color:#838b85!important;
    }
    .operation-sheet-recueil .ecology-calculation-method{
        font-size:4.5pt!important;
    }
}
.operation-sheet .operation-ecology-caption.operation-section-title{
    display:table-caption!important;
}

/* Placeholder sélectionné */
.select-placeholder-rouge:has(option[value=""]:checked) {
    color: #dc3545;
}

/* Valeur réellement sélectionnée */
.select-placeholder-rouge {
    color: #212529;
}

/* Couleur normale des choix dans la liste */
.select-placeholder-rouge option {
    color: #212529;
}

/* Placeholder dans la liste déroulante */
.select-placeholder-rouge option[value=""] {
    color: #dc3545;
}
/* ========================================================================== 
   Correctif responsive : filtres, tableaux et menu latéral
   - Les filtres se replient selon la largeur réellement disponible.
   - Le tableau conserve son propre défilement horizontal.
   - Le menu latéral reste entièrement accessible, même sur un écran bas.
   ========================================================================== */
@media screen {
    html,
    body {
        max-width: 100%;
        overflow-x: hidden;
    }

    .app-shell,
    .main-content,
    .content-area,
    .panel {
        min-width: 0;
    }

    .sidebar {
        display: flex;
        flex-direction: column;
        height: 100vh;
        height: 100dvh;
        overflow: hidden;
    }

    .sidebar .brand {
        flex: 0 0 86px;
    }

    .sidebar nav {
        flex: 1 1 auto;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        padding-bottom: 12px;
        scrollbar-gutter: stable;
        scrollbar-width: thin;
    }

    .sidebar-toggle {
        flex: 0 0 50px;
        margin: 10px auto 14px;
    }

    .content-area {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
    }

    .operation-index-panel,
    .operation-report-panel {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
    }

    .operation-index-filters,
    .operation-report-filters {
        grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
        align-items: stretch;
    }

    .operation-index-filters > *,
    .operation-report-filters > * {
        min-width: 0;
        max-width: 100%;
    }

    .operation-index-filters .btn,
    .operation-report-filters .btn {
        width: 100%;
        min-height: 42px;
        white-space: nowrap;
    }

    .operation-index-table-shell,
    .operation-report-table-shell {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
    }

    .operation-index-scrollbar-top,
    .operation-index-scrollbar-bottom,
    .operation-index-table-scroll,
    .operation-report-table-scroll {
        width: 100%;
        max-width: 100%;
    }

    .operation-index-table-scroll,
    .operation-report-table-scroll {
        overflow: auto;
        overscroll-behavior: contain;
    }
}

@media screen and (max-width: 760px) {
    .sidebar {
        width: min(88vw, 272px);
    }

    .sidebar nav {
        padding-bottom: 20px;
    }

    .operation-index-filters,
    .operation-report-filters {
        grid-template-columns: 1fr;
    }
}

@media screen and (max-height: 720px) {
    .sidebar .brand {
        flex-basis: 72px;
        height: 72px;
    }

    .sidebar .nav-link {
        padding-top: 10px;
        padding-bottom: 10px;
    }

    .sidebar .nav-section {
        margin-top: 14px;
        margin-bottom: 6px;
    }

    .sidebar-toggle {
        width: 42px;
        height: 42px;
        flex-basis: 42px;
        margin: 7px auto 9px;
        font-size: 29px;
    }
}

/* --------------------------------------------------------------------------
   Administration : réordonnancement des opérations par axe politique
   -------------------------------------------------------------------------- */
.operation-order-heading{
    align-items:flex-end;
}

.operation-order-panel{
    display:grid;
    gap:18px;
}

.operation-order-axis-form{
    display:grid;
    grid-template-columns:minmax(150px,220px) minmax(280px,1fr) auto;
    gap:12px;
    align-items:center;
}

.operation-order-axis-form label{
    font-weight:800;
    color:#354052;
}

.operation-order-axis-form select{
    width:100%;
    min-width:0;
}

.operation-order-note{
    margin:0;
}

.operation-order-toolbar,
.operation-order-savebar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    flex-wrap:wrap;
}

.operation-order-toolbar form{
    margin:0;
}

.operation-order-list{
    display:grid;
    gap:8px;
    margin:0;
    padding:0;
    list-style:none;
}

.operation-order-item{
    display:grid;
    grid-template-columns:42px 46px minmax(240px,1fr) auto;
    gap:12px;
    align-items:center;
    min-width:0;
    padding:11px 12px;
    border:1px solid #d8dee9;
    border-radius:8px;
    background:#fff;
    box-shadow:0 1px 2px rgba(28,39,60,.06);
    transition:box-shadow .15s ease, transform .15s ease, opacity .15s ease;
}

.operation-order-item:focus-within{
    border-color:#315fd6;
    box-shadow:0 0 0 3px rgba(49,95,214,.14);
}

.operation-order-item.is-dragging{
    opacity:.55;
    transform:scale(.995);
    box-shadow:0 8px 22px rgba(28,39,60,.18);
}

.operation-order-handle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    padding:0;
    border:1px solid #cbd3e1;
    border-radius:7px;
    background:#f5f7fb;
    color:#4d5b72;
    font-size:20px;
    line-height:1;
    cursor:grab;
}

.operation-order-item:active .operation-order-handle{
    cursor:grabbing;
}

.operation-order-position{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    border-radius:50%;
    background:#315fd6;
    color:#fff;
    font-weight:850;
    font-variant-numeric:tabular-nums;
}

.operation-order-copy{
    display:block;
    min-width:0;
}

.operation-order-copy strong,
.operation-order-copy small{
    display:block;
}

.operation-order-copy strong{
    color:#24324a;
    line-height:1.3;
    overflow-wrap:anywhere;
}

.operation-order-copy small{
    margin-top:3px;
    color:#727d8f;
    line-height:1.3;
}

.operation-order-actions{
    display:flex;
    gap:7px;
    align-items:center;
}

.operation-order-move{
    min-width:94px;
}

.operation-order-move:disabled{
    opacity:.38;
    cursor:not-allowed;
}

.operation-order-savebar{
    position:sticky;
    bottom:0;
    z-index:4;
    margin-top:14px;
    padding:12px;
    border:1px solid #d8dee9;
    border-radius:8px;
    background:rgba(255,255,255,.96);
    box-shadow:0 -3px 12px rgba(28,39,60,.09);
    backdrop-filter:blur(4px);
}

@media(max-width:900px){
    .operation-order-axis-form{
        grid-template-columns:1fr;
        align-items:stretch;
    }

    .operation-order-item{
        grid-template-columns:40px 42px minmax(0,1fr);
    }

    .operation-order-actions{
        grid-column:1 / -1;
        justify-content:flex-end;
        padding-top:4px;
    }
}

@media(max-width:560px){
    .operation-order-item{
        grid-template-columns:38px 38px minmax(0,1fr);
        gap:8px;
        padding:9px;
    }

    .operation-order-handle,
    .operation-order-position{
        width:34px;
        height:34px;
    }

    .operation-order-actions{
        display:grid;
        grid-template-columns:1fr 1fr;
    }

    .operation-order-move{
        min-width:0;
        width:100%;
    }

    .operation-order-savebar{
        align-items:stretch;
    }

    .operation-order-savebar .btn{
        width:100%;
        text-align:center;
    }
}

@media print{
    .operation-order-panel,
    .operation-order-heading{
        display:none!important;
    }
}

/* Fiche individuelle et Recueil PPI à l'écran :
   le texte entoure l'image puis reprend toute la largeur sous celle-ci.
   Le rendu mobile et les règles d'impression restent inchangés. */
@media screen and (min-width: 761px) {
    .operation-sheet .operation-description-layout.has-image {
        display: block;
    }

    .operation-sheet .operation-description-layout.has-image::after {
        content: "";
        display: block;
        clear: both;
    }

    .operation-sheet .operation-description-layout.has-image .operation-image-frame {
        float: left;
        width: 275px;
        height: 275px;
        margin: 0 26px 18px 0;
    }

    .operation-sheet .operation-description-layout.has-image .operation-description-content {
        display: block;
        min-width: 0;
    }
}

/* ==========================================================
   Tableaux collés depuis Excel dans Jodit
   Largeur maximale : 700 px - texte : 11 px
   Application : éditeur, fiches, recueils, impression et PDF.
   ========================================================== */

/* Conteneurs générés par Jodit autour des tableaux. */
.jodit-wysiwyg figure.table,
.jodit-wysiwyg div.table,
.rich-text figure.table,
.rich-text div.table {
    width: min(700px, 100%) !important;
    max-width: 100% !important;
    margin: 12px 0 !important;
}

/* Tableaux dans les contenus affichés. La largeur explicite est nécessaire
   pour que table-layout:fixed contraigne réellement la table, y compris
   lorsque les cellules de montants utilisent white-space:nowrap. */
.rich-text figure.table > table,
.rich-text div.table > table,
.rich-text > table,
.rich-text table.table {
    width: min(700px, 100%) !important;
    max-width: 100% !important;
    margin: 0 !important;
    border-collapse: collapse !important;
    table-layout: fixed !important;
    font-size: 11px !important;
}

.rich-text figure.table > table th,
.rich-text figure.table > table td,
.rich-text div.table > table th,
.rich-text div.table > table td,
.rich-text > table th,
.rich-text > table td,
.rich-text table.table th,
.rich-text table.table td {
    padding: 5px 7px !important;
    font-size: 11px !important;
    line-height: 1.25 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
}

.jodit-wysiwyg table {
    width: min(700px, 100%);
    max-width: 100%;
    border-collapse: collapse !important;
    table-layout: fixed;
    font-size: 11px !important;
}

.jodit-wysiwyg table th,
.jodit-wysiwyg table td {
    padding: 5px 7px !important;
    font-size: 11px !important;
    line-height: 1.25 !important;
    word-break: normal !important;
}

@media screen {
    /* L’éditeur peut défiler horizontalement sans incidence sur la fiche. */
    .jodit-wysiwyg {
        overflow-x: auto;
    }

    /* Important : ne pas mettre overflow:auto sur tout .rich-text.
       Cela créerait un nouveau contexte de mise en forme et empêcherait
       le texte de revenir sous l’image flottante. */
    .operation-sheet .operation-description-content .rich-text {
        overflow: visible !important;
    }

    /* Seuls les conteneurs de tableaux peuvent défiler horizontalement. */
    .jodit-wysiwyg figure.table,
    .jodit-wysiwyg div.table,
    .rich-text figure.table,
    .rich-text div.table {
        overflow-x: auto !important;
    }
}

@media print {
    /* 700 px correspondent à environ 185 mm : le tableau reste contenu
       dans la largeur utile d'une page A4 portrait avec les marges actuelles. */
    .rich-text figure.table,
    .rich-text div.table {
        display: block !important;
        width: min(700px, 100%) !important;
        max-width: 100% !important;
        margin: 2.5mm 0 !important;
        overflow: visible !important;
    }

    .rich-text figure.table > table,
    .rich-text div.table > table,
    .rich-text > table,
    .rich-text table.table {
        width: min(700px, 100%) !important;
        max-width: 100% !important;
        margin: 0 !important;
        table-layout: fixed !important;
        font-size: 11px !important;
    }

    .rich-text figure.table > table th,
    .rich-text figure.table > table td,
    .rich-text div.table > table th,
    .rich-text div.table > table td,
    .rich-text > table th,
    .rich-text > table td,
    .rich-text table.table th,
    .rich-text table.table td {
        padding: 5px 7px !important;
        font-size: 11px !important;
        line-height: 1.25 !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }
}

/* ==========================================================
   Correctif final des tableaux Jodit
   - colonnes Direction, Code et Libellé avec retour à la ligne ;
   - montants sans retour à la ligne à partir de la 4e colonne ;
   - tableau conservé sur une seule page lorsqu'il tient sur une page.
   ========================================================== */

/* Les trois premières colonnes sont textuelles et doivent pouvoir se
   répartir sur plusieurs lignes sans empiéter sur les montants. */
.jodit-wysiwyg table th:nth-child(-n+3),
.jodit-wysiwyg table td:nth-child(-n+3),
.rich-text figure.table > table th:nth-child(-n+3),
.rich-text figure.table > table td:nth-child(-n+3),
.rich-text div.table > table th:nth-child(-n+3),
.rich-text div.table > table td:nth-child(-n+3),
.rich-text > table th:nth-child(-n+3),
.rich-text > table td:nth-child(-n+3),
.rich-text table.table th:nth-child(-n+3),
.rich-text table.table td:nth-child(-n+3) {
    min-width: 0 !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
}

/* À partir de la quatrième colonne : années et montants. Les cellules sont
   compactes et les nombres restent sur une seule ligne. */
.jodit-wysiwyg table th:nth-child(n+4),
.jodit-wysiwyg table td:nth-child(n+4),
.rich-text figure.table > table th:nth-child(n+4),
.rich-text figure.table > table td:nth-child(n+4),
.rich-text div.table > table th:nth-child(n+4),
.rich-text div.table > table td:nth-child(n+4),
.rich-text > table th:nth-child(n+4),
.rich-text > table td:nth-child(n+4),
.rich-text table.table th:nth-child(n+4),
.rich-text table.table td:nth-child(n+4) {
    padding-left: 3px !important;
    padding-right: 3px !important;
    font-size: 10px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    overflow-wrap: normal !important;
    word-break: keep-all !important;
    font-variant-numeric: tabular-nums;
}

@media print {
    /* Si le tableau tient sur une page, Chromium le déplace en entier sur
       la page suivante au lieu de le couper entre deux pages. */
    .rich-text figure.table,
    .rich-text div.table,
    .rich-text > table,
    .rich-text table.table,
    .rich-text figure.table > table,
    .rich-text div.table > table {
        break-inside: avoid !important;
        page-break-inside: avoid !important;
    }

    .rich-text table thead,
    .rich-text table tbody,
    .rich-text table tr,
    .rich-text table th,
    .rich-text table td {
        break-inside: avoid !important;
        page-break-inside: avoid !important;
    }
}

/* ==========================================================
   TABLEAUX JODIT — règle finale écran, recueils et PDF
   ========================================================== */
.jodit-wysiwyg,
.rich-text,
.jodit-wysiwyg figure.table,
.jodit-wysiwyg div.table,
.rich-text figure.table,
.rich-text div.table {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
}

.jodit-wysiwyg table,
.rich-text figure.table > table,
.rich-text div.table > table,
.rich-text > table,
.rich-text table.table {
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 11px !important;
}

/* Détection JavaScript ; repli sur les trois premières colonnes pour les
   anciens contenus enregistrés avant l'ajout des classes. */
.jodit-wysiwyg table .jodit-cell-text,
.rich-text table .jodit-cell-text,
.jodit-wysiwyg table:not(:has(.jodit-cell-text)) tr > :nth-child(-n+3),
.rich-text table:not(:has(.jodit-cell-text)) tr > :nth-child(-n+3) {
    min-width: 0 !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
}

.jodit-wysiwyg table .jodit-cell-amount,
.rich-text table .jodit-cell-amount,
.jodit-wysiwyg table:not(:has(.jodit-cell-amount)) tr > :nth-child(n+4),
.rich-text table:not(:has(.jodit-cell-amount)) tr > :nth-child(n+4) {
    padding-left: 3px !important;
    padding-right: 3px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    overflow-wrap: normal !important;
    word-break: keep-all !important;
    font-variant-numeric: tabular-nums;
}

/* Réduction automatique selon le nombre de colonnes. */
.jodit-wysiwyg table.jodit-table-wide,
.rich-text table.jodit-table-wide,
.jodit-wysiwyg table:has(tr > :nth-child(9)),
.rich-text table:has(tr > :nth-child(9)) {
    font-size: 10px !important;
}

.jodit-wysiwyg table.jodit-table-very-wide,
.rich-text table.jodit-table-very-wide,
.jodit-wysiwyg table:has(tr > :nth-child(11)),
.rich-text table:has(tr > :nth-child(11)) {
    font-size: 9px !important;
}

.jodit-wysiwyg table.jodit-table-ultra-wide,
.rich-text table.jodit-table-ultra-wide,
.jodit-wysiwyg table:has(tr > :nth-child(13)),
.rich-text table:has(tr > :nth-child(13)) {
    font-size: 8px !important;
}

.jodit-wysiwyg table th,
.jodit-wysiwyg table td,
.rich-text table th,
.rich-text table td {
    font-size: inherit !important;
    line-height: 1.2 !important;
}

@media print {
    .jodit-wysiwyg table,
    .rich-text figure.table > table,
    .rich-text div.table > table,
    .rich-text > table,
    .rich-text table.table {
        width: 100% !important;
        max-width: 100% !important;
        table-layout: fixed !important;
        overflow: hidden !important;
    }
}

/* Priorité ultime après toutes les anciennes règles Jodit. */
.jodit-wysiwyg table .jodit-cell-amount,
.rich-text table .jodit-cell-amount {
    font-size: .82em !important;
    line-height: 1.05 !important;
    padding-left: 2px !important;
    padding-right: 2px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
}

@media print {
    .rich-text,
    .rich-text figure.table,
    .rich-text div.table,
    .rich-text table {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    .rich-text table .jodit-cell-amount {
        font-size: 7px !important;
        line-height: 1 !important;
        padding-left: 1px !important;
        padding-right: 1px !important;
        white-space: nowrap !important;
    }

    .rich-text table .jodit-cell-text {
        white-space: normal !important;
        overflow-wrap: break-word !important;
        word-break: normal !important;
    }
}

/* ==========================================================
   PATCH — Recueil PPI : habillage image + justification
   - à l'impression/PDF, le texte du descriptif entoure l'image ;
   - descriptif et remarques : texte courant justifié ;
   - tableaux Jodit/Excel explicitement exclus de la justification.
   ========================================================== */

/* Seulement les deux champs affichés dans les fiches et recueils (écran/PDF).
   Le conteneur couvre le texte brut ; les descendants couvrent notamment les
   div, titres, listes et alignements inline issus du collage dans Jodit.
   Aucun élément de tableau n'est sélectionné par la justification. */
.operation-sheet :is(.operation-description-content, .operation-remarks-panel) .rich-text,
.operation-sheet :is(.operation-description-content, .operation-remarks-panel) .rich-text :not(table, table *) {
    text-align: justify !important;
    text-justify: inter-word !important;
    hyphens: auto;
}

/* Arrête l'héritage aux tableaux sans écraser les alignements de leurs
   cellules, paragraphes ou styles inline (Excel/Jodit). */
.operation-sheet :is(.operation-description-content, .operation-remarks-panel) .rich-text table {
    text-align: initial;
    text-justify: auto;
    hyphens: manual;
}

@media print {
    /* Les règles finales des tableaux Jodit appliquent overflow:hidden à
       .rich-text. Cela crée un contexte de mise en forme qui empêche le
       texte de venir à droite d'un float. Le Recueil doit rester visible
       pour permettre l'habillage autour de l'image. */
    .operation-sheet-recueil .operation-description-layout.has-image {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        overflow: visible !important;
    }

    .operation-sheet-recueil .operation-description-layout.has-image::after {
        content: "";
        display: block;
        clear: both;
    }

    .operation-sheet-recueil .operation-description-layout.has-image .operation-image-frame {
        display: block !important;
        float: left !important;
        width: 52mm !important;
        height: 52mm !important;
        margin: 0 5mm 3mm 0 !important;
        break-inside: avoid !important;
        page-break-inside: avoid !important;
    }

    .operation-sheet-recueil .operation-description-layout.has-image .operation-sheet-image {
        display: block !important;
        width: 52mm !important;
        height: 52mm !important;
        object-fit: contain !important;
    }

    .operation-sheet-recueil .operation-description-layout.has-image .operation-description-content {
        display: block !important;
        width: auto !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
    }

    .operation-sheet-recueil .operation-description-layout.has-image .operation-description-content .rich-text {
        display: block !important;
        width: auto !important;
        max-width: none !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        box-sizing: border-box !important;
    }

    .operation-sheet-recueil .operation-description-layout.has-image .operation-description-content .rich-text > :first-child {
        margin-top: 0 !important;
    }
}

/* Pages de garde : uniquement le recueil par axe politique. */
.recueil-cover-options{display:flex;flex-wrap:wrap;gap:12px 28px;margin:0 0 24px;padding:16px;border:1px solid #dfe3ea;border-radius:8px;background:#fff}
.recueil-cover-options legend{font-weight:700;padding:0 6px}
.recueil-cover-options label{display:flex;align-items:center;gap:8px;cursor:pointer}
.recueil-cover-options input{width:18px;height:18px;accent-color:#3158c9}
.recueil-cover-page{width:210mm;max-width:100%;aspect-ratio:210/297;position:relative;margin:0 auto;background:#fff;box-shadow:0 4px 18px rgba(36,62,105,.06);color:#173858;container-type:inline-size}
.recueil-front-cover img{display:block;width:100%;height:auto}
.recueil-axis-frame{position:absolute;inset:6.734% 9.524%;border:1px solid #dce8ee;padding:6.5% 5%;display:flex;flex-direction:column}
.recueil-axis-frame header,.recueil-axis-frame footer{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:clamp(8px,1.8cqw,14px)}
.recueil-axis-frame header{color:#00509b;border-bottom:1px solid #00509b;padding-bottom:12px;position:relative}
.recueil-axis-frame header::after{content:"";position:absolute;bottom:-1px;left:0;width:17%;border-bottom:3px solid #00afbe}
.recueil-axis-frame header span,.recueil-axis-frame footer{color:#7898af;font-size:clamp(7px,1.4cqw,11px)}
.recueil-axis-frame h2{font-weight:700;margin:45% 0 0;font-size:clamp(17px,4.2cqw,33px);line-height:1.2;text-transform:uppercase;overflow-wrap:anywhere;color:#173858}
.recueil-axis-frame h2::after{content:"";display:block;width:100px;max-width:35%;height:3px;margin-top:28px;background:linear-gradient(to right,#00509b 60%,#00afbe 60%)}
.recueil-axis-frame footer{margin-top:auto}
.recueil-ppi:has(#recueil-cover:not(:checked)) .recueil-front-cover,
.recueil-ppi:has(#recueil-dividers:not(:checked)) .recueil-axis-cover{display:none!important}
@page recueil-cover{size:A4 portrait;margin:0}
@media print{
    .recueil-cover-page{page:recueil-cover;width:210mm!important;max-width:none!important;height:297mm!important;aspect-ratio:auto;margin:0!important;box-shadow:none;break-inside:avoid;break-after:page;page-break-after:always}
    .recueil-front-cover img{width:210mm;height:297mm;object-fit:contain}
    .recueil-axis-frame h2{font-size:24pt}
    .recueil-axis-frame header{font-size:10pt}
    .recueil-axis-frame header span,.recueil-axis-frame footer{font-size:8pt}
}

/* Impression des fiches : compacter les cartes sans réduire les caractères. */
@media print {
    .operation-sheet .operation-sheet-panel {
        padding: 2mm 2.5mm !important;
        margin-bottom: 2mm !important;
    }
    .operation-sheet-recueil .operation-sheet-panel {
        padding: 1.5mm 2mm !important;
        margin-bottom: 2mm !important;
    }
    /* Une évaluation courte reste entière. Le navigateur peut fragmenter
       ce bloc s'il dépasse une page, sans hauteur fixe ni contenu masqué. */
    .operation-sheet .operation-ecology-panel {
        break-inside: avoid-page !important;
        page-break-inside: avoid !important;
    }
    .operation-sheet .operation-ecology-table-wrap {
        break-after: avoid-page !important;
        page-break-after: avoid !important;
    }
    .operation-sheet .ecology-summary {
        break-before: avoid-page !important;
        page-break-before: avoid !important;
        margin-top: 1mm !important;
        padding: 1.2mm 1.5mm !important;
        orphans: 3;
        widows: 3;
    }
    .operation-sheet .operation-ecology-table th,
    .operation-sheet .operation-ecology-table td {
        padding: .8mm 1.1mm !important;
    }
}
