.cfo-observatoire{--navy:#0b2b45;--blue:#0b7f9f;--green:#16782d;--red:#c90000;--gold:#a8834e;--magenta:#a92091;--pale:#edf6f8;--line:#cbd7dc;--ink:#17252d;margin:1.5rem 0;color:var(--ink);font-family:Arial,Helvetica,sans-serif}
.cfo-observatoire *{box-sizing:border-box}
.cfo-cockpit{background:#fff;border:1px solid #aab8be;box-shadow:0 12px 32px rgba(11,43,69,.12);overflow:hidden}
.cfo-cockpit-title{border:2px solid #8e1919;margin:8px;padding:7px 14px;text-align:center;background:#fffaf7}
.cfo-cockpit-title h2{font:800 clamp(1rem,2.2vw,1.5rem)/1.2 Arial,Helvetica,sans-serif;margin:0;color:#781616}
.cfo-cockpit-title h2 span{font-weight:700}
.cfo-cockpit-title small{display:block;margin-top:4px;color:#6d6966;font-size:.7rem}
.cfo-cockpit-layout{display:grid;grid-template-columns:minmax(0,3.2fr) minmax(245px,1fr);gap:6px;padding:4px 8px 8px}
.cfo-cockpit main{min-width:0}
.cfo-band{padding:6px 10px;text-align:center;color:#fff;font-size:.95rem;font-weight:900;letter-spacing:.025em;line-height:1.15}
.cfo-band.is-navy{background:var(--navy)}.cfo-band.is-blue{background:var(--blue)}.cfo-band.is-green{background:var(--green)}.cfo-band.is-gold{background:var(--gold)}
.cfo-block{margin-bottom:7px}
.cfo-audience-grid{display:grid;grid-template-columns:1fr 1.25fr 1.25fr;gap:6px;margin-top:5px}
.cfo-donut-card,.cfo-mini{border:2px solid var(--navy);background:#fff;min-width:0}
.cfo-donut-card{grid-row:span 2;padding:8px}
.cfo-donut-card h3,.cfo-mini h4{margin:0 -4px 6px;text-align:center;color:#fff;background:var(--navy);padding:4px;font:bold .75rem/1.15 Arial,Helvetica,sans-serif}
.cfo-donut{width:min(150px,78%);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;margin:7px auto;position:relative}
.cfo-donut:after{content:"";position:absolute;width:48%;height:48%;background:#fff;border-radius:50%;box-shadow:0 0 0 1px #fff}
.cfo-donut>span{z-index:1;text-align:center;font-weight:900;color:var(--navy);font-size:1.05rem}.cfo-donut small{display:block;font-size:.55rem;font-weight:700;color:#777}
.cfo-legend{display:grid;grid-template-columns:1fr 1fr;gap:3px 8px;font-size:.59rem;text-transform:capitalize}.cfo-legend span{white-space:nowrap}.cfo-legend i{display:inline-block;width:8px;height:8px;margin-right:4px}.cfo-legend strong{float:right}
.cfo-card-source{margin:6px 0 0;text-align:center;color:#718087;font-size:.54rem}
.cfo-mini{border-color:var(--mini);padding:7px}.cfo-mini h4{background:var(--mini)}
.cfo-mini-body{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;text-align:center}.cfo-mini-body div{background:#f1f7f8;padding:5px 3px;border-bottom:1px dotted #8ca2aa}.cfo-mini-body strong,.cfo-mini-body small{display:block}.cfo-mini-body strong{font-size:.78rem}.cfo-mini-body small{font-size:.52rem;color:#68787f;margin-top:2px}
.cfo-line{width:100%;height:58px;margin-top:5px;overflow:visible;background:linear-gradient(to bottom,rgba(11,127,159,.04),rgba(11,127,159,.1))}.cfo-line line{stroke:#cbd7dc;stroke-width:.6}.cfo-line polyline{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}.cfo-no-chart{height:58px;display:grid;place-items:center;font-size:.65rem;color:#777}
.cfo-table-scroll{overflow:auto;border:2px solid var(--green);border-top:0}.cfo-data-table{width:100%;border-collapse:collapse;min-width:1040px;margin:0}.cfo-data-table th,.cfo-data-table td{padding:6px 7px;border-right:1px solid #fff;border-bottom:1px solid #fff;text-align:right;font-size:.68rem;white-space:nowrap}.cfo-data-table thead th{background:#cdeed4;color:#1d3322;font-weight:800;text-transform:uppercase}.cfo-data-table tbody th{text-align:left;color:#fff;background:#42a82e;max-width:180px;overflow:hidden;text-overflow:ellipsis}.cfo-data-table tbody tr:nth-child(even) td{background:#e4f4e7}.cfo-data-table tbody tr:nth-child(odd) td{background:#f3f8f3}.cfo-data-table tbody tr.is-coeur th{background:#c90000}.cfo-data-table tbody tr.is-faute th{background:#a8834e}.cfo-data-table tbody tr.is-restes th{background:#4f5357}.cfo-data-table tbody tr.is-escroc th{background:#a92091}.cfo-data-table .is-positive{color:#087f46;font-weight:800}.cfo-data-table .is-negative{color:#c7352e;font-weight:800}
.cfo-subband{margin:6px 0 0;padding:5px 10px;background:#dceee1;color:#174927;font:bold .76rem/1.2 Arial,Helvetica,sans-serif;border:2px solid var(--green);border-bottom:0}.cfo-subband small{float:right;background:#fff;color:var(--green);padding:1px 7px;border-radius:999px}
.cfo-note{font-size:.62rem;margin:0;padding:5px 8px;color:#6a5c50;background:#f6f0e9;border:1px solid #d9cbbb;border-top:0}
.cfo-quality-alert{display:flex;gap:8px;align-items:center;padding:8px 10px;background:#fff4d6;border:2px solid #d69b16;color:#5d4306;font-size:.68rem}.cfo-quality-alert strong{white-space:nowrap;text-transform:uppercase}.cfo-quality-alert span{line-height:1.35}
.cfo-up{color:#16925c;font-weight:900}.cfo-down{color:#df4937;font-weight:900}.cfo-flat{color:#c29a45;font-weight:900}
.cfo-snep{border:2px solid var(--blue)}.cfo-snep>.cfo-band{margin:-2px -2px 0}.cfo-snep-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:7px;background:#eef7f9}.cfo-snep-card{border:2px solid var(--rank);background:#fff;min-width:0}.cfo-snep-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:8px 9px;background:color-mix(in srgb,var(--rank) 9%,#fff)}.cfo-snep-head span,.cfo-snep-head small{display:block}.cfo-snep-head span{font-size:.8rem;font-weight:900;color:var(--navy);text-transform:uppercase}.cfo-snep-head small{font-size:.57rem;color:#66777d;margin-top:2px}.cfo-official-badge{flex:0 0 auto;padding:3px 6px;background:var(--rank);color:#fff;font-size:.54rem;letter-spacing:.08em;border-radius:2px}.cfo-snep-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#d9e5e8}.cfo-snep-kpis>div{background:#fff;text-align:center;padding:8px 3px}.cfo-snep-kpis strong,.cfo-snep-kpis small{display:block}.cfo-snep-kpis strong{font-size:.9rem;color:var(--navy)}.cfo-snep-kpis div:first-child strong{font-size:1.35rem;color:var(--rank)}.cfo-snep-kpis small{font-size:.5rem;color:#6e7c81;margin-top:2px}.cfo-snep-kpis .is-positive strong{color:#087f46}.cfo-snep-kpis .is-negative strong{color:#c7352e}.cfo-snep-kpis .is-flat strong{color:#8d763f}.cfo-rank-line{display:block;width:100%;height:72px;padding:6px 8px 0;background:linear-gradient(to bottom,rgba(11,127,159,.03),rgba(11,127,159,.1));overflow:visible}.cfo-rank-line line{stroke:#cbd7dc;stroke-width:.6}.cfo-rank-line polyline{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}.cfo-snep-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:.56rem;color:#61737a}.cfo-snep-foot a{color:var(--blue);font-weight:800;text-decoration:none}.cfo-snep-foot a:hover{text-decoration:underline}
.cfo-global{border:2px solid var(--green);margin-bottom:7px}.cfo-global .cfo-band{margin:-2px -2px 0}.cfo-global-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr .8fr;gap:1px;background:#fff}.cfo-global-grid div{text-align:center;background:#d7f0dc;padding:9px 5px}.cfo-global-grid span,.cfo-global-grid strong,.cfo-global-grid small{display:block}.cfo-global-grid span{font-size:.62rem;font-weight:700}.cfo-global-grid strong{font-size:1.05rem;margin-top:4px}.cfo-global-grid small{margin-top:2px;font-size:.56rem;color:#4d6653}
.cfo-events{border:2px solid var(--gold)}.cfo-events .cfo-band{margin:-2px -2px 0}.cfo-event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#f4eadc}.cfo-event-grid article{background:#fff;padding:8px;border-left:4px solid var(--gold)}.cfo-event-grid time,.cfo-event-grid strong,.cfo-event-grid span{display:block}.cfo-event-grid time{font-size:.58rem;color:#836436}.cfo-event-grid strong{font-size:.78rem;margin:2px 0}.cfo-event-grid span{font-size:.62rem;color:#66747a}
.cfo-rail{border:2px solid var(--blue);align-self:start}.cfo-rail>.cfo-band{margin:-2px -2px 0}.cfo-air-summary{text-align:center;padding:12px;background:#e8f7fb;border-bottom:3px solid var(--blue)}.cfo-air-summary span,.cfo-air-summary strong,.cfo-air-summary em{display:block}.cfo-air-summary span{font-size:.65rem;text-transform:uppercase;font-weight:700}.cfo-air-summary>strong{font-size:2rem;color:var(--navy);line-height:1.05}.cfo-air-summary>div{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;margin:6px auto 0;max-width:190px}.cfo-air-summary>div small,.cfo-air-summary>div b{display:block}.cfo-air-summary>div small{font-size:.54rem;color:#60747b}.cfo-air-summary>div b{font-size:.8rem}.cfo-air-summary em{font-size:.72rem;font-style:normal;font-weight:800;margin-top:4px}.cfo-rail h3{margin:0;background:var(--blue);color:#fff;text-align:center;padding:5px;font:bold .72rem/1.1 Arial,Helvetica,sans-serif}.cfo-radio-list{list-style:none;margin:0;padding:0;counter-reset:radio}.cfo-radio-list li{counter-increment:radio;display:grid;grid-template-columns:24px 1fr auto;gap:5px;align-items:center;padding:6px;border-bottom:1px solid #fff;background:#d8f0f7;font-size:.66rem}.cfo-radio-list li:before{content:counter(radio);display:grid;place-items:center;width:20px;height:20px;color:#fff;background:#139ccc;font-weight:900}.cfo-radio-list strong{font-size:.78rem}.cfo-radio-list small{grid-column:2/4;color:#61757d}.cfo-chart-list>div{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:7px;border-bottom:1px solid #cce5ec;background:#eef9fb}.cfo-chart-list span{font-size:.68rem;font-weight:700}.cfo-chart-list small{font-size:.55rem;color:#68787f}.cfo-chart-list strong{grid-row:1/3;grid-column:2;align-self:center;color:var(--blue);font-size:.9rem}
.cfo-cockpit>footer{padding:8px 12px;background:#f0ebe4;border-top:1px solid #d7cec5;color:#6b615b;font-size:.62rem;text-align:center}
.cfo-cockpit-loading,.cfo-cockpit-error{padding:48px 24px;text-align:center;border:3px solid var(--navy);background:#f5fafb}.cfo-cockpit-loading span{display:inline-block;width:28px;height:28px;border:3px solid #cbd7dc;border-top-color:var(--blue);border-radius:50%;animation:cfo-cockpit-spin .8s linear infinite}.cfo-cockpit-loading strong{display:block;margin-top:10px}.cfo-cockpit-error button{display:block;margin:12px auto 0;border:0;padding:9px 16px;background:var(--blue);color:#fff;font-weight:800}@keyframes cfo-cockpit-spin{to{transform:rotate(360deg)}}
@media(max-width:1050px){.cfo-cockpit-layout{grid-template-columns:1fr}.cfo-rail{display:grid;grid-template-columns:1fr 1fr}.cfo-rail>.cfo-band{grid-column:1/-1}.cfo-air-summary{grid-row:2/5}.cfo-radio-list,.cfo-chart-list{min-width:0}}
@media(max-width:760px){.cfo-cockpit-layout{padding:3px}.cfo-audience-grid{grid-template-columns:1fr 1fr}.cfo-donut-card{grid-row:auto;grid-column:1/-1}.cfo-snep-grid{grid-template-columns:1fr}.cfo-global-grid{grid-template-columns:1fr 1fr}.cfo-event-grid{grid-template-columns:1fr 1fr}.cfo-rail{display:block}.cfo-cockpit-title{margin:4px}.cfo-cockpit-title h2 span{display:block}.cfo-data-table th,.cfo-data-table td{font-size:.64rem}.cfo-mini-body{grid-template-columns:repeat(3,1fr)}.cfo-quality-alert{display:block}.cfo-quality-alert strong{display:block;margin-bottom:3px}}
@media(max-width:480px){.cfo-audience-grid{grid-template-columns:1fr}.cfo-mini-body{grid-template-columns:1fr 1fr}.cfo-mini-body div:last-child{grid-column:1/-1}.cfo-snep-kpis{grid-template-columns:1fr 1fr}.cfo-snep-foot{align-items:flex-start;flex-direction:column}.cfo-event-grid,.cfo-global-grid{grid-template-columns:1fr}.cfo-donut-card{grid-column:auto}}

/* CFO Cockpit 1.5 — plateformes, modèle SNEP prudent et qualité des données. */
.cfo-band.is-red{background:#8e1919}
.cfo-platforms{border:2px solid var(--navy)}.cfo-platforms>.cfo-band{margin:-2px -2px 0}.cfo-platform-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:#ccd9df}.cfo-platform-grid article{background:#f4f8fa;text-align:center;padding:9px 5px}.cfo-platform-grid span,.cfo-platform-grid strong,.cfo-platform-grid small{display:block}.cfo-platform-grid span{font-size:.58rem;font-weight:700;color:#546971}.cfo-platform-grid strong{font-size:1rem;color:var(--navy);margin:3px 0}.cfo-platform-grid small{font-size:.52rem;color:#73838a}.cfo-youtube-trend{display:flex;justify-content:space-between;gap:12px;padding:7px 10px;background:#fff;border-top:1px solid #ccd9df;font-size:.64rem}.cfo-youtube-trend strong{color:var(--navy)}
.cfo-certification{border:2px solid #8e1919}.cfo-certification>.cfo-band{margin:-2px -2px 0}.cfo-model-warning{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;padding:9px 11px;background:#fff4d6;border-bottom:1px solid #d69b16;font-size:.65rem;line-height:1.35}.cfo-model-warning strong{text-transform:uppercase;color:#7a230f}.cfo-cert-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#dbcfc9}.cfo-cert-kpis article{padding:10px 7px;text-align:center;background:#fff8f4}.cfo-cert-kpis span,.cfo-cert-kpis strong,.cfo-cert-kpis small{display:block}.cfo-cert-kpis span{font-size:.59rem;font-weight:700}.cfo-cert-kpis strong{font-size:1.05rem;color:#8e1919;margin:4px 0}.cfo-cert-kpis small{font-size:.52rem;color:#766a64}.cfo-subband.is-red{color:#68130f;background:#f4ded7;border-color:#8e1919}.cfo-table-scroll.is-red{border-color:#8e1919}.cfo-model-table{width:100%;border-collapse:collapse;min-width:760px;margin:0}.cfo-model-table.is-singles{min-width:1050px}.cfo-model-table th,.cfo-model-table td{padding:7px;border-right:1px solid #fff;border-bottom:1px solid #fff;text-align:right;font-size:.66rem;white-space:nowrap}.cfo-model-table thead th{background:#e8eef0;color:#243941;text-transform:uppercase}.cfo-model-table tbody th{text-align:left;background:#f0e4df;color:#5d251b}.cfo-model-table tbody td{background:#f9fbfb}.cfo-quality-strip{display:flex;flex-wrap:wrap;gap:5px;padding:7px;background:#f3eee9}.cfo-quality-strip span{background:#fff;border:1px solid #d8cbc1;padding:4px 7px;font-size:.58rem;font-weight:700}.cfo-quality{border:2px solid var(--blue)}.cfo-quality>.cfo-band{margin:-2px -2px 0}.cfo-ok{color:#087f46;font-weight:800}.cfo-warn{color:#b86a00;font-weight:800}
@media(max-width:760px){.cfo-platform-grid,.cfo-cert-kpis{grid-template-columns:1fr 1fr}.cfo-model-warning{grid-template-columns:1fr}.cfo-youtube-trend{display:block}.cfo-youtube-trend strong{display:block;margin-top:3px}}
@media(max-width:480px){.cfo-platform-grid,.cfo-cert-kpis{grid-template-columns:1fr}}
