:root {
    --analysis-bg: #09080e;
    --analysis-surface: #0f0e15;
    --analysis-surface-2: #14131b;
    --analysis-border: rgba(224, 221, 235, 0.12);
    --analysis-border-strong: rgba(224, 221, 235, 0.20);
    --analysis-text: #eeedf2;
    --analysis-muted: #aaa7b2;
    --analysis-dim: #73707c;
    --analysis-green: #8878b3;
    --analysis-green-bright: #9b8bc8;
    --analysis-green-dim: rgba(136, 120, 179, 0.16);
    --analysis-cyan: #aaa3bc;
    --analysis-amber: #c89a57;
    --analysis-violet: #9b8bc8;
    --analysis-red: #c45f66;
    --analysis-radius: 4px;
    --analysis-sans: Inter, "Segoe UI", Arial, sans-serif;
    --analysis-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
}

* {
    box-sizing: border-box;
}

.analysis-page {
    min-height: 100vh;
    background: var(--analysis-bg);
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    padding: 10px;
}

.analysis-page button,
.analysis-page select {
    font: inherit;
}

.analysis-shell {
    width: min(1880px, 100%);
    margin: 0 auto;
    display: grid;
    gap: 8px;
}

.analysis-header,
.analysis-summary,
.analysis-tabs,
.physics-chain,
.analysis-panel,
.analysis-footer {
    background: var(--analysis-surface);
    border: 1px solid var(--analysis-border);
    border-radius: var(--analysis-radius);
}

.analysis-header {
    min-height: 68px;
    display: grid;
    grid-template-columns: minmax(360px, 1fr) auto auto;
    align-items: stretch;
}

.analysis-title-group {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 11px 16px;
    min-width: 0;
}

.analysis-back-link {
    color: var(--analysis-muted);
    text-decoration: none;
    font: inherit;
    font-size: 0.76rem;
    white-space: nowrap;
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
}

.analysis-back-link:hover {
    color: var(--analysis-green-bright);
}

.analysis-title-group h1,
.analysis-title-group p,
.analysis-panel-header h2,
.analysis-panel-header p,
.physics-chain h2,
.physics-chain p,
.engineering-balance h3,
.numerical-method h3,
.validation-grid h3 {
    margin: 0;
}

.analysis-title-group h1 {
    font-size: 1.05rem;
    font-weight: 650;
    letter-spacing: -0.01em;
}

.analysis-title-group p {
    margin-top: 3px;
    color: var(--analysis-muted);
    font-size: 0.74rem;
}

.analysis-header-state {
    display: grid;
    grid-template-columns: repeat(3, minmax(112px, auto));
    border-left: 1px solid var(--analysis-border);
}

.analysis-header-state > div {
    padding: 10px 14px;
    border-right: 1px solid var(--analysis-border);
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
}

.analysis-header-state span,
.analysis-session-control > span {
    color: var(--analysis-muted);
    font-size: 0.66rem;
}

.analysis-header-state strong {
    font-family: var(--analysis-mono);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--analysis-text);
    white-space: nowrap;
}

.analysis-header-actions {
    padding: 9px 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.analysis-session-control {
    display: grid;
    gap: 3px;
}

.analysis-session-control select,
.compact-select select {
    min-height: 30px;
    color: var(--analysis-text);
    background: #0a0d0f;
    border: 1px solid var(--analysis-border-strong);
    border-radius: 3px;
    padding: 0 28px 0 8px;
    font-family: var(--analysis-mono);
    font-size: 0.71rem;
}

.analysis-button,
.analysis-expand {
    min-height: 31px;
    border: 1px solid var(--analysis-border-strong);
    border-radius: 3px;
    background: #101416;
    color: var(--analysis-text);
    padding: 0 11px;
    cursor: pointer;
    font-size: 0.72rem;
    font-weight: 550;
}

.analysis-button:hover,
.analysis-expand:hover {
    border-color: var(--analysis-green);
    color: var(--analysis-green-bright);
}

.analysis-button--primary {
    border-color: var(--analysis-green);
    background: var(--analysis-green-dim);
    color: var(--analysis-green-bright);
}

.analysis-button.is-active,
.analysis-button[data-state="running"] {
    border-color: var(--analysis-green);
    color: var(--analysis-green-bright);
}

.analysis-button[data-state="stopping"],
.analysis-button[data-state="running"].analysis-button--engine-stop {
    border-color: var(--analysis-red);
    color: #d3898c;
}

.analysis-button:disabled {
    cursor: not-allowed;
    opacity: 0.42;
    border-color: var(--analysis-border);
    color: var(--analysis-dim);
}

.analysis-button--danger-muted:not(:disabled):hover {
    border-color: var(--analysis-red);
    color: #d3898c;
}

.analysis-summary dl {
    margin: 0;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
}

.analysis-summary dl > div {
    min-width: 0;
    padding: 10px 15px;
    border-right: 1px solid var(--analysis-border);
}

.analysis-summary dl > div:last-child {
    border-right: 0;
}

.analysis-summary dt,
.technical-metadata dt,
.technical-table dt,
.engineering-balance dt,
.numerical-method dt {
    color: var(--analysis-muted);
    font-size: 0.68rem;
    font-weight: 500;
}

.analysis-summary dd,
.technical-metadata dd,
.technical-table dd,
.engineering-balance dd,
.numerical-method dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.analysis-summary dd {
    font-size: 0.92rem;
    font-weight: 600;
}

.analysis-tabs {
    min-height: 44px;
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    padding: 0 10px;
}

.analysis-tab-list {
    display: flex;
    overflow-x: auto;
}

.analysis-tab,
.analysis-density-control button {
    position: relative;
    border: 0;
    background: transparent;
    color: var(--analysis-muted);
    cursor: pointer;
}

.analysis-tab {
    padding: 0 13px;
    font-size: 0.75rem;
    white-space: nowrap;
}

.analysis-tab::after {
    content: "";
    position: absolute;
    left: 13px;
    right: 13px;
    bottom: 0;
    height: 2px;
    background: transparent;
}

.analysis-tab:hover,
.analysis-tab.is-active {
    color: var(--analysis-text);
}

.analysis-tab.is-active::after {
    background: var(--analysis-green);
}

.analysis-density-control {
    display: flex;
    align-items: center;
    border-left: 1px solid var(--analysis-border);
    padding-left: 8px;
}

.analysis-density-control button {
    padding: 0 8px;
    font-size: 0.68rem;
}

.analysis-density-control button.is-active {
    color: var(--analysis-green-bright);
}

.physics-chain {
    display: grid;
    grid-template-columns: 280px 1fr;
    min-height: 72px;
}

.physics-chain-heading {
    padding: 12px 15px;
    border-right: 1px solid var(--analysis-border);
}

.physics-chain h2 {
    font-size: 0.82rem;
    font-weight: 600;
}

.physics-chain p {
    margin-top: 5px;
    color: var(--analysis-muted);
    font-size: 0.67rem;
    line-height: 1.4;
}

.physics-chain-flow {
    display: flex;
    align-items: center;
    overflow-x: auto;
    padding: 9px 13px;
    gap: 6px;
}

.physics-chain-step {
    color: var(--analysis-text);
    padding: 5px 2px;
    font-size: 0.7rem;
    white-space: nowrap;
}

.physics-chain-arrow {
    color: var(--analysis-dim);
    font-family: var(--analysis-mono);
}

.analysis-content {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(0, 0.82fr);
    gap: 8px;
    align-items: start;
}

.analysis-section--dyno,
.analysis-section--pv,
.analysis-section--cycle,
.analysis-section--turbo,
.analysis-section--numerics,
.analysis-section--validation {
    grid-column: 1 / -1;
}

.analysis-section[hidden] {
    display: none !important;
}

.analysis-panel {
    overflow: hidden;
}

.analysis-panel-header {
    min-height: 53px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 13px;
    border-bottom: 1px solid var(--analysis-border);
}

.analysis-panel-header h2 {
    font-size: 0.83rem;
    font-weight: 620;
}

.analysis-panel-header p {
    margin-top: 4px;
    color: var(--analysis-muted);
    font-size: 0.67rem;
}

.analysis-panel-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.compact-select {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--analysis-muted);
    font-size: 0.7rem;
}

.compact-select select {
    min-height: 31px;
    padding-right: 20px;
}

.analysis-panel-body {
    padding: 10px;
}

.analysis-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 310px;
    gap: 10px;
}

.analysis-split--wide {
    grid-template-columns: minmax(0, 1fr) 285px;
}

.analysis-split--cycle {
    grid-template-columns: minmax(0, 1fr) 320px;
    align-items: stretch;
}

.chart-frame {
    position: relative;
    min-width: 0;
    background: #090c0e;
    border: 1px solid #20272a;
}

.chart-frame canvas {
    display: block;
    width: 100% !important;
    height: 100% !important;
}

.chart-frame--large {
    height: 420px;
}

.chart-frame--cycle {
    height: 445px;
}

.chart-frame--turbo {
    height: 340px;
}

.chart-frame--residual {
    height: 330px;
}

.chart-empty-state {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: var(--analysis-dim);
    font-size: 0.72rem;
    pointer-events: none;
}

.chart-empty-state[hidden] {
    display: none;
}

.engineering-balance,
.numerical-method {
    border-left: 1px solid var(--analysis-border);
    padding: 4px 2px 4px 13px;
}

.engineering-balance h3,
.numerical-method h3,
.validation-grid h3 {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--analysis-text);
    padding-bottom: 9px;
    border-bottom: 1px solid var(--analysis-border);
}

.engineering-balance dl,
.numerical-method dl,
.technical-table {
    margin: 0;
}

.engineering-balance dl > div,
.numerical-method dl > div,
.technical-table > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    min-height: 37px;
    padding: 8px 0;
    border-bottom: 1px solid #202629;
}

.engineering-balance dd,
.numerical-method dd,
.technical-table dd {
    text-align: right;
    font-size: 0.73rem;
}

.engineering-balance-result {
    border-top: 1px solid var(--analysis-border-strong);
}

.engineering-balance-result dt,
.engineering-balance-result dd {
    color: var(--analysis-green-bright);
}


.engineering-balance--cycle {
    max-height: 445px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.cycle-readout-section + .cycle-readout-section {
    margin-top: 14px;
}

.cycle-readout-section h3 {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--analysis-surface);
}

.cycle-readout-section dl > div {
    min-height: 34px;
    padding: 7px 0;
}

.cycle-readout-section dt {
    max-width: 52%;
}

.cycle-readout-section dd {
    max-width: 48%;
    white-space: nowrap;
}

.cycle-readout-section--last {
    padding-bottom: 4px;
}

.engineering-status,
.validation-statement {
    margin: 12px 0 0;
    padding: 9px 0 0;
    border-top: 1px solid var(--analysis-border);
    color: var(--analysis-muted);
    font-size: 0.69rem;
    line-height: 1.5;
}

.validation-statement.is-valid {
    color: var(--analysis-green-bright);
}

.validation-statement.is-warning {
    color: var(--analysis-amber);
}

.technical-metadata {
    margin: 0;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    border-bottom: 1px solid var(--analysis-border);
}

.technical-metadata > div {
    padding: 8px 12px;
    border-right: 1px solid var(--analysis-border);
}

.technical-metadata > div:last-child {
    border-right: 0;
}

.technical-metadata dd {
    font-size: 0.72rem;
}

.technical-table--two-columns {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    margin-top: 10px;
    border-top: 1px solid var(--analysis-border);
}

.technical-table--two-columns > div {
    display: block;
    padding: 8px 12px;
    border-right: 1px solid var(--analysis-border);
}

.technical-table--two-columns > div:nth-child(4n) {
    border-right: 0;
}

.technical-table--two-columns dd {
    margin-top: 5px;
    text-align: left;
}

.validation-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
}

.validation-grid > section {
    padding: 12px 14px;
    border-right: 1px solid var(--analysis-border);
}

.validation-grid > section:last-child {
    border-right: 0;
}

.analysis-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    color: var(--analysis-dim);
    font-size: 0.67rem;
}

.analysis-footer a {
    color: var(--analysis-green);
    text-decoration: none;
}

.analysis-footer a:hover {
    text-decoration: underline;
}

.analysis-panel.is-expanded {
    position: fixed;
    z-index: 1000;
    inset: 10px;
    background: var(--analysis-surface);
    border-color: var(--analysis-border-strong);
    display: flex;
    flex-direction: column;
}

.analysis-panel.is-expanded .analysis-panel-body {
    flex: 1;
    min-height: 0;
}

.analysis-panel.is-expanded .chart-frame {
    height: calc(100vh - 155px);
}

.analysis-panel.is-expanded .technical-metadata + .analysis-panel-body .chart-frame {
    height: calc(100vh - 205px);
}

.analysis-panel.is-expanded .analysis-split--cycle .chart-frame,
.analysis-panel.is-expanded .analysis-split--cycle .engineering-balance--cycle {
    height: calc(100vh - 105px);
    max-height: none;
}

body.analysis-panel-open {
    overflow: hidden;
}

.analysis-page[data-analysis-mode="presentation"] .expert-only {
    display: none !important;
}

.analysis-page[data-analysis-mode="expert"] .analysis-panel-header p {
    color: #a4adaf;
}

@media (max-width: 1320px) {
    .analysis-header {
        grid-template-columns: 1fr auto;
    }

    .analysis-header-actions {
        grid-column: 1 / -1;
        border-top: 1px solid var(--analysis-border);
        justify-content: flex-end;
    }

    .analysis-content {
        grid-template-columns: 1fr;
    }

    .analysis-section {
        grid-column: 1 !important;
    }

    .technical-metadata {
        grid-template-columns: repeat(3, 1fr);
    }

    .technical-metadata > div:nth-child(3n) {
        border-right: 0;
    }

    .technical-table--two-columns {
        grid-template-columns: repeat(2, 1fr);
    }

    .technical-table--two-columns > div:nth-child(2n) {
        border-right: 0;
    }

    .validation-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .validation-grid > section:nth-child(2n) {
        border-right: 0;
    }
}

@media (max-width: 900px) {
    .analysis-page {
        padding: 5px;
    }

    .analysis-header,
    .physics-chain,
    .analysis-split,
    .analysis-split--wide,
    .analysis-split--cycle {
        grid-template-columns: 1fr;
    }

    .analysis-header-state {
        border-left: 0;
        border-top: 1px solid var(--analysis-border);
    }

    .analysis-summary dl {
        grid-template-columns: repeat(2, 1fr);
    }

    .analysis-summary dl > div {
        border-bottom: 1px solid var(--analysis-border);
    }

    .physics-chain-heading {
        border-right: 0;
        border-bottom: 1px solid var(--analysis-border);
    }

    .engineering-balance,
    .numerical-method {
        border-left: 0;
        border-top: 1px solid var(--analysis-border);
        padding: 12px 2px 2px;
    }

    .engineering-balance--cycle {
        max-height: none;
        overflow: visible;
    }

    .analysis-tabs {
        overflow-x: auto;
    }

    .analysis-density-control {
        display: none;
    }

    .validation-grid {
        grid-template-columns: 1fr;
    }

    .validation-grid > section {
        border-right: 0;
        border-bottom: 1px solid var(--analysis-border);
    }
}

/* ============================================================
   Validation automatique du cycle et du diagramme P-V
   ============================================================ */

.cycle-validation-report {
    border-top: 1px solid var(--analysis-border);
    border-bottom: 1px solid var(--analysis-border);
    background: #0b0e10;
}

.cycle-validation-report-header {
    min-height: 58px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--analysis-border);
}

.cycle-validation-report-header h3,
.cycle-validation-report-header p {
    margin: 0;
}

.cycle-validation-report-header h3 {
    font-size: 0.78rem;
    font-weight: 620;
    color: var(--analysis-text);
}

.cycle-validation-report-header p {
    margin-top: 4px;
    max-width: 860px;
    color: var(--analysis-muted);
    font-size: 0.67rem;
    line-height: 1.45;
}

.cycle-validation-report-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.cycle-validation-overview {
    margin: 0;
    display: grid;
    grid-template-columns: 150px minmax(220px, 0.9fr) minmax(260px, 1.15fr) minmax(240px, 1fr) 180px;
    border-bottom: 1px solid var(--analysis-border);
}

.cycle-validation-overview > div {
    min-width: 0;
    padding: 9px 12px;
    border-right: 1px solid var(--analysis-border);
}

.cycle-validation-overview > div:last-child {
    border-right: 0;
}

.cycle-validation-overview dt {
    color: var(--analysis-muted);
    font-size: 0.65rem;
}

.cycle-validation-overview dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.45;
}

#cycleValidationGlobalStatus {
    font-size: 0.82rem;
    font-weight: 650;
}

.cycle-validation-report[data-validation-status="pass"] #cycleValidationGlobalStatus {
    color: var(--analysis-green-bright);
}

.cycle-validation-report[data-validation-status="warning"] #cycleValidationGlobalStatus {
    color: var(--analysis-amber);
}

.cycle-validation-report[data-validation-status="fail"] #cycleValidationGlobalStatus {
    color: var(--analysis-red);
}

.cycle-validation-report[data-validation-status="unavailable"] #cycleValidationGlobalStatus {
    color: var(--analysis-muted);
}

.cycle-validation-table-wrapper {
    max-height: none;
    overflow-x: auto;
    overflow-y: visible;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.cycle-validation-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.69rem;
}

.cycle-validation-table th,
.cycle-validation-table td {
    padding: 8px 11px;
    border-bottom: 1px solid #202629;
    border-right: 1px solid #202629;
    text-align: left;
    vertical-align: top;
}

.cycle-validation-table th:last-child,
.cycle-validation-table td:last-child {
    border-right: 0;
}

.cycle-validation-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #101416;
    color: var(--analysis-muted);
    font-size: 0.64rem;
    font-weight: 560;
}

.cycle-validation-table th:nth-child(1),
.cycle-validation-table td:nth-child(1) {
    width: 11%;
}

.cycle-validation-table th:nth-child(2),
.cycle-validation-table td:nth-child(2) {
    width: 30%;
}

.cycle-validation-table th:nth-child(3),
.cycle-validation-table td:nth-child(3) {
    width: 12%;
}

.cycle-validation-table th:nth-child(4),
.cycle-validation-table td:nth-child(4),
.cycle-validation-table th:nth-child(5),
.cycle-validation-table td:nth-child(5) {
    width: 23.5%;
}

.cycle-validation-table td:nth-child(1) {
    color: var(--analysis-muted);
}

.cycle-validation-table td:nth-child(3),
.cycle-validation-table td:nth-child(4),
.cycle-validation-table td:nth-child(5) {
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.cycle-validation-table td strong,
.cycle-validation-table td span {
    display: block;
}

.cycle-validation-table td strong {
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    font-size: 0.69rem;
    font-weight: 590;
}

.cycle-validation-table td strong + span {
    margin-top: 4px;
    color: var(--analysis-dim);
    font-family: var(--analysis-sans);
    font-size: 0.63rem;
    line-height: 1.4;
}

.cycle-validation-status {
    color: var(--analysis-muted);
    font-weight: 650;
}

.cycle-validation-table tr[data-test-status="pass"] .cycle-validation-status {
    color: var(--analysis-green-bright);
}

.cycle-validation-table tr[data-test-status="warning"] .cycle-validation-status {
    color: var(--analysis-amber);
}

.cycle-validation-table tr[data-test-status="fail"] .cycle-validation-status {
    color: var(--analysis-red);
}

.cycle-validation-table tr[data-test-status="unavailable"] {
    opacity: 0.72;
}

.cycle-validation-empty-row td {
    height: 72px;
    text-align: center;
    vertical-align: middle;
    color: var(--analysis-dim);
}

.cycle-validation-conclusion {
    margin: 0;
    padding: 10px 14px;
    border-top: 1px solid var(--analysis-border);
    color: var(--analysis-muted);
    font-size: 0.7rem;
    line-height: 1.5;
}

.cycle-validation-report[data-validation-status="pass"] .cycle-validation-conclusion {
    color: var(--analysis-green-bright);
}

.cycle-validation-report[data-validation-status="warning"] .cycle-validation-conclusion {
    color: var(--analysis-amber);
}

.cycle-validation-report[data-validation-status="fail"] .cycle-validation-conclusion {
    color: #d3898c;
}

.analysis-panel.is-expanded .cycle-validation-table-wrapper {
    max-height: none;
    overflow-y: visible;
}

@media (max-width: 1320px) {
    .cycle-validation-overview {
        grid-template-columns: repeat(2, 1fr);
    }

    .cycle-validation-overview > div {
        border-bottom: 1px solid var(--analysis-border);
    }

    .cycle-validation-overview > div:nth-child(2n) {
        border-right: 0;
    }
}

@media (max-width: 900px) {
    .cycle-validation-report-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .cycle-validation-overview {
        grid-template-columns: 1fr;
    }

    .cycle-validation-overview > div {
        border-right: 0;
    }

    .cycle-validation-table {
        min-width: 980px;
    }
}


.reference-run-monitor {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--analysis-border);
}

.reference-run-monitor > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 7px;
}

.reference-run-monitor span {
    color: var(--analysis-dim);
    font-size: 0.67rem;
}

.reference-run-monitor strong {
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.68rem;
    font-weight: 500;
    text-align: right;
}

.reference-run-monitor progress {
    display: block;
    width: 100%;
    height: 5px;
    appearance: none;
    border: 0;
    border-radius: 1px;
    overflow: hidden;
    background: #090c0d;
}

.reference-run-monitor progress::-webkit-progress-bar {
    background: #090c0d;
}

.reference-run-monitor progress::-webkit-progress-value {
    background: var(--analysis-green);
}

.reference-run-monitor progress::-moz-progress-bar {
    background: var(--analysis-green);
}

/* ============================================================
   Campagne de validation multipoint
   ============================================================ */

.multi-point-validation {
    margin-top: 14px;
    border-top: 1px solid var(--analysis-border);
    border-bottom: 1px solid var(--analysis-border);
    background: #0a0d0f;
}

.multi-point-validation-overview {
    margin: 0;
    display: grid;
    grid-template-columns: 170px minmax(320px, 1fr) 210px;
    border-bottom: 1px solid var(--analysis-border);
}

.multi-point-validation-overview > div {
    min-width: 0;
    padding: 9px 12px;
    border-right: 1px solid var(--analysis-border);
}

.multi-point-validation-overview > div:last-child {
    border-right: 0;
}

.multi-point-validation-overview dt {
    color: var(--analysis-muted);
    font-size: 0.65rem;
}

.multi-point-validation-overview dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.45;
}

#multiPointValidationGlobalStatus {
    font-size: 0.82rem;
    font-weight: 650;
}

.multi-point-validation[data-validation-status="pass"] #multiPointValidationGlobalStatus,
.multi-point-validation[data-validation-status="pass"] .cycle-validation-conclusion {
    color: var(--analysis-green-bright);
}

.multi-point-validation[data-validation-status="warning"] #multiPointValidationGlobalStatus,
.multi-point-validation[data-validation-status="warning"] .cycle-validation-conclusion {
    color: var(--analysis-amber);
}

.multi-point-validation[data-validation-status="fail"] #multiPointValidationGlobalStatus,
.multi-point-validation[data-validation-status="fail"] .cycle-validation-conclusion {
    color: var(--analysis-red);
}

.multi-point-validation[data-validation-status="unavailable"] #multiPointValidationGlobalStatus {
    color: var(--analysis-muted);
}

.multi-point-validation-table-wrapper {
    max-height: none;
    overflow-x: auto;
    overflow-y: visible;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.multi-point-validation-table {
    width: 100%;
    min-width: 1540px;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.67rem;
}

.multi-point-validation-table th,
.multi-point-validation-table td {
    padding: 8px 9px;
    border-right: 1px solid #202629;
    border-bottom: 1px solid #202629;
    text-align: left;
    vertical-align: top;
}

.multi-point-validation-table th:last-child,
.multi-point-validation-table td:last-child {
    border-right: 0;
}

.multi-point-validation-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #101416;
    color: var(--analysis-muted);
    font-size: 0.61rem;
    font-weight: 560;
    white-space: nowrap;
}

.multi-point-validation-table th:nth-child(1),
.multi-point-validation-table td:nth-child(1) {
    width: 220px;
}

.multi-point-validation-table th:nth-child(2),
.multi-point-validation-table td:nth-child(2),
.multi-point-validation-table th:nth-child(4),
.multi-point-validation-table td:nth-child(4),
.multi-point-validation-table th:nth-child(6),
.multi-point-validation-table td:nth-child(6) {
    width: 105px;
}

.multi-point-validation-table th:nth-child(3),
.multi-point-validation-table td:nth-child(3) {
    width: 75px;
}

.multi-point-validation-table th:nth-child(5),
.multi-point-validation-table td:nth-child(5) {
    width: 85px;
}

.multi-point-validation-table th:nth-child(7),
.multi-point-validation-table td:nth-child(7),
.multi-point-validation-table th:nth-child(9),
.multi-point-validation-table td:nth-child(9),
.multi-point-validation-table th:nth-child(10),
.multi-point-validation-table td:nth-child(10),
.multi-point-validation-table th:nth-child(12),
.multi-point-validation-table td:nth-child(12) {
    width: 92px;
}

.multi-point-validation-table th:nth-child(8),
.multi-point-validation-table td:nth-child(8),
.multi-point-validation-table th:nth-child(11),
.multi-point-validation-table td:nth-child(11) {
    width: 125px;
}

.multi-point-validation-table td:not(:first-child) {
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.multi-point-validation-table td strong,
.multi-point-validation-table td span {
    display: block;
}

.multi-point-validation-table td strong {
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    font-size: 0.68rem;
    font-weight: 590;
}

.multi-point-validation-table td strong + span {
    margin-top: 4px;
    color: var(--analysis-dim);
    font-family: var(--analysis-sans);
    font-size: 0.61rem;
    line-height: 1.4;
}

.multi-point-validation-table tr[data-point-status="pass"] .cycle-validation-status {
    color: var(--analysis-green-bright);
}

.multi-point-validation-table tr[data-point-status="warning"] .cycle-validation-status {
    color: var(--analysis-amber);
}

.multi-point-validation-table tr[data-point-status="fail"] .cycle-validation-status {
    color: var(--analysis-red);
}

.analysis-panel.is-expanded .multi-point-validation-table-wrapper {
    max-height: none;
    overflow-y: visible;
}

@media (max-width: 900px) {
    .multi-point-validation-overview {
        grid-template-columns: 1fr;
    }

    .multi-point-validation-overview > div {
        border-right: 0;
        border-bottom: 1px solid var(--analysis-border);
    }
}


/* Classement détaillé de la fermeture P-V. */
.pv-closure-grade {
    display: block;
    margin-bottom: 3px;
    font-family: var(--analysis-mono);
    font-size: 0.67rem;
    font-weight: 700;
    line-height: 1.25;
}

.pv-closure-grade + span {
    display: block;
    color: var(--analysis-muted);
    font-family: var(--analysis-mono);
    font-size: 0.63rem;
    line-height: 1.4;
}

.pv-closure-grade[data-pv-closure-status="pass"] {
    color: var(--analysis-green-bright);
}

.pv-closure-grade[data-pv-closure-status="warning"] {
    color: var(--analysis-amber);
}

.pv-closure-grade[data-pv-closure-status="fail"] {
    color: var(--analysis-red);
}

.pv-closure-grade[data-pv-closure-status="unavailable"] {
    color: var(--analysis-muted);
}

/* ============================================================
   Référence versionnée et non-régression
   ============================================================ */

.non-regression-report {
    margin-top: 14px;
    border-top: 1px solid var(--analysis-border);
    border-bottom: 1px solid var(--analysis-border);
    background: #0a0d0f;
}

.non-regression-actions {
    flex-wrap: wrap;
    justify-content: flex-end;
}

.analysis-button--danger:not(:disabled) {
    border-color: rgba(196, 79, 83, 0.48);
    color: #d38b8e;
}

.analysis-button--danger:not(:disabled):hover {
    border-color: rgba(196, 79, 83, 0.82);
    color: #efb0b2;
}

.non-regression-overview {
    margin: 0;
    display: grid;
    grid-template-columns: 150px minmax(340px, 1.25fr) minmax(300px, 1fr) 210px;
    border-bottom: 1px solid var(--analysis-border);
}

.non-regression-overview > div {
    min-width: 0;
    padding: 9px 12px;
    border-right: 1px solid var(--analysis-border);
}

.non-regression-overview > div:last-child {
    border-right: 0;
}

.non-regression-overview dt {
    color: var(--analysis-muted);
    font-size: 0.65rem;
}

.non-regression-overview dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

#nonRegressionGlobalStatus {
    font-size: 0.82rem;
    font-weight: 650;
}

.non-regression-report[data-validation-status="pass"] #nonRegressionGlobalStatus,
.non-regression-report[data-validation-status="pass"] .cycle-validation-conclusion {
    color: var(--analysis-green-bright);
}

.non-regression-report[data-validation-status="warning"] #nonRegressionGlobalStatus,
.non-regression-report[data-validation-status="warning"] .cycle-validation-conclusion {
    color: var(--analysis-amber);
}

.non-regression-report[data-validation-status="fail"] #nonRegressionGlobalStatus,
.non-regression-report[data-validation-status="fail"] .cycle-validation-conclusion {
    color: var(--analysis-red);
}

.non-regression-report[data-validation-status="unavailable"] #nonRegressionGlobalStatus {
    color: var(--analysis-muted);
}

.non-regression-table-wrapper {
    max-height: none;
    overflow-x: auto;
    overflow-y: visible;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.non-regression-table {
    width: 100%;
    min-width: 1320px;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.67rem;
}

.non-regression-table th,
.non-regression-table td {
    padding: 8px 9px;
    border-right: 1px solid #202629;
    border-bottom: 1px solid #202629;
    text-align: left;
    vertical-align: top;
}

.non-regression-table th:last-child,
.non-regression-table td:last-child {
    border-right: 0;
}

.non-regression-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #101416;
    color: var(--analysis-muted);
    font-size: 0.61rem;
    font-weight: 560;
    white-space: nowrap;
}

.non-regression-table th:nth-child(1),
.non-regression-table td:nth-child(1) {
    width: 160px;
}

.non-regression-table th:nth-child(2),
.non-regression-table td:nth-child(2) {
    width: 250px;
}

.non-regression-table th:nth-child(3),
.non-regression-table td:nth-child(3),
.non-regression-table th:nth-child(4),
.non-regression-table td:nth-child(4) {
    width: 120px;
}

.non-regression-table th:nth-child(5),
.non-regression-table td:nth-child(5) {
    width: 175px;
}

.non-regression-table th:nth-child(6),
.non-regression-table td:nth-child(6) {
    width: 250px;
}

.non-regression-table th:nth-child(7),
.non-regression-table td:nth-child(7) {
    width: 105px;
}

.non-regression-table td:not(:first-child):not(:nth-child(2)) {
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.non-regression-table td strong,
.non-regression-table td span {
    display: block;
}

.non-regression-table td strong {
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    font-size: 0.68rem;
    font-weight: 590;
}

.non-regression-table td strong + span {
    margin-top: 4px;
    color: var(--analysis-dim);
    font-family: var(--analysis-sans);
    font-size: 0.61rem;
    line-height: 1.4;
}

.non-regression-table tr[data-test-status="pass"] .cycle-validation-status {
    color: var(--analysis-green-bright);
}

.non-regression-table tr[data-test-status="warning"] .cycle-validation-status {
    color: var(--analysis-amber);
}

.non-regression-table tr[data-test-status="fail"] .cycle-validation-status {
    color: var(--analysis-red);
}

.non-regression-table tr[data-test-status="unavailable"] {
    opacity: 0.72;
}

.analysis-panel.is-expanded .non-regression-table-wrapper {
    max-height: none;
    overflow-y: visible;
}

@media (max-width: 1320px) {
    .non-regression-overview {
        grid-template-columns: repeat(2, 1fr);
    }

    .non-regression-overview > div {
        border-bottom: 1px solid var(--analysis-border);
    }

    .non-regression-overview > div:nth-child(2n) {
        border-right: 0;
    }
}

@media (max-width: 900px) {
    .non-regression-overview {
        grid-template-columns: 1fr;
    }

    .non-regression-overview > div {
        border-right: 0;
    }

    .non-regression-actions {
        justify-content: flex-start;
    }
}


/* ============================================================
   Panneaux techniques repliables
   ============================================================ */

.analysis-disclosure {
    overflow: visible;
}

.analysis-disclosure > summary {
    list-style: none;
}

.analysis-disclosure > summary::-webkit-details-marker {
    display: none;
}

.analysis-disclosure-summary {
    min-height: 62px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 11px 14px;
    cursor: pointer;
    user-select: none;
    border-bottom: 0;
    background: #0d1113;
}

.analysis-disclosure[open] > .analysis-disclosure-summary {
    border-bottom: 1px solid var(--analysis-border);
    background: #101416;
}

.analysis-disclosure-summary:hover {
    background: #111719;
}

.analysis-disclosure-summary > span:first-child {
    min-width: 0;
}

.analysis-disclosure-summary strong,
.analysis-disclosure-summary small {
    display: block;
}

.analysis-disclosure-summary strong {
    color: var(--analysis-text);
    font-size: 0.78rem;
    font-weight: 620;
}

.analysis-disclosure-summary small {
    margin-top: 4px;
    max-width: 920px;
    color: var(--analysis-muted);
    font-size: 0.66rem;
    line-height: 1.45;
}

.analysis-disclosure-summary-meta {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    flex-shrink: 0;
    color: var(--analysis-muted);
    font-family: var(--analysis-mono);
    font-size: 0.66rem;
    white-space: nowrap;
}

.analysis-disclosure-summary-meta::after {
    content: "▾";
    color: var(--analysis-dim);
    font-size: 0.8rem;
    transform: rotate(-90deg);
    transition: transform 120ms ease;
}

.analysis-disclosure[open] > .analysis-disclosure-summary
.analysis-disclosure-summary-meta::after {
    transform: rotate(0deg);
}

.analysis-disclosure-close-label {
    display: none;
}

.analysis-disclosure[open] .analysis-disclosure-open-label {
    display: none;
}

.analysis-disclosure[open] .analysis-disclosure-close-label {
    display: inline;
}

.analysis-disclosure-content {
    min-width: 0;
}

@media (max-width: 900px) {
    .analysis-disclosure-summary {
        align-items: flex-start;
        flex-direction: column;
    }

    .analysis-disclosure-summary-meta {
        width: 100%;
        justify-content: space-between;
    }
}

/* ============================================================
   Tests unitaires des sous-modules
   ============================================================ */

.submodule-unit-tests {
    margin-top: 14px;
    border-top: 1px solid var(--analysis-border);
    border-bottom: 1px solid var(--analysis-border);
    background: #0a0d0f;
}

.submodule-unit-tests[data-validation-status="pass"]
#submoduleUnitTestSummaryBadge,
.submodule-unit-tests[data-validation-status="pass"]
#submoduleUnitTestGlobalStatus,
.submodule-unit-tests[data-validation-status="pass"]
.cycle-validation-conclusion {
    color: var(--analysis-green-bright);
}

.submodule-unit-tests[data-validation-status="fail"]
#submoduleUnitTestSummaryBadge,
.submodule-unit-tests[data-validation-status="fail"]
#submoduleUnitTestGlobalStatus,
.submodule-unit-tests[data-validation-status="fail"]
.cycle-validation-conclusion {
    color: var(--analysis-red);
}

.submodule-unit-tests[data-validation-status="unavailable"]
#submoduleUnitTestSummaryBadge,
.submodule-unit-tests[data-validation-status="unavailable"]
#submoduleUnitTestGlobalStatus {
    color: var(--analysis-muted);
}

.submodule-unit-test-overview {
    margin: 0;
    display: grid;
    grid-template-columns: 160px minmax(340px, 1fr) 210px;
    border-bottom: 1px solid var(--analysis-border);
}

.submodule-unit-test-overview > div {
    min-width: 0;
    padding: 9px 12px;
    border-right: 1px solid var(--analysis-border);
}

.submodule-unit-test-overview > div:last-child {
    border-right: 0;
}

.submodule-unit-test-overview dt {
    color: var(--analysis-muted);
    font-size: 0.65rem;
}

.submodule-unit-test-overview dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.45;
}

#submoduleUnitTestGlobalStatus {
    font-size: 0.82rem;
    font-weight: 650;
}

.submodule-unit-test-table-wrapper {
    max-height: none;
    overflow-x: auto;
    overflow-y: visible;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.submodule-unit-test-table {
    width: 100%;
    min-width: 980px;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.69rem;
}

.submodule-unit-test-table th,
.submodule-unit-test-table td {
    padding: 8px 11px;
    border-right: 1px solid #202629;
    border-bottom: 1px solid #202629;
    text-align: left;
    vertical-align: top;
}

.submodule-unit-test-table th:last-child,
.submodule-unit-test-table td:last-child {
    border-right: 0;
}

.submodule-unit-test-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #101416;
    color: var(--analysis-muted);
    font-size: 0.64rem;
    font-weight: 560;
}

.submodule-unit-test-table th:nth-child(1),
.submodule-unit-test-table td:nth-child(1) {
    width: 14%;
}

.submodule-unit-test-table th:nth-child(2),
.submodule-unit-test-table td:nth-child(2) {
    width: 28%;
}

.submodule-unit-test-table th:nth-child(3),
.submodule-unit-test-table td:nth-child(3) {
    width: 11%;
}

.submodule-unit-test-table th:nth-child(4),
.submodule-unit-test-table td:nth-child(4) {
    width: 20%;
}

.submodule-unit-test-table th:nth-child(5),
.submodule-unit-test-table td:nth-child(5) {
    width: 27%;
}

.submodule-unit-test-table td:nth-child(1) {
    color: var(--analysis-muted);
}

.submodule-unit-test-table td:nth-child(3),
.submodule-unit-test-table td:nth-child(4),
.submodule-unit-test-table td:nth-child(5) {
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.submodule-unit-test-table td strong,
.submodule-unit-test-table td span {
    display: block;
}

.submodule-unit-test-table td strong {
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    font-size: 0.69rem;
    font-weight: 590;
}

.submodule-unit-test-table td strong + span {
    margin-top: 4px;
    color: var(--analysis-dim);
    font-family: var(--analysis-sans);
    font-size: 0.63rem;
    line-height: 1.4;
}

.submodule-unit-test-table tr[data-test-status="pass"]
.cycle-validation-status {
    color: var(--analysis-green-bright);
}

.submodule-unit-test-table tr[data-test-status="fail"]
.cycle-validation-status {
    color: var(--analysis-red);
}

.analysis-panel.is-expanded .submodule-unit-test-table-wrapper {
    max-height: none;
    overflow-y: visible;
}

@media (max-width: 900px) {
    .submodule-unit-test-overview {
        grid-template-columns: 1fr;
    }

    .submodule-unit-test-overview > div {
        border-right: 0;
        border-bottom: 1px solid var(--analysis-border);
    }
}


/* ============================================================
   Campagne transitoire automatique
   ============================================================ */

.transient-validation {
    margin-top: 14px;
    border-top: 1px solid var(--analysis-border);
    border-bottom: 1px solid var(--analysis-border);
    background: #0a0d0f;
}

.transient-validation[data-validation-status="pass"]
#transientValidationSummaryBadge,
.transient-validation[data-validation-status="pass"]
#transientValidationGlobalStatus,
.transient-validation[data-validation-status="pass"]
.cycle-validation-conclusion {
    color: var(--analysis-green-bright);
}

.transient-validation[data-validation-status="warning"]
#transientValidationSummaryBadge,
.transient-validation[data-validation-status="warning"]
#transientValidationGlobalStatus,
.transient-validation[data-validation-status="warning"]
.cycle-validation-conclusion {
    color: var(--analysis-amber);
}

.transient-validation[data-validation-status="fail"]
#transientValidationSummaryBadge,
.transient-validation[data-validation-status="fail"]
#transientValidationGlobalStatus,
.transient-validation[data-validation-status="fail"]
.cycle-validation-conclusion {
    color: var(--analysis-red);
}

.transient-validation[data-validation-status="unavailable"]
#transientValidationSummaryBadge,
.transient-validation[data-validation-status="unavailable"]
#transientValidationGlobalStatus {
    color: var(--analysis-muted);
}

.transient-validation-overview {
    margin: 0;
    display: grid;
    grid-template-columns: 160px minmax(340px, 1fr) 210px;
    border-bottom: 1px solid var(--analysis-border);
}

.transient-validation-overview > div {
    min-width: 0;
    padding: 9px 12px;
    border-right: 1px solid var(--analysis-border);
}

.transient-validation-overview > div:last-child {
    border-right: 0;
}

.transient-validation-overview dt {
    color: var(--analysis-muted);
    font-size: 0.65rem;
}

.transient-validation-overview dd {
    margin: 5px 0 0;
    color: var(--analysis-text);
    font-family: var(--analysis-mono);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.45;
}

#transientValidationGlobalStatus {
    font-size: 0.82rem;
    font-weight: 650;
}

.transient-validation-table-wrapper {
    max-height: none;
    overflow-x: auto;
    overflow-y: visible;
    scrollbar-width: thin;
    scrollbar-color: var(--analysis-border-strong) transparent;
}

.transient-validation-table {
    width: 100%;
    min-width: 1060px;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.69rem;
}

.transient-validation-table th,
.transient-validation-table td {
    padding: 8px 11px;
    border-right: 1px solid #202629;
    border-bottom: 1px solid #202629;
    text-align: left;
    vertical-align: top;
}

.transient-validation-table th:last-child,
.transient-validation-table td:last-child {
    border-right: 0;
}

.transient-validation-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #101416;
    color: var(--analysis-muted);
    font-size: 0.64rem;
    font-weight: 560;
}

.transient-validation-table th:nth-child(1),
.transient-validation-table td:nth-child(1) {
    width: 22%;
}

.transient-validation-table th:nth-child(2),
.transient-validation-table td:nth-child(2) {
    width: 27%;
}

.transient-validation-table th:nth-child(3),
.transient-validation-table td:nth-child(3) {
    width: 16%;
}

.transient-validation-table th:nth-child(4),
.transient-validation-table td:nth-child(4) {
    width: 25%;
}

.transient-validation-table th:nth-child(5),
.transient-validation-table td:nth-child(5) {
    width: 10%;
}

.transient-validation-table td:nth-child(3),
.transient-validation-table td:nth-child(4),
.transient-validation-table td:nth-child(5) {
    font-family: var(--analysis-mono);
    font-variant-numeric: tabular-nums;
}

.transient-validation-table td strong,
.transient-validation-table td span {
    display: block;
}

.transient-validation-table td strong {
    color: var(--analysis-text);
    font-family: var(--analysis-sans);
    font-size: 0.69rem;
    font-weight: 590;
}

.transient-validation-table td strong + span {
    margin-top: 4px;
    color: var(--analysis-dim);
    font-family: var(--analysis-sans);
    font-size: 0.63rem;
    line-height: 1.4;
}

.transient-validation-table tr[data-test-status="pass"]
.cycle-validation-status {
    color: var(--analysis-green-bright);
}

.transient-validation-table tr[data-test-status="warning"]
.cycle-validation-status {
    color: var(--analysis-amber);
}

.transient-validation-table tr[data-test-status="fail"]
.cycle-validation-status {
    color: var(--analysis-red);
}

.transient-validation-table tr[data-test-status="unavailable"] {
    color: var(--analysis-muted);
}

.analysis-panel.is-expanded .transient-validation-table-wrapper {
    max-height: none;
    overflow-y: visible;
}

@media (max-width: 900px) {
    .transient-validation-overview {
        grid-template-columns: 1fr;
    }

    .transient-validation-overview > div {
        border-right: 0;
        border-bottom: 1px solid var(--analysis-border);
    }
}
