/* ── Variables ─────────────────────────────────────────────────── */
:root {
    --navy:      #2d4a1e;
    --blue:      #2563eb;
    --green:     #059669;
    --red:       #dc2626;
    --bg:        #f1f5f9;
    --surface:   #ffffff;
    --border:    #e2e8f0;
    --text:      #0f172a;
    --muted:     #64748b;
    --r:         6px;

    /* Palette des rapports — seules ces 2 teintes varient selon le préréglage
       choisi dans Réglages ; le titre principal (noir/blanc) et les cases à
       compléter restent fixes quel que soit le préréglage. Ne dépend pas du
       thème clair/sombre : les rapports imprimables gardent leur rendu papier. */
    --pal-dark:  #7030a0;
    --pal-light: #ede9fe;

    /* Cases à compléter — fixe, non lié à la palette ni au préréglage choisi
       dans Réglages : un bleu pâle unique, identique sur tous les rapports. */
    --pal-input:       #eff6ff;
    --pal-input-focus: #dbeafe;
}

/* Thème sombre — ne s'applique qu'au "chrome" de l'app (listes, formulaires,
   pages latérales) ; les rapports imprimables (.rp-table, .et-table, etc.)
   utilisent des couleurs fixes et gardent volontairement leur rendu papier. */
:root[data-theme="dark"] {
    --bg:      #101a14;
    --surface: #17231b;
    --border:  #2a3a2f;
    --text:    #e6efe9;
    --muted:   #92a89b;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
    font-size: 13px;
    background: var(--bg);
    color: var(--text);
    height: 100vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    -webkit-font-smoothing: antialiased;
}

/* ── Verrou d'accès (racine metromat.online) ─────────────────────── */
.access-gate {
    position: fixed; inset: 0; z-index: 99999;
    background: var(--navy);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
}
.access-gate-box {
    background: #fff; border-radius: 12px; padding: 40px 36px;
    width: 100%; max-width: 360px; text-align: center;
    box-shadow: 0 20px 60px rgba(0,0,0,.35);
}
.access-gate-logo { height: 48px; margin-bottom: 16px; }
.access-gate-box h1 { font-size: 18px; margin-bottom: 8px; color: var(--text); }
.access-gate-box p { font-size: 13px; color: var(--muted); margin-bottom: 20px; }
.access-gate-box form { display: flex; flex-direction: column; gap: 14px; text-align: left; }
.access-gate-box label {
    display: flex; flex-direction: column; gap: 6px;
    font-size: 12px; font-weight: 600; color: var(--muted);
    text-transform: uppercase; letter-spacing: .4px;
}
.access-gate-box input {
    padding: 9px 12px; border: 1px solid var(--border); border-radius: 6px;
    font-size: 14px; font-family: inherit;
}
.access-gate-error { color: var(--red); font-size: 12px; min-height: 16px; margin: 0 !important; }
.access-gate-box button { margin-top: 6px; padding: 10px; }

/* ── Layout latéral ────────────────────────────────────────────── */
.app-layout {
    display: flex;
    flex: 1;
    overflow: hidden;
}

.app-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* ── Sidebar ────────────────────────────────────────────────────── */
.sidebar {
    width: 48px;
    flex-shrink: 0;
    background: #1a2e12;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: 12px;
    gap: 4px;
    border-right: 1px solid rgba(255,255,255,.08);
}

.sb-btn {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: rgba(255,255,255,.45);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s, color .15s;
    position: relative;
}
.sb-btn svg { width: 18px; height: 18px; }
.sb-btn:hover { background: rgba(255,255,255,.1); color: #fff; }
.sb-btn.active { background: var(--blue); color: #fff; }
.sb-btn::after {
    content: attr(title);
    position: absolute;
    left: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
    background: #1a2e12;
    color: #fff;
    font-size: 11px;
    padding: 4px 8px;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity .15s;
    z-index: 100;
    border: 1px solid rgba(255,255,255,.15);
}
.sb-btn:hover::after { opacity: 1; }
.sb-btn-locked { opacity: .35; }

/* ── Utilisateur actif (provisoire) + thème ──────────────────────── */
.header-right { display: flex; align-items: center; gap: 18px; }
.theme-toggle-btn {
    width: 32px; height: 32px;
    border-radius: 8px;
    border: 1px solid rgba(255,255,255,.2);
    background: rgba(255,255,255,.08);
    color: #fff;
    font-size: 15px;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: background .15s;
}
.theme-toggle-btn:hover { background: rgba(255,255,255,.18); }
.active-user-wrap { display: flex; align-items: center; gap: 8px; }
.active-user-wrap label { font-size: 11px; color: rgba(255,255,255,.55); text-transform: uppercase; letter-spacing: .5px; }
.active-user-wrap select {
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.2);
    color: #fff;
    font-size: 13px;
    padding: 6px 10px;
    border-radius: 6px;
    max-width: 260px;
}
.active-user-wrap select option { color: #000; }

/* ── Pages latérales ────────────────────────────────────────────── */
.sb-page {
    position: fixed;
    top: 52px;
    left: 48px;
    right: 0;
    bottom: 0;
    background: var(--bg);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    z-index: 50;
}
.sb-page.hidden { display: none; }

.sb-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 28px 16px;
    border-bottom: 1px solid var(--border);
    background: var(--surface);
    flex-shrink: 0;
}
.sb-page-title {
    font-size: 20px;
    font-weight: 700;
    color: var(--text);
}
.sb-page-body {
    flex: 1;
    overflow-y: auto;
    padding: 24px 28px;
}

/* ── Aide en ligne ───────────────────────────────────────────────── */
.aide-topics {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--border);
}
.aide-topic-btn {
    padding: 8px 14px;
    border: 1px solid var(--border);
    border-radius: var(--r);
    background: var(--surface);
    color: var(--text);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
}
.aide-topic-btn:hover  { background: #eef2f7; }
.aide-topic-btn.active { background: var(--navy); border-color: var(--navy); color: #fff; }
.aide-content h2 {
    font-size: 18px;
    font-weight: 700;
    color: var(--navy);
    margin: 0 0 14px;
}
.aide-content h3 {
    font-size: 14px;
    font-weight: 700;
    color: var(--navy);
    margin: 20px 0 8px;
}
.aide-content h3:first-of-type { margin-top: 0; }
.aide-content p, .aide-content li { font-size: 13px; line-height: 1.6; color: var(--text); }
.aide-content ul, .aide-content ol { margin: 0 0 10px; padding-left: 22px; }
.aide-content li { margin-bottom: 4px; }
.aide-empty { color: var(--muted); font-style: italic; }

/* ── Utilisateurs ────────────────────────────────────────────────── */
.usr-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    margin-top: 8px;
}
.usr-table th {
    background: var(--bg);
    padding: 8px 12px;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--muted);
    border-bottom: 2px solid var(--border);
}
.usr-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
    text-align: center;
}
.usr-table tr:hover td { background: #f8fafc; }
#doc-registry-table th { text-align: left; }
/* .et-inp est réutilisé ici (Références documentaires) sans couleur de texte
   propre — en thème sombre le texte restait noir sur fond sombre. Scopé à
   cette page pour ne pas affecter le rendu papier des rapports étalons qui
   partagent la même classe. */
#pageDocuments .et-inp { color: var(--text); }

.usr-role-badge {
    background: #ede9fe;
    color: #5b21b6;
    padding: 2px 8px;
    border-radius: 99px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}
.usr-actions { display: flex; gap: 6px; }
.usr-btn-edit, .usr-btn-del { padding: 3px 8px; font-size: 12px; }

.usr-form-wrap {
    background: rgba(0,0,0,.3);
    position: fixed;
    inset: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
}
.usr-form-wrap.hidden { display: none; }
.usr-form {
    background: var(--surface);
    border-radius: 10px;
    padding: 28px 32px;
    width: 680px;
    max-width: 95vw;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
}
.usr-form-title { font-size: 16px; font-weight: 700; margin-bottom: 20px; }
.usr-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 20px;
    margin-bottom: 20px;
}
.usr-form-grid label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 12px;
    font-weight: 600;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .4px;
}
.usr-inp {
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    font-size: 13px;
    font-family: inherit;
    color: var(--text);
    background: var(--bg);
}
.usr-inp:focus { outline: none; border-color: var(--blue); }
.usr-role-fixed { background: var(--border); color: var(--muted); font-style: italic; }
.usr-form-actions { display: flex; gap: 10px; justify-content: flex-end; }

/* ── Autorisations ───────────────────────────────────────────────── */
.usr-perm-title { font-size: 16px; font-weight: 700; margin: 28px 0 6px; }
.usr-perm-hint  { font-size: 12px; color: var(--muted); margin-bottom: 12px; }
.usr-perm-table th, .usr-perm-table td { text-align: center; }
.usr-perm-table th:first-child, .usr-perm-table td:first-child,
.usr-perm-table th:nth-child(2), .usr-perm-table td:nth-child(2) { text-align: left; }
.usr-perm-table input[type="checkbox"] { width: 16px; height: 16px; cursor: pointer; }
.usr-perm-table input[type="checkbox"]:disabled { cursor: not-allowed; opacity: .5; }

/* ── Réglages ────────────────────────────────────────────────────── */
.rg-locked-hint {
    background: #fef3c7; color: #92400e; border: 1px solid #fde68a;
    border-radius: var(--r); padding: 8px 12px; font-size: 12px; margin-bottom: 18px;
}
.rg-section { margin-bottom: 32px; padding-bottom: 28px; border-bottom: 1px solid var(--border); }
.rg-section:last-child { border-bottom: none; }
.rg-section-title { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.rg-section-hint { font-size: 12px; color: var(--muted); margin-bottom: 14px; }
.rg-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 20px;
}
.rg-grid label {
    display: flex; flex-direction: column; gap: 5px;
    font-size: 12px; font-weight: 600; color: var(--muted);
    text-transform: uppercase; letter-spacing: .4px;
}
.rg-span2 { grid-column: 1 / -1; }
.rg-logo-row { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.rg-logo-preview { height: 48px; max-width: 140px; object-fit: contain; border: 1px solid var(--border); border-radius: 4px; padding: 4px; background: #fff; }
.rg-toggle-row { display: flex; align-items: center; gap: 10px; font-size: 13px; cursor: pointer; }
.rg-toggle-row input { width: 16px; height: 16px; cursor: pointer; }
.rg-backup-row { display: flex; flex-wrap: wrap; gap: 10px; }
.rg-palette-row { display: flex; flex-wrap: wrap; gap: 10px; }
.rg-pal-swatch {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    background: var(--surface); border: 2px solid var(--border); border-radius: 8px;
    padding: 8px 12px; cursor: pointer; font: inherit; font-size: 12px; color: var(--text);
}
.rg-pal-swatch:disabled { cursor: not-allowed; opacity: .6; }
.rg-pal-swatch.active { border-color: var(--blue); }
.rg-pal-swatch-colors { display: flex; width: 44px; height: 24px; border-radius: 4px; overflow: hidden; border: 1px solid #bbb; }
.rg-pal-swatch-colors span { flex: 1; }
.rg-seuil-swatch {
    display: inline-block; width: 12px; height: 12px;
    border: 1px solid #bbb; border-radius: 2px; vertical-align: middle;
}

/* ── Recherche ───────────────────────────────────────────────────── */
.srch-mode-tabs { display: flex; gap: 8px; margin-bottom: 18px; border-bottom: 1px solid var(--border); }
.srch-mode-tab {
    padding: 8px 16px; border: none; background: transparent; font-size: 13px;
    font-weight: 600; color: var(--muted); cursor: pointer;
    border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.srch-mode-tab:hover { color: var(--text); }
.srch-mode-tab.active { color: var(--blue); border-bottom-color: var(--blue); }
.srch-ctrl-filters {
    display: flex; flex-wrap: wrap; align-items: end; gap: 14px;
    background: var(--surface); border: 1px solid var(--border); border-radius: 8px;
    padding: 12px 14px; margin-bottom: 20px;
}
.srch-ctrl-filters label {
    display: flex; flex-direction: column; gap: 5px;
    font-size: 12px; font-weight: 600; color: var(--muted);
    text-transform: uppercase; letter-spacing: .4px;
}
.srch-ctrl-filters input, .srch-ctrl-filters select {
    padding: 7px 10px; border: 1px solid var(--border); border-radius: 6px;
    font-size: 13px; font-family: inherit; color: var(--text); background: var(--bg);
}
.srch-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 8px 14px;
    margin-bottom: 20px;
}
.srch-icon { width: 18px; height: 18px; color: var(--muted); flex-shrink: 0; }
.srch-input {
    flex: 1;
    border: none;
    background: transparent;
    font-size: 14px;
    font-family: inherit;
    color: var(--text);
    outline: none;
}
.srch-hint  { color: var(--muted); margin-top: 24px; text-align: center; }
.srch-count { color: var(--muted); font-size: 12px; margin-top: 8px; }
.srch-results .usr-table { margin-top: 0; }
.srch-result-row { cursor: pointer; }
.srch-result-row:hover td { background: #eef2f7; }
@keyframes eqRowFlash {
    0%, 100% { background: transparent; }
    20%, 60% { background: #fef08a; }
}
.eq-row-flash td { animation: eqRowFlash 2s ease-in-out; }

/* ── Sidebar séparateur ─────────────────────────────────────────── */
.sb-sep { width: 28px; height: 1px; background: rgba(255,255,255,.12); margin: 6px 0; }

/* ── Page Accueil ───────────────────────────────────────────────── */
.home-kpi-strip {
    background: var(--navy);
    color: #fff;
    height: 48px;
    padding: 0 28px;
    display: flex;
    align-items: center;
    gap: 0;
    flex-shrink: 0;
}
.home-kpi-date {
    font-size: 11px;
    color: rgba(255,255,255,.4);
    letter-spacing: .3px;
    margin-right: 24px;
    white-space: nowrap;
    flex-shrink: 0;
}
.home-kpi-item {
    display: flex;
    align-items: baseline;
    gap: 5px;
    padding: 0 20px;
    border-right: 1px solid rgba(255,255,255,.1);
}
.home-kpi-item:last-child { border-right: none; }
.home-kpi-n {
    font-size: 20px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    line-height: 1;
}
.home-kpi-lbl {
    font-size: 10px;
    color: rgba(255,255,255,.45);
    text-transform: uppercase;
    letter-spacing: .3px;
}
.home-kpi-item.kpi-s-red    .home-kpi-n { color: #f87171; }
.home-kpi-item.kpi-s-orange .home-kpi-n { color: #fb923c; }

.home-body { padding: 20px 28px; overflow-y: auto; flex: 1; }

.home-section-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.home-alert-badge {
    background: #dc2626;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 99px;
}

.home-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 10px;
    margin-bottom: 24px;
}
.home-card {
    background: var(--pal-dark);
    border: 1px solid var(--pal-dark);
    border-radius: 8px;
    padding: 14px 12px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 600;
    color: #fff;
    text-align: center;
    transition: box-shadow .15s, border-color .15s, transform .12s;
}
.home-card svg { width: 22px; height: 22px; stroke: #fff; }
.home-card:hover { border-color: var(--pal-dark); box-shadow: 0 4px 14px rgba(0,0,0,.35); transform: translateY(-2px); }

.home-alerts { margin-bottom: 24px; }

/* ── Compteurs par catégorie ─────────────────────────────────────── */
.home-cat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 14px;
    margin-bottom: 32px;
}
.home-cat-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 16px 18px;
    box-shadow: 0 1px 4px rgba(0,0,0,.05);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.home-cat-name  { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; }
.home-cat-total { font-size: 32px; font-weight: 800; color: var(--text); line-height: 1.1; }
.home-cat-stats { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.hcs {
    font-size: 11px; font-weight: 600;
    padding: 2px 7px; border-radius: 99px;
}
.hcs-green  { background: #dcfce7; color: #166534; }
.hcs-red    { background: #fee2e2; color: #991b1b; }
.hcs-blue   { background: #dbeafe; color: #1e40af; }
.hcs-orange { background: #fff7ed; color: #c2410c; }

/* ── Header ────────────────────────────────────────────────────── */
header {
    background: var(--navy);
    color: #fff;
    height: 52px;
    padding: 0 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-shrink: 0;
    user-select: none;
}

.brand          { display: flex; align-items: center; gap: 14px; }
.brand-logo     { height: 40px; width: auto; display: block; flex-shrink: 0; }
.brand-sub      { font-size: 11px; color: rgba(255,255,255,.55); text-transform: uppercase; letter-spacing: .5px; }
.header-msg     { display: flex; align-items: center; gap: 8px; font-size: 11px; color: rgba(255,255,255,.55); }


.status-dot {
    width: 10px; height: 10px;
    border-radius: 50%;
    background: rgba(255,255,255,.2);
    flex-shrink: 0;
    transition: background .3s;
}
.status-dot.connected { background: #4ade80; }
.status-dot.error     { background: #f87171; }

/* ── Avertissement navigateur ───────────────────────────────────── */
.serial-warning {
    background: #fef3c7;
    border-bottom: 1px solid #fde68a;
    padding: 6px 16px;
    font-size: 12px;
    color: #92400e;
    text-align: center;
    flex-shrink: 0;
}

/* ── Liste compteurs secondaires ────────────────────────────────── */
.pc-eq-panel {
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    padding: 10px 16px 8px;
}
.pc-eq-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 8px;
}
.pc-eq-title {
    font-weight: 700;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--navy);
}
.pc-eq-selected-badge {
    font-size: 12px;
    color: var(--blue);
    font-weight: 600;
}
.pc-eq-scroll {
    overflow-x: auto;
    max-height: 115px;
    overflow-y: auto;
    border: 1px solid var(--border);
    border-radius: 6px;
}
.pc-eq-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.pc-eq-table th {
    background: var(--navy);
    color: #fff;
    padding: 6px 10px;
    text-align: center;
    position: sticky;
    top: 0;
    white-space: nowrap;
}
.pc-eq-table td {
    padding: 5px 10px;
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
    text-align: center;
}
.pc-eq-row:last-child td { border-bottom: none; }
.pc-eq-row:hover td { background: #f0f4ff; }
.pc-eq-row.pc-eq-active td { background: #dbeafe; }
.pc-select-btn {
    font-size: 11px;
    padding: 3px 10px;
    background: var(--navy);
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}
.pc-select-btn:hover { opacity: .85; }

/* ── Modal débit raccordement ───────────────────────────────────── */
.pc-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 200;
}
.pc-modal-overlay.hidden { display: none; }
.pc-modal {
    background: #fff;
    border-radius: 12px;
    padding: 32px 40px;
    text-align: center;
    box-shadow: 0 8px 40px rgba(0,0,0,.2);
    min-width: 320px;
}
.pc-modal-title {
    font-size: 17px;
    font-weight: 700;
    color: var(--navy);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.pc-modal-sub {
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 24px;
}
.pc-modal-btns {
    display: flex;
    gap: 16px;
    justify-content: center;
    margin-bottom: 16px;
}
.pc-modal-btn {
    padding: 12px 32px;
    font-size: 15px;
    font-weight: 700;
    border: 2px solid var(--navy);
    border-radius: 8px;
    background: var(--navy);
    color: #fff;
    cursor: pointer;
    transition: opacity .15s;
}
.pc-modal-btn:hover { opacity: .8; }
.pc-modal-cancel {
    background: none;
    border: none;
    color: var(--muted);
    font-size: 12px;
    cursor: pointer;
    text-decoration: underline;
}

/* ── Split layout RS232 / Rapport ───────────────────────────────── */
.pc-split {
    display: flex;
    flex: 1;
    overflow: hidden;
    min-height: 0;
}
.pc-left {
    flex: 0 0 50%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 220px;
}
.pc-resizer {
    width: 6px;
    flex-shrink: 0;
    cursor: col-resize;
    background: var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s;
    position: relative;
}
.pc-resizer:hover, .pc-resizer.dragging { background: #7030a0; }
.pc-resizer-grip {
    width: 2px;
    height: 32px;
    border-left: 1px solid #bbb;
    border-right: 1px solid #bbb;
    pointer-events: none;
}
.pc-resizer.dragging .pc-resizer-grip { border-color: #fff; }
.pc-right {
    flex: 1;
    overflow-y: auto;
    background: #fafafa;
    padding: 12px 16px 24px;
}

/* ── Split layout Raccordement Pompe (même structure que pc-split) ── */
.pm-split { display: flex; flex: 1; overflow: hidden; min-height: 0; }
.pm-left  { flex: 0 0 50%; display: flex; flex-direction: column; overflow: hidden; min-width: 220px; }
.pm-resizer {
    width: 6px; flex-shrink: 0; cursor: col-resize; background: var(--border);
    display: flex; align-items: center; justify-content: center; transition: background .15s;
}
.pm-resizer:hover, .pm-resizer.dragging { background: #2e7d32; }
.pm-resizer-grip { width: 2px; height: 32px; border-left: 1px solid #bbb; border-right: 1px solid #bbb; pointer-events: none; }
.pm-resizer.dragging .pm-resizer-grip { border-color: #fff; }
.pm-right { flex: 1; overflow-y: auto; background: #fafafa; padding: 12px 16px 24px; }

/* ── Split layout Raccordement Pompes Opérateur (bleu) ──────────── */
.pmo-split { display: flex; flex: 1; overflow: hidden; min-height: 0; }
.pmo-left  { flex: 0 0 50%; display: flex; flex-direction: column; overflow: hidden; min-width: 220px; }
.pmo-resizer {
    width: 6px; flex-shrink: 0; cursor: col-resize; background: var(--border);
    display: flex; align-items: center; justify-content: center; transition: background .15s;
}
.pmo-resizer:hover, .pmo-resizer.dragging { background: #1d4ed8; }
.pmo-resizer-grip { width: 2px; height: 32px; border-left: 1px solid #bbb; border-right: 1px solid #bbb; pointer-events: none; }
.pmo-resizer.dragging .pmo-resizer-grip { border-color: #fff; }
.pmo-right { flex: 1; overflow-y: auto; background: #fafafa; padding: 12px 16px 24px; }

/* ── Barre débit Pompe Opérateur (bleu) ─────────────────────────── */
.debit-bar-op { background: #eff6ff !important; border-top-color: #93c5fd !important; }
.debit-bar-op .debit-value { color: #1d4ed8 !important; }

/* ── Rapport raccordement pompe ─────────────────────────────────────── */
:root {
    --rp-green: var(--pal-dark); --rp-green-lt: var(--pal-light); --rp-green-md: var(--pal-dark); --rp-cream: #fffde7;
    --rop-blue:  var(--pal-dark); --rop-blue-lt:  var(--pal-light); --rop-blue-md:  var(--pal-dark);
}
.rp-wrap { max-width: 840px; margin: 0 auto; font-size: 11px; }
.rp-title {
    text-align: center; font-size: 14px; font-weight: 700;
    border: 2px solid #000; padding: 12px; margin-bottom: 8px; background: #fff;
}
.rp-hdr-table { width: 100%; border-collapse: collapse; margin-bottom: 6px; }
.rp-hdr-table th, .rp-hdr-table td { border: 1px solid #bbb; padding: 4px 6px; font-size: 11px; }
.rp-lbl { background: var(--rp-green); color: #fff; font-weight: 600; text-align: center; white-space: nowrap; }
.rp-section {
    background: var(--rp-green); color: #fff; font-weight: 700; text-align: center;
    padding: 5px; font-size: 11px; letter-spacing: .04em; margin-bottom: 0;
}
.rp-table { width: 100%; border-collapse: collapse; margin-bottom: 8px; font-size: 11px; }
.rp-table th { background: var(--rp-green-lt); color: #000; font-weight: 700; border: 1px solid #bbb; padding: 4px 6px; text-align: center; }
.rp-table td { border: 1px solid #bbb; padding: 3px 5px; text-align: center; background: #fff; }
.rp-lbl-sm { background: var(--rp-green-md) !important; color: #fff !important; font-weight: 600; text-align: left !important; padding-left: 8px !important; }
.rp-sub-lbl { background: var(--rp-green-lt); color: #000; font-weight: 600; text-align: left !important; padding-left: 8px !important; }
.rp-sep-row { height: 4px !important; background: var(--rp-green) !important; padding: 0 !important; border: none !important; }
.rp-nota { font-size: 7px; font-style: italic; font-weight: 700; color: #c25e00; padding: 3px 8px; line-height: 1.2; text-align: left !important; vertical-align: middle; }
.rp-ref { font-weight: 700; background: var(--rp-green-lt); }
.rp-calc { color: #333; font-weight: 600; }
.rp-inp {
    width: 100%; border: none; background: transparent; font-size: 11px;
    text-align: center; padding: 1px 2px; font-family: inherit; box-sizing: border-box;
}
.rp-inp:focus { outline: 1px solid var(--rp-green); background: var(--pal-input-focus); }
.rp-num { text-align: right; }

/* ── Sélecteur de référence équipement à libellé multi-ligne ──────────
   Un <select> natif tronque toujours son texte affiché sur une seule
   ligne (aucune CSS ne peut le forcer à revenir à la ligne) : on le rend
   invisible et on affiche à la place ce libellé, qui peut s'enrouler
   librement. Le select reste cliquable/accessible par-dessus. */
.ref-sel-wrap { position: relative; min-height: 20px; min-width: 140px; }
.ref-sel-wrap select {
    position: absolute; inset: 0; width: 100%; height: 100%;
    opacity: 0; cursor: pointer; border: none;
}
.ref-sel-label {
    display: block; white-space: normal; word-break: break-word;
    font-size: 11px; text-align: center; padding: 1px 4px; line-height: 1.3;
}
.ref-sel-label.ref-sel-placeholder { color: #888; font-style: italic; }

/* ── Fiche de vie équipement ─────────────────────────────────────────── */
/* Reprend le vert de base (.rp-*) — décoration à revoir plus tard. */
#fv-wrap .rp-hdr-table td { text-align: center; }

.fv-desc-inp { width: 100%; box-sizing: border-box; font-family: inherit; font-size: 12px; padding: 6px; border: 1px solid #bbb; resize: vertical; }
.fv-desc-inp:focus { outline: 1px solid var(--rp-green); background: #f0fdf0; }
.fv-desc-actions { display: flex; gap: 8px; margin: 6px 0 14px; }
.fv-int-inp {
    width: 100%; border: none; background: transparent; font-size: 11px;
    padding: 2px; box-sizing: border-box; text-align: center; font-family: inherit;
    resize: none; overflow: hidden; display: block; line-height: 1.4;
}
.fv-int-inp:focus { outline: 1px solid var(--rp-green); background: #f0fdf0; }
.fv-conformite-cell { text-align: center; vertical-align: middle; cursor: pointer; }
.fv-conformite-text { font-size: 11px; color: #333; }
.fv-conformite-sel { font-size: 11px; font-family: inherit; text-align: center; }
.fv-td-del { text-align: center; vertical-align: middle; padding: 0; }
.fv-td-del-wrap { display: flex; align-items: center; justify-content: center; height: 100%; min-height: 28px; }
.rp-vol-inp { text-align: center; font-weight: 600; color: #333; }
.rp-time-inp { width: auto; min-width: 90px; padding: 0; }
.rp-emt-cell { white-space: nowrap; text-align: center; }
.rp-emt-wrap { display: inline-flex; align-items: center; justify-content: center; gap: 2px; }
.rp-emt-inp  { width: 32px; text-align: center; }
.rp-user-inp { background: var(--pal-input) !important; }
.rp-legend {
    display: flex; align-items: center; gap: 8px;
    margin: 10px 0 4px 4px; font-size: 12px; color: #555;
}
.rp-legend-swatch {
    display: inline-block; width: 28px; height: 18px;
    background: var(--pal-input); border: 1px solid #bbb; border-radius: 2px; flex-shrink: 0;
}
.rp-decision-cell { text-align: center; font-weight: 800; font-size: 12px; padding: 6px; }
.rp-decision-ok  { color: #15803d; background: #dcfce7; }
.rp-decision-nok { color: #b91c1c; background: #fee2e2; }
.rp-stab-wrap { display: flex; gap: 6px; margin-bottom: 8px; align-items: stretch; }
.rp-stab-left { flex: 1; margin-bottom: 0 !important; }
.rp-decl-panel {
    width: 150px; flex-shrink: 0; border: 1px solid #bbb; background: #fff;
    display: flex; flex-direction: column;
}
.rp-decl-hdr {
    background: var(--rp-green-lt); color: #000; font-weight: 700;
    text-align: center; padding: 6px 4px; font-size: 11px; border-bottom: 1px solid #bbb;
}
.rp-final-decision {
    flex: 1; display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 900; text-align: center; padding: 8px; white-space: pre-line;
}
.rp-print-btn {
    margin: 6px; font-size: 10px; padding: 4px 6px; white-space: nowrap;
    border: 1px solid var(--rp-green); color: var(--rp-green); background: #fff;
}
.rp-print-btn:hover { background: var(--rp-green-lt); }

/* ── Raccordement Souffleurs — encart d'instructions ────────────────── */
.souf-instructions {
    border: 2px solid var(--rp-green); background: #fff;
    padding: 8px 12px; margin-bottom: 10px; font-size: 11px; line-height: 1.5;
}
.souf-instructions p { margin: 2px 0; }
.souf-instructions ul { margin: 2px 0 4px; padding-left: 20px; }

/* ── Raccordement Souffleurs — volet graphiques ─────────────────────── */
.souf-split { display: flex; flex: 1; overflow: hidden; min-height: 0; }
.souf-charts {
    flex: 0 0 50%; min-width: 220px; display: flex; flex-direction: column; gap: 10px;
    padding: 12px; overflow-y: auto; background: #fafafa;
}
.souf-resizer {
    width: 6px; flex-shrink: 0; cursor: col-resize; background: var(--border);
    display: flex; align-items: center; justify-content: center; transition: background .15s;
}
.souf-resizer:hover, .souf-resizer.dragging { background: var(--rp-green); }
.souf-resizer-grip { width: 2px; height: 32px; border-left: 1px solid #bbb; border-right: 1px solid #bbb; pointer-events: none; }
.souf-resizer.dragging .souf-resizer-grip { border-color: #fff; }
.souf-chart-panel {
    background: #fff; border: 1px solid var(--border); border-radius: 6px;
    padding: 8px; display: flex; flex-direction: column; gap: 6px;
}
.souf-chart-title {
    font-size: 11px; font-weight: 700; color: var(--rp-green);
    text-transform: uppercase; letter-spacing: .03em; text-align: center;
}
.souf-chart-canvas-wrap { position: relative; height: 160px; }

/* Lignes de données plus compactes (uniquement dans ce rapport : .rp-table
   et les boutons de suppression sont partagés avec d'autres pages). */
#souf-wrap .rp-table td { padding: 1px 4px; }
#souf-wrap .rp-inp { padding: 0 2px; }
#souf-wrap .fv-td-del-wrap { min-height: 18px; }
#souf-wrap .eq-del-btn { width: 18px; height: 18px; font-size: 10px; }

/* Colonne "Fonction" trop étroite : le texte (ex. "Responsable Métrologie")
   était tronqué faute de largeur minimale sur ces deux champs. */
#souf-wrap input#souf-ctrl-fonction,
#souf-wrap input#souf-valid-fonction { min-width: 150px; }

/* ── Rapport raccordement pompe OPÉRATEUR (bleu) ───────────────────── */
.rop-wrap { max-width: 840px; margin: 0 auto; font-size: 11px; }
.rop-title {
    text-align: center; font-size: 14px; font-weight: 700;
    border: 2px solid #000; padding: 12px; margin-bottom: 8px; background: #fff;
}
.rop-hdr-table { width: 100%; border-collapse: collapse; margin-bottom: 6px; }
.rop-hdr-table th, .rop-hdr-table td { border: 1px solid #bbb; padding: 4px 6px; font-size: 11px; }
.rop-lbl { background: var(--rop-blue); color: #fff; font-weight: 600; text-align: center; white-space: nowrap; }
.rop-section {
    background: var(--rop-blue); color: #fff; font-weight: 700; text-align: center;
    padding: 5px; font-size: 11px; letter-spacing: .04em; margin-bottom: 0;
}
.rop-table { width: 100%; border-collapse: collapse; margin-bottom: 8px; font-size: 11px; }
.rop-table th { background: var(--rop-blue-lt); color: #000; font-weight: 700; border: 1px solid #bbb; padding: 4px 6px; text-align: center; }
.rop-table td { border: 1px solid #bbb; padding: 3px 5px; text-align: center; background: #fff; }
.rop-lbl-sm { background: var(--rop-blue-md) !important; color: #fff !important; font-weight: 600; text-align: left !important; padding-left: 8px !important; }
.rop-sub-lbl { background: var(--rop-blue-lt); color: #000; font-weight: 600; text-align: left !important; padding-left: 8px !important; }
.rop-sep-row { height: 4px !important; background: var(--rop-blue) !important; padding: 0 !important; border: none !important; }
.rop-nota { font-size: 7px; font-style: italic; font-weight: 700; color: #c25e00; padding: 3px 8px; line-height: 1.2; text-align: left !important; vertical-align: middle; }
.rop-ref { font-weight: 700; background: var(--rop-blue-lt); }
.rop-calc { color: #333; font-weight: 600; }
.rop-inp {
    width: 100%; border: none; background: transparent; font-size: 11px;
    text-align: center; padding: 1px 2px; font-family: inherit; box-sizing: border-box;
}
.rop-inp:focus { outline: 1px solid var(--rop-blue); background: var(--pal-input-focus); }
.rop-vol-inp { text-align: center; font-weight: 600; color: #333; }
.rop-time-inp { width: auto; min-width: 90px; padding: 0; }
.rop-emt-cell { white-space: nowrap; text-align: center; }
.rop-emt-wrap { display: inline-flex; align-items: center; justify-content: center; gap: 2px; }
.rop-emt-inp  { width: 32px; text-align: center; }
.rop-user-inp { background: var(--pal-input) !important; }
.rop-legend {
    display: flex; align-items: center; gap: 8px;
    margin: 10px 0 4px 4px; font-size: 12px; color: #555;
}
.rop-legend-swatch {
    display: inline-block; width: 28px; height: 18px;
    background: var(--pal-input); border: 1px solid #bbb; border-radius: 2px; flex-shrink: 0;
}
.rop-decision-cell { text-align: center; font-weight: 800; font-size: 12px; padding: 6px; }
.rop-stab-wrap { display: flex; gap: 6px; margin-bottom: 8px; align-items: stretch; }
.rop-stab-left { flex: 1; margin-bottom: 0 !important; }
.rop-decl-panel {
    width: 150px; flex-shrink: 0; border: 1px solid #bbb; background: #fff;
    display: flex; flex-direction: column;
}
.rop-decl-hdr {
    background: var(--rop-blue-lt); color: #000; font-weight: 700;
    text-align: center; padding: 6px 4px; font-size: 11px; border-bottom: 1px solid #bbb;
}
.rop-final-decision {
    flex: 1; display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 900; text-align: center; padding: 8px; white-space: pre-line;
}
.rop-print-btn {
    margin: 6px; font-size: 10px; padding: 4px 6px; white-space: nowrap;
    border: 1px solid var(--rop-blue); color: var(--rop-blue); background: #fff;
}
.rop-print-btn:hover { background: var(--rop-blue-lt); }

/* ── Rapport raccordement ────────────────────────────────────────── */
:root { --rcc-purple: var(--pal-dark); --rcc-purple-lt: var(--pal-light); --rcc-purple-md: var(--pal-dark); }
.rcc-wrap { max-width: 820px; margin: 0 auto; font-size: 11px; }
.rcc-title {
    text-align: center;
    font-size: 15px;
    font-weight: 700;
    border: 2px solid #000;
    padding: 14px;
    margin-bottom: 10px;
    background: #fff;
}
.sm-param-select {
    display: flex; flex-wrap: wrap; align-items: center; gap: 14px;
    border: 1px solid var(--rcc-purple); background: var(--rcc-purple-lt);
    border-radius: 4px; padding: 8px 12px; margin-bottom: 10px;
    font-size: 12px;
}
.sm-param-select-lbl { font-weight: 700; color: var(--rcc-purple); }
.sm-param-select label { display: flex; align-items: center; gap: 5px; cursor: pointer; }
.sm-param-select input[type="checkbox"] { width: 14px; height: 14px; cursor: pointer; }
/* Header identification */
.rcc-hdr-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 6px;
}
.rcc-hdr-table th, .rcc-hdr-table td {
    border: 1px solid #bbb;
    padding: 4px 6px;
    font-size: 11px;
}
.rcc-lbl {
    background: var(--rcc-purple);
    color: #fff;
    font-weight: 600;
    text-align: center;
    white-space: nowrap;
}
.rcc-raccorde-cell {
    text-align: center;
    font-size: 20px;
    font-weight: 900;
    color: #000;
    padding: 6px 12px;
}
/* Section title */
.rcc-section {
    background: var(--rcc-purple);
    color: #fff;
    font-weight: 700;
    text-align: center;
    padding: 5px;
    font-size: 11px;
    letter-spacing: .04em;
    margin-bottom: 0;
}
/* Generic report tables */
.rcc-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 8px;
    font-size: 11px;
}
.rcc-table th {
    background: var(--rcc-purple-lt);
    color: #000;
    font-weight: 700;
    border: 1px solid #bbb;
    padding: 4px 6px;
    text-align: center;
}
.rcc-table td {
    border: 1px solid #bbb;
    padding: 3px 5px;
    text-align: center;
    background: #fff;
}
.rcc-ref { font-weight: 700; }
.rcc-lbl-sm {
    background: var(--rcc-purple-md) !important;
    color: #fff !important;
    font-weight: 600;
    text-align: left !important;
    padding-left: 8px !important;
}
/* Numéro de point (1/2/3) des tableaux Station Météo — centré plutôt qu'aligné à gauche. */
.rcc-point-cell { text-align: center !important; padding-left: 0 !important; }
.rcc-sub-lbl {
    background: var(--rcc-purple-lt) !important;
    color: #000 !important;
    font-weight: 600;
    text-align: left !important;
    padding-left: 8px !important;
}
.rcc-vol-meta td, .rcc-vol-meta th { background: var(--rcc-purple); color: #fff; font-weight: 700; }
.rcc-etalons-table { table-layout: fixed; }
.rcc-etalons-table th, .rcc-etalons-table td { word-break: break-word; overflow-wrap: break-word; }
.rcc-etalons-table .ref-sel-wrap { min-width: 0; width: 100%; }
.rcc-calc { color: #333; font-weight: 600; }
.rcc-err  { color: #c0392b !important; font-weight: 700; }
.rcc-bold { font-weight: 800; }
.rcc-nota-cell { font-size: 10px; padding: 4px 8px !important; line-height: 1.4; text-align: left !important; vertical-align: middle; background: #ebebeb !important; }
.rcc-inp {
    width: 100%;
    border: none;
    background: transparent;
    font-size: 11px;
    text-align: center;
    padding: 1px 2px;
    font-family: inherit;
    box-sizing: border-box;
}
.rcc-inp:focus { outline: 1px solid var(--rcc-purple); background: var(--pal-input-focus); }
.rcc-user-inp { background: var(--pal-input) !important; text-align: center !important; }
.rcc-inp-full { width: 100%; }
.rcc-num { text-align: right; }
#rcc-vol-temps { text-align: center; }
.rcc-auto-tag { font-size: 9px; font-style: italic; font-weight: 700; color: #c25e00; }
/* T/P/H results */
.rcc-tp-result {
    background: #fff;
    font-weight: 800;
    text-align: center;
    vertical-align: middle;
    font-size: 12px;
    color: var(--rcc-purple);
    white-space: nowrap;
}
/* Decision cells */
.rcc-decision-cell {
    text-align: center;
    font-weight: 800;
    font-size: 13px;
    padding: 8px;
    white-space: nowrap;
}
.rcc-decision-ok  { color: #15803d; background: #dcfce7; }
.rcc-decision-nok { color: #b91c1c; background: #fee2e2; }
/* Final */
.rcc-final-table { margin-top: 6px; }
.rcc-final-lbl {
    background: var(--rcc-purple-lt);
    text-align: center;
    font-weight: 600;
    color: #000;
    padding: 5px;
}
.rcc-final-decision {
    text-align: center;
    font-size: 16px;
    font-weight: 900;
    padding: 10px;
}
.rcc-print-btn {
    font-size: 12px; padding: 6px 12px;
    border: 1px solid var(--rcc-purple); color: var(--rcc-purple); background: #fff;
}
.rcc-print-btn:hover { background: var(--rcc-purple-lt); }
.rcc-legend {
    display: flex; align-items: center; gap: 8px;
    margin: 10px 0 4px 0; font-size: 12px; color: #555;
}
.rcc-legend-swatch {
    display: inline-block; width: 28px; height: 18px;
    background: var(--pal-input); border: 1px solid #bbb; border-radius: 2px; flex-shrink: 0;
}

/* ── Toolbar ────────────────────────────────────────────────────── */
.toolbar {
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    padding: 7px 16px;
    display: flex;
    align-items: center;
    gap: 7px;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.tg        { display: flex; align-items: center; gap: 5px; }
.tlabel    { font-size: 11px; color: var(--muted); white-space: nowrap; }
.tsep      { width: 1px; height: 22px; background: var(--border); margin: 0 4px; flex-shrink: 0; }
.hidden    { display: none !important; }

select {
    height: 28px;
    border: 1px solid var(--border);
    border-radius: var(--r);
    padding: 0 24px 0 8px;
    background: var(--bg);
    font-size: 12px;
    color: var(--text);
    outline: none;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2364748b'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 8px center;
}
select:focus { border-color: var(--blue); }

.btn {
    height: 28px; padding: 0 12px;
    border: 1px solid var(--border);
    border-radius: var(--r);
    background: var(--bg);
    font-size: 12px;
    color: var(--text);
    cursor: pointer;
    white-space: nowrap;
    transition: background .12s, border-color .12s;
    display: inline-flex; align-items: center; gap: 4px;
}
.btn:hover   { background: #e2e8f0; }
.btn:active  { transform: translateY(1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; }

.btn.primary { background: var(--blue); border-color: var(--blue); color: #fff; }
.btn.primary:hover { background: #1d4ed8; }
.btn.danger  { background: var(--red);  border-color: var(--red);  color: #fff; }
.btn.danger:hover  { background: #b91c1c; }

/* ── Device info bar ────────────────────────────────────────────── */
.device-bar {
    background: #fffbeb;
    border-bottom: 1px solid #fde68a;
    padding: 5px 16px;
    font-size: 11px;
    color: #92400e;
    display: flex;
    gap: 8px;
    align-items: flex-start;
    flex-shrink: 0;
}
.device-label { font-weight: 600; white-space: nowrap; }
.device-text  { white-space: pre; font-family: 'SF Mono', 'Menlo', monospace; line-height: 1.5; }

/* ── Workspace ──────────────────────────────────────────────────── */
.workspace {
    display: flex;
    flex: 1;
    overflow: hidden;
    min-height: 0;
}

/* ── Table panel ────────────────────────────────────────────────── */
.table-panel {
    display: flex;
    flex-direction: column;
    flex: 1;
    overflow: hidden;
    background: var(--surface);
    border-right: 1px solid var(--border);
}

.panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 7px 12px;
    border-bottom: 1px solid var(--border);
    background: #f8fafc;
    flex-shrink: 0;
}
.panel-title {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .6px;
    color: var(--muted);
}
.badge {
    font-size: 11px;
    background: var(--navy);
    color: #fff;
    padding: 1px 8px;
    border-radius: 10px;
    font-variant-numeric: tabular-nums;
}

.table-scroll { flex: 1; overflow: auto; }

table { width: 100%; border-collapse: collapse; font-size: 12px; }

thead th {
    position: sticky; top: 0; z-index: 1;
    background: #f1f5f9;
    border-bottom: 2px solid var(--border);
    padding: 7px 10px;
    text-align: right;
    font-size: 10px;
    font-weight: 700;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .3px;
    white-space: nowrap;
    user-select: none;
}
thead th.col-idx  { text-align: center; width: 42px; }
thead th.col-time { text-align: left; }

tbody tr { border-bottom: 1px solid #f1f5f9; }
tbody tr:hover { background: #f8fafc; }

@keyframes rowIn { from { background: #dbeafe; } to { background: transparent; } }
tbody tr.new { animation: rowIn .5s ease-out; }

td {
    padding: 5px 10px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
td.col-idx  { text-align: center; color: var(--muted); font-size: 11px; }
td.col-time { text-align: left;   color: var(--muted); font-size: 11px; font-family: 'SF Mono', 'Menlo', monospace; }

.empty-row td {
    text-align: center !important;
    padding: 40px 20px;
    color: var(--muted);
    font-style: italic;
}

/* ── Stats panel ────────────────────────────────────────────────── */
.stats-panel {
    width: 160px;
    flex-shrink: 0;
    background: var(--surface);
    overflow-y: auto;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
}

.stat-section {
    padding: 8px 12px;
    border-bottom: 1px solid var(--border);
}

.stat-title {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--blue);
    margin-bottom: 5px;
}

.stat-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 2px 0;
    font-size: 12px;
    line-height: 1.5;
}
.stat-row span:first-child { color: var(--muted); }
.stat-row span:last-child  { font-variant-numeric: tabular-nums; font-weight: 500; }

/* ── Onglets ────────────────────────────────────────────────────── */
.tab-bar {
    background: var(--surface);
    border-bottom: 2px solid var(--border);
    padding: 0 16px;
    display: flex;
    gap: 2px;
    flex-shrink: 0;
}
.tab {
    padding: 7px 20px;
    border: none;
    background: none;
    font-size: 12px;
    font-weight: 600;
    color: var(--muted);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: color .15s, border-color .15s;
}
.tab:hover  { color: var(--text); }
.tab.active { color: var(--blue); border-bottom-color: var(--blue); }

/* ── Pages ──────────────────────────────────────────────────────── */
.page { display: flex; flex-direction: column; flex: 1; overflow: hidden; }
.page.hidden { display: none !important; }

/* ── Page Étalon ────────────────────────────────────────────────── */
#pageEtalon { overflow: hidden; }
.et-scroll  { flex: 1; overflow-y: auto; background: var(--bg); padding: 20px; }
.et-doc     { max-width: 1080px; margin: 0 auto; background: #fff; padding: 24px 28px; border: 1px solid var(--border); }

.et-title-block {
    display: grid;
    grid-template-columns: 80px 1fr 160px;
    gap: 0;
    border: 1px solid #999;
    margin-bottom: 10px;
}
.et-title-logo {
    border-right: 1px solid #999;
    min-height: 56px;
    background-color: #fff;
    background-image: var(--company-logo, none);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}
.et-title-center {
    text-align: center;
    font-size: clamp(10px, 1.5vw, 14px);
    font-weight: 800;
    text-transform: uppercase;
    padding: 10px 8px;
    white-space: nowrap;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid #999;
    background: #000;
    color: #fff;
}
.et-title-ref {
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    padding: 8px 6px;
    line-height: 1.7;
    background: #000;
    color: #fff;
}

.et-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 10px;
    font-size: 12px;
}
.et-table td { border: 1px solid #aaa; padding: 4px 7px; vertical-align: middle; }

.et-purple  { background: var(--pal-dark); color: #fff; font-weight: 700; text-align: center; }
/* Le bleu se pose sur le champ lui-même (pas sur la cellule) : la marge/
   padding de la cellule reste blanche autour, créant le contour blanc
   souhaité entre le bord de la case et la zone colorée. */
.et-blue input, .et-blue select { background: var(--pal-input) !important; }
.et-lbl     { font-weight: 600; font-size: 11px; }
.et-info-tbl td { text-align: center; }
.et-info-tbl .et-inp { text-align: center; }
.et-lbl-fix { background: #fff; font-weight: 700; font-size: 11px; }
.et-prochain-nc { color: #c00 !important; font-weight: 700 !important; }
.et-legend-cell { font-size: 11px; line-height: 1.7; padding: 8px 12px; vertical-align: middle; }
.et-sublbl  { font-size: 10px; color: var(--muted); font-style: italic; text-align: center; }
.et-calc    { background: #fff; text-align: center; font-variant-numeric: tabular-nums; }
.et-formula { font-family: 'SF Mono','Menlo',monospace; font-size: 11px; }

.et-inp {
    width: 100%; border: none; background: transparent;
    font-size: 12px; padding: 1px 2px;
    font-family: inherit; box-sizing: border-box;
    -webkit-appearance: none; appearance: none;
}
.et-inp:focus { outline: 1px solid var(--pal-dark); border-radius: 2px; }
.et-num  { text-align: center; }
.et-cin  { text-align: center; }
.et-big  { font-size: 18px; font-weight: 800; text-align: center; }

.et-ref-lbl { text-align: center; font-size: 11px; font-weight: 700; }
.et-ref-val { text-align: center; }
.et-ref-sel { width: 100%; font-size: 13px; font-weight: 700; text-align: center; }

.et-dec.conforme     { color: #00b050; font-weight: 700; text-align: center; }
.et-dec.nonconforme  { color: #cc0000; font-weight: 700; text-align: center; }

.et-dec-globale {
    text-align: center; font-size: 18px; font-weight: 800;
    padding: 10px !important;
}
.et-dec-globale.conforme    { color: #00b050; }
.et-dec-globale.nonconforme { color: #cc0000; }

.et-cert-bar {
    display: flex; align-items: center; gap: 10px;
    margin-bottom: 10px;
}
.et-cert-label  { font-size: 12px; font-weight: 600; white-space: nowrap; color: var(--navy); }
.et-cert-url-inp { flex: 1; font-size: 12px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 4px; }
.et-cert-status { font-size: 12px; color: var(--muted); font-style: italic; }
.et-row-actions { margin: -6px 0 10px; }
.et-row-actions .btn { font-size: 11px; padding: 3px 8px; }
.et-row-actions-cell { display: flex; gap: 3px; justify-content: center; }
.et-row-actions-cell .btn { height: 19px; padding: 0 5px; font-size: 10px; border: none; box-shadow: none; opacity: .85; }
.et-row-actions-cell .btn:hover { opacity: 1; }
.et-row-ins { background: #1e9e50; color: #fff; }
.et-row-ins:hover { background: #178042; }
.et-row-del { background: #d0392c; color: #fff; }
.et-row-del:hover { background: #ab2e23; }
.eq-cert-add-btn { font-size: 10px; padding: 1px 6px; opacity: .6; }
.eq-cert-edit-btn { font-size: 11px; padding: 1px 4px; margin-left: 2px; opacity: .5; }

.et-legend {
    margin-top: 16px;
    font-size: 11px;
    color: var(--muted);
    line-height: 1.8;
}
.et-chart-wrap {
    margin-top: 24px;
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 16px;
    background: #fff;
    max-width: 640px;
    max-height: 690px;
    margin-left: auto;
    margin-right: auto;
}

/* ── Débit moyen ────────────────────────────────────────────────── */
.flow-resizer {
    height: 6px;
    flex-shrink: 0;
    cursor: row-resize;
    background: var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s;
}
.flow-resizer:hover, .flow-resizer.dragging { background: #2563eb; }
.flow-resizer-grip {
    width: 32px;
    height: 2px;
    border-top: 1px solid #bbb;
    border-bottom: 1px solid #bbb;
    pointer-events: none;
}
.flow-resizer.dragging .flow-resizer-grip { border-color: #fff; }
.flow-chart-panel {
    flex-shrink: 0;
    height: 160px;
    padding: 4px 12px 4px;
    background: #fff;
}
.debit-bar {
    background: #eff6ff;
    border-top: 1px solid #bfdbfe;
    padding: 6px 16px;
    flex-shrink: 0;
    font-size: 12px;
}
.debit-grid  { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3px 20px; }
.debit-item  { display: flex; align-items: baseline; gap: 8px; }
.debit-label { color: var(--muted); font-weight: 600; white-space: nowrap; }
.debit-value { font-size: 15px; font-weight: 700; color: var(--blue); font-variant-numeric: tabular-nums; }
.debit-unit  { color: var(--muted); font-size: 12px; }
.debit-detail { color: var(--muted); font-size: 11px; margin-left: 4px; }

/* ── Page Équipements ───────────────────────────────────────────── */
.eq-subtab-bar {
    background: #f8fafc;
    border-bottom: 1px solid var(--border);
    padding: 0 12px;
    display: flex;
    gap: 2px;
    flex-shrink: 0;
    flex-wrap: wrap;
}
.eq-subtab {
    padding: 5px 14px;
    border: none; background: none;
    font-size: 12px; font-weight: 600;
    color: var(--muted); cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
    white-space: nowrap;
}
.eq-subtab:hover { color: var(--text); }
.eq-subtab.active { color: var(--navy); border-bottom-color: var(--navy); }
.eq-subtab-count {
    display: inline-block;
    background: var(--border); color: var(--muted);
    border-radius: 8px; padding: 0 5px;
    font-size: 10px; font-weight: 700; margin-left: 4px;
}
.eq-subtab.active .eq-subtab-count { background: var(--navy); color: #fff; }

.eq-scroll {
    flex: 1; overflow: auto; background: var(--bg);
}
.eq-table {
    border-collapse: collapse; font-size: 12px;
    background: var(--surface);
}
.eq-table thead th {
    position: sticky; top: 0; z-index: 2;
    background: #1e3a5f; color: #fff;
    padding: 6px 8px; text-align: center;
    white-space: nowrap; font-size: 11px;
    font-weight: 700; letter-spacing: .3px;
    border-right: 1px solid rgba(255,255,255,.15);
    user-select: none;
}
.eq-th-sort { cursor: pointer; }
.eq-th-sort:hover { background: #2a4f7c; }

/* Première colonne figée à gauche */
.eq-table thead th.eq-col-sticky {
    left: 0;
    z-index: 4;
    box-shadow: 2px 0 6px rgba(0,0,0,.25);
}
.eq-table tbody td.eq-col-sticky {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--surface);
    box-shadow: 2px 0 4px rgba(0,0,0,.07);
}
.eq-table tbody td.eq-col-sticky:hover,
.eq-table tbody tr:hover td.eq-col-sticky { background: #eff6ff; }

.eq-filter-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
    flex-wrap: wrap;
}
.eq-filter-search {
    display: flex;
    align-items: center;
    gap: 6px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 4px 8px;
    flex: 1;
    min-width: 160px;
}
.eq-filter-search svg { width: 14px; height: 14px; color: var(--muted); flex-shrink: 0; }
.eq-filter-search input {
    flex: 1; border: none; background: transparent;
    font-size: 12px; font-family: inherit; outline: none; color: var(--text);
}
.eq-filter-reset-btn {
    background: none; border: none; cursor: pointer;
    color: var(--muted); font-size: 12px; padding: 0 2px; line-height: 1;
}
.eq-filter-reset-btn:hover { color: var(--red); }
.eq-filter-sel {
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 4px 8px;
    font-size: 12px;
    font-family: inherit;
    background: var(--bg);
    color: var(--text);
    cursor: pointer;
}
.eq-filter-count {
    font-size: 11px;
    color: var(--muted);
    white-space: nowrap;
    margin-left: 4px;
}
.eq-td {
    padding: 4px 8px; border-bottom: 1px solid #f1f5f9;
    border-right: 1px solid #f1f5f9; vertical-align: middle;
    text-align: center; cursor: pointer; white-space: nowrap;
    max-width: 300px; overflow: hidden; text-overflow: ellipsis;
}
.eq-td:hover { background: #eff6ff; }
.eq-td-readonly { cursor: default; }
.eq-td-readonly:hover { background: none; }
.eq-th-emt { background: #24598c !important; }
.eq-th-emt:hover { background: #2d6ba8 !important; }
.eq-td-del { padding: 2px 4px; cursor: default; display: table-cell; text-align: center; vertical-align: middle; }
.eq-td-del:hover { background: none; }
.eq-td-del .eq-del-btn { display: block; margin: 0 auto; }
.eq-del-btn { padding: 0; width: 24px; height: 24px; font-size: 12px; color: #b91c1c; border-color: #fca5a5; background: #fee2e2; border-radius: 4px; justify-content: center; }
.eq-del-btn:hover { color: #fff; border-color: var(--red); background: var(--red); }

.eq-badge {
    display: inline-block; padding: 1px 7px; border-radius: 10px;
    font-size: 11px; font-weight: 700; white-space: nowrap;
}
.eq-en-service    { background: #dcfce7; color: #166534; }
.eq-hors-service  { background: #fee2e2; color: #991b1b; }
.eq-reforme       { background: #f3f4f6; color: var(--muted); }
.eq-conforme      { background: #dcfce7; color: #166534; }
.eq-non-conforme  { background: #fee2e2; color: #991b1b; }

.eq-expired  { color: #991b1b; font-weight: 700; }
.eq-expiring { color: #b45309; font-weight: 700; }

.eq-days-green  { background: #bbf7d0; color: #14532d; font-weight: 700; text-align: center; }
.eq-days-yellow { background: #fef08a; color: #713f12; font-weight: 700; text-align: center; }
.eq-days-orange { background: #fb923c; color: #7c2d12; font-weight: 700; text-align: center; }
.eq-days-red    { background: #ef4444; color: #fff;    font-weight: 700; text-align: center; }

.eq-edit-input {
    width: 100%; border: 1px solid var(--blue); border-radius: 3px;
    padding: 2px 4px; font-size: 12px; font-family: inherit;
    background: #fff; outline: none; box-sizing: border-box;
}
textarea.eq-edit-input { resize: vertical; min-height: 52px; white-space: pre; }

.eq-maj-input {
    width: 100px; height: 24px; border: 1px solid var(--border);
    border-radius: var(--r); padding: 0 6px; font-size: 12px;
    background: var(--bg);
}
.eq-maj-input:focus { border-color: var(--blue); outline: none; }

/* ── Status bar ─────────────────────────────────────────────────── */
.statusbar {
    background: var(--navy);
    color: rgba(255,255,255,.55);
    font-size: 11px;
    padding: 3px 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
    letter-spacing: .2px;
}

.et-toolbar { border-bottom: 1px solid var(--border); }
.et-btn-save {
    margin: 0 auto;
    background: #1e9e50;
    border-color: #1e9e50;
    color: #fff;
    font-weight: 700;
}
.et-btn-save:hover { background: #178042; border-color: #178042; }
.et-save-status { font-size: 12px; font-style: italic; }
.et-save-status.ok   { color: #1e9e50; font-weight: 600; }
.et-save-status.warn { color: #c0392b; font-weight: 600; }
.rcc-save-bar {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    padding: 6px 0;
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
}

/* Barre de sous-onglets types d'étalons */
.et-type-bar {
    display: flex;
    gap: 2px;
    padding: 6px 12px 0;
    background: #f8f9fa;
    border-bottom: 2px solid var(--border);
    flex-shrink: 0;
}
.et-type-tab {
    padding: 6px 18px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid transparent;
    border-bottom: none;
    border-radius: 6px 6px 0 0;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    position: relative;
    bottom: -2px;
}
.et-type-tab:hover { background: #ede9fe; color: #6d28d9; }
.et-type-tab.active {
    background: #fff;
    color: #6d28d9;
    border-color: var(--border);
    border-bottom-color: #fff;
}
.et-type-panel { display: flex; flex-direction: column; flex: 1; overflow: hidden; }
.et-type-panel.hidden { display: none !important; }
.et-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    gap: 12px;
    color: var(--muted);
    padding: 60px 20px;
}
.et-ph-icon  { font-size: 48px; }
.et-ph-title { font-size: 20px; font-weight: 700; color: var(--navy); }
.et-ph-msg   { font-size: 14px; }

@media print {
    header, .tab-bar, .toolbar, .et-cert-bar, .et-type-bar,
    #serialWarning, #btnCertificat, #certStatus, .et-legend, .rcc-legend { display: none !important; }
    body { background: #fff; }
    .ref-sel-wrap select { display: none !important; }

    /* Étalon — impression générique (Ctrl+P) */
    .page { display: none !important; }
    #pageEtalon { display: block !important; }
    .et-type-panel { display: none !important; }
    #et-panel-cg   { display: block !important; }
    .et-scroll { overflow: visible; height: auto; }
    .et-doc { box-shadow: none; margin: 0; }
    input.et-inp { border: none; background: transparent; }

    /* Étalon — bouton "Extraire en PDF" : A4 paysage, autant de pages que nécessaire */
    body[data-print-page="et-rapport"]               { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="et-rapport"] .app-layout   { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="et-rapport"] .app-main     { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="et-rapport"] .page        { display: none !important; }
    body[data-print-page="et-rapport"] #pageEtalon  { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="et-rapport"] .pc-eq-panel { display: none !important; }
    body[data-print-page="et-rapport"] .et-toolbar  { display: none !important; }
    body[data-print-page="et-rapport"] .et-type-bar { display: none !important; }
    body[data-print-page="et-rapport"] .et-cert-bar { display: none !important; }

    /* Panel actif selon l'onglet sélectionné */
    body[data-print-page="et-rapport"] .et-type-panel                              { display: none !important; }
    /* Écrase la règle générique #et-panel-cg { display:block } (spécificité ID trop élevée) */
    body[data-print-page="et-rapport"] #et-panel-cg                                { display: none !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="cg"] #et-panel-cg        { display: block !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="db"] #et-panel-db        { display: block !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="th"] #et-panel-th        { display: block !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="ba"] #et-panel-ba        { display: block !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="an"] #et-panel-an        { display: block !important; }
    body[data-print-page="et-rapport"][data-et-print-pfx="hy"] #et-panel-hy        { display: block !important; }

    body[data-print-page="et-rapport"] #pageSouffleur { display: none !important; }

    /* Sidebar et fond gris supprimés */
    body[data-print-page="et-rapport"] .sidebar    { display: none !important; }
    body[data-print-page="et-rapport"] .statusbar  { display: none !important; }

    /* Mise en page compacte */
    body[data-print-page="et-rapport"] .et-type-panel { overflow: visible !important; height: auto !important; }
    body[data-print-page="et-rapport"] .et-scroll     { overflow: visible !important; height: auto !important; background: #fff !important; padding: 0 !important; }
    body[data-print-page="et-rapport"] .et-doc {
        max-width: 100% !important;
        padding: 4px 6px !important;
        margin: 0 !important;
        border: none !important;
        box-shadow: none !important;
        font-size: 9px !important;
    }
    body[data-print-page="et-rapport"] .et-table td  { padding: 2px 4px !important; }
    body[data-print-page="et-rapport"] .et-inp       { font-size: 9px !important; }
    body[data-print-page="et-rapport"] .et-purple    { font-size: 9px !important; padding: 2px 4px !important; }
    body[data-print-page="et-rapport"] .et-legend-cell { font-size: 8px !important; line-height: 1.5 !important; padding: 3px 6px !important; }
    body[data-print-page="et-rapport"] .et-title-block { font-size: 8px !important; }
    body[data-print-page="et-rapport"] .et-title-center { font-size: 9px !important; }
    body[data-print-page="et-rapport"] .et-dec-globale { font-size: 14px !important; }
    body[data-print-page="et-rapport"] .et-chart-wrap {
        max-height: 170px !important;
        margin-top: 6px !important;
        padding: 4px !important;
    }
    body[data-print-page="et-rapport"] * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    /* Raccordement Pompe — données */
    body[data-print-page="pageMesures"] #pageEtalon     { display: none !important; }
    body[data-print-page="pageMesures"] #pageMesures    { display: flex !important; }
    body[data-print-page="pageMesures"] #pagePulsecount { display: none !important; }
    body[data-print-page="pageMesures"] #pageSouffleur  { display: none !important; }

    /* Raccordement Pompe — rapport seul */
    body[data-print-page="rp-rapport"] .page         { display: none !important; }
    body[data-print-page="rp-rapport"] #pageMesures  { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="rp-rapport"] .pm-split  { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rp-rapport"] .pm-right  { display: block !important; width: 100% !important; overflow: visible !important; background: #fff !important; padding: 0 !important; }
    body[data-print-page="rp-rapport"] .pm-left   { display: none !important; }
    body[data-print-page="rp-rapport"] .rcc-save-bar { display: none !important; }
    body[data-print-page="rp-rapport"] .pc-eq-panel  { display: none !important; }
    body[data-print-page="rp-rapport"] .pm-resizer   { display: none !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone { display: block !important; page-break-before: always !important; break-before: page !important; width: 100% !important; overflow: visible !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .toolbar    { display: none !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .device-bar { display: none !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .workspace  { display: block !important; overflow: visible !important; height: auto !important; min-height: 0 !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .table-panel  { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .table-scroll { display: block !important; overflow: visible !important; height: auto !important; max-height: none !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .flow-resizer    { display: none !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .flow-chart-panel { display: block !important; height: 160px !important; }
    body[data-print-page="rp-rapport"] #rp-print-data-clone .debit-bar { display: flex !important; flex-shrink: unset !important; }
    body[data-print-page="rp-rapport"] .rp-wrap      { overflow: visible !important; height: auto !important; padding: 0 !important; }
    body[data-print-page="rp-rapport"] .rp-inp       { border: none !important; background: transparent !important; }
    body[data-print-page="rp-rapport"] select.rp-inp { -webkit-appearance: none; border: none !important; background: transparent !important; }
    body[data-print-page="rp-rapport"] .rp-print-btn  { display: none !important; }
    body[data-print-page="rp-rapport"] .rp-legend     { display: none !important; }
    body[data-print-page="rp-rapport"] .rp-user-inp   { background: transparent !important; }
    body[data-print-page="rp-rapport"] #pageEtalon    { display: none !important; }
    body[data-print-page="rp-rapport"] #pagePulsecount { display: none !important; }
    body[data-print-page="rp-rapport"] #pageSouffleur { display: none !important; }
    body[data-print-page="rp-rapport"] header         { display: none !important; }
    body[data-print-page="rp-rapport"] .statusbar     { display: none !important; }
    body[data-print-page="rp-rapport"] .tab-bar      { display: none !important; }
    body[data-print-page="rp-rapport"] .sidebar      { display: none !important; }
    body[data-print-page="rp-rapport"]               { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="rp-rapport"] .app-layout   { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rp-rapport"] .app-main     { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rp-rapport"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    /* Raccordement Pompe Opérateur — données */
    body[data-print-page="pageMesuresOp"] #pageEtalon      { display: none !important; }
    body[data-print-page="pageMesuresOp"] #pageMesures     { display: none !important; }
    body[data-print-page="pageMesuresOp"] #pageMesuresOp   { display: flex !important; }
    body[data-print-page="pageMesuresOp"] #pagePulsecount  { display: none !important; }
    body[data-print-page="pageMesuresOp"] #pageSouffleur   { display: none !important; }

    /* Raccordement Pompe Opérateur — rapport seul */
    body[data-print-page="rop-rapport"] .page              { display: none !important; }
    body[data-print-page="rop-rapport"] #pageMesuresOp     { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="rop-rapport"] .pmo-split  { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rop-rapport"] .pmo-right  { display: block !important; width: 100% !important; overflow: visible !important; background: #fff !important; padding: 0 !important; }
    body[data-print-page="rop-rapport"] .pmo-left   { display: none !important; }
    body[data-print-page="rop-rapport"] .rcc-save-bar { display: none !important; }
    body[data-print-page="rop-rapport"] .pc-eq-panel   { display: none !important; }
    body[data-print-page="rop-rapport"] .pmo-resizer   { display: none !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone { display: block !important; page-break-before: always !important; break-before: page !important; width: 100% !important; overflow: visible !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .toolbar    { display: none !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .device-bar { display: none !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .workspace  { display: block !important; overflow: visible !important; height: auto !important; min-height: 0 !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .table-panel  { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .table-scroll { display: block !important; overflow: visible !important; height: auto !important; max-height: none !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .flow-resizer    { display: none !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .flow-chart-panel { display: block !important; height: 160px !important; }
    body[data-print-page="rop-rapport"] #rop-print-data-clone .debit-bar { display: flex !important; flex-shrink: unset !important; }
    body[data-print-page="rop-rapport"] .rop-wrap       { overflow: visible !important; height: auto !important; padding: 0 !important; }
    body[data-print-page="rop-rapport"] .rop-inp        { border: none !important; background: transparent !important; }
    body[data-print-page="rop-rapport"] select.rop-inp  { -webkit-appearance: none; border: none !important; background: transparent !important; }
    body[data-print-page="rop-rapport"] .rop-print-btn  { display: none !important; }
    body[data-print-page="rop-rapport"] .rop-legend     { display: none !important; }
    body[data-print-page="rop-rapport"] .rop-user-inp   { background: transparent !important; }
    body[data-print-page="rop-rapport"] #pageEtalon     { display: none !important; }
    body[data-print-page="rop-rapport"] #pagePulsecount { display: none !important; }
    body[data-print-page="rop-rapport"] #pageMesures    { display: none !important; }
    body[data-print-page="rop-rapport"] header          { display: none !important; }
    body[data-print-page="rop-rapport"] .statusbar      { display: none !important; }
    body[data-print-page="rop-rapport"] .tab-bar        { display: none !important; }
    body[data-print-page="rop-rapport"] .sidebar        { display: none !important; }
    body[data-print-page="rop-rapport"]                 { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="rop-rapport"] .app-layout     { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rop-rapport"] .app-main       { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rop-rapport"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
    body[data-print-page="rop-rapport"] #pageSouffleur  { display: none !important; }

    /* Rapport raccordement souffleurs (formulaire manuel, pas de volet gauche) */
    body[data-print-page="souf-rapport"] .page          { display: none !important; }
    body[data-print-page="souf-rapport"] #pageEtalon    { display: none !important; }
    body[data-print-page="souf-rapport"] #pageSouffleur { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="souf-rapport"] .pc-eq-panel   { display: none !important; }
    body[data-print-page="souf-rapport"] .souf-charts   { display: none !important; }
    body[data-print-page="souf-rapport"] .souf-resizer  { display: none !important; }
    body[data-print-page="souf-rapport"] .rcc-save-bar  { display: none !important; }
    body[data-print-page="souf-rapport"] .souf-split    { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="souf-rapport"] .souf-right    { display: block !important; width: 100% !important; overflow: visible !important; }
    /* Graphiques : insérés en image (le canvas ne se clone pas) dans le
       flux du rapport imprimé, cf #souf-charts-print-clone créé par JS. */
    body[data-print-page="souf-rapport"] #souf-charts-print-clone {
        display: flex !important; flex-direction: row !important; gap: 10px;
        width: 100% !important; margin-top: 10px; page-break-inside: avoid;
    }
    body[data-print-page="souf-rapport"] #souf-charts-print-clone .souf-chart-panel { flex: 1; min-width: 0; }
    body[data-print-page="souf-rapport"] #souf-charts-print-clone .souf-chart-canvas-wrap { height: auto; }
    body[data-print-page="souf-rapport"] .rp-wrap       { overflow: visible !important; height: auto !important; padding: 0 !important; }
    body[data-print-page="souf-rapport"] .rp-inp        { border: none !important; background: transparent !important; }
    body[data-print-page="souf-rapport"] select.rp-inp  { -webkit-appearance: none; border: none !important; background: transparent !important; }
    body[data-print-page="souf-rapport"] .rp-print-btn  { display: none !important; }
    body[data-print-page="souf-rapport"] .rp-legend     { display: none !important; }
    body[data-print-page="souf-rapport"] .rp-user-inp   { background: transparent !important; }
    body[data-print-page="souf-rapport"] header         { display: none !important; }
    body[data-print-page="souf-rapport"] .statusbar     { display: none !important; }
    body[data-print-page="souf-rapport"] .tab-bar       { display: none !important; }
    body[data-print-page="souf-rapport"] .sidebar       { display: none !important; }
    body[data-print-page="souf-rapport"]                { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="souf-rapport"] .app-layout    { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="souf-rapport"] .app-main      { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="souf-rapport"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    /* Raccordement Pulsecount (page entière) */
    body[data-print-page="pagePulsecount"] #pageEtalon     { display: none !important; }
    body[data-print-page="pagePulsecount"] #pageMesures    { display: none !important; }
    body[data-print-page="pagePulsecount"] #pageSouffleur  { display: none !important; }
    body[data-print-page="pagePulsecount"] #pagePulsecount { display: flex !important; }

    /* Rapport raccordement compteurs secondaires uniquement */
    body[data-print-page="rcc-rapport"]               { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="rcc-rapport"] .app-layout   { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rcc-rapport"] .app-main     { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="rcc-rapport"] .page             { display: none !important; }
    body[data-print-page="rcc-rapport"] #pagePulsecount   { display: block !important; overflow: visible !important; padding: 0 !important; }
    /* Écrase la règle générique #pageEtalon { display:block } plus haut (spécificité ID trop élevée). */
    body[data-print-page="rcc-rapport"] #pageEtalon       { display: none !important; }
    body[data-print-page="rcc-rapport"] #pageSouffleur    { display: none !important; }
    body[data-print-page="rcc-rapport"] .pc-eq-panel      { display: none !important; }
    body[data-print-page="rcc-rapport"] .pc-split         { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rcc-rapport"] .pc-left          { display: none !important; }
    body[data-print-page="rcc-rapport"] .pc-resizer       { display: none !important; }
    body[data-print-page="rcc-rapport"] .rcc-save-bar     { display: none !important; }
    body[data-print-page="rcc-rapport"] .rcc-legend        { display: none !important; }
    body[data-print-page="rcc-rapport"] .rcc-print-btn    { display: none !important; }
    body[data-print-page="rcc-rapport"] .pc-right         {
        display: block !important;
        width: 100% !important;
        overflow: visible !important;
        background: #fff;
        padding: 0;
    }
    body[data-print-page="rcc-rapport"] .rcc-wrap { overflow: visible !important; height: auto !important; padding: 0 !important; }
    body[data-print-page="rcc-rapport"] .rcc-inp {
        border: none !important;
        background: transparent !important;
    }
    body[data-print-page="rcc-rapport"] select.rcc-inp {
        -webkit-appearance: none;
        border: none !important;
        background: transparent !important;
    }
    body[data-print-page="rcc-rapport"] header      { display: none !important; }
    body[data-print-page="rcc-rapport"] .statusbar  { display: none !important; }
    body[data-print-page="rcc-rapport"] .tab-bar    { display: none !important; }
    body[data-print-page="rcc-rapport"] .sidebar    { display: none !important; }
    body[data-print-page="rcc-rapport"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    /* Rapport raccordement compteurs secondaires — clone du volet gauche
       (tableau de mesures + graphique) imprimé sur une page suivante, comme
       pour la page Pompes. */
    body[data-print-page="rcc-rapport"] #pc-print-data-clone {
        display: block !important;
        page-break-before: always !important;
        break-before: page !important;
        width: 100% !important;
        overflow: visible !important;
    }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .toolbar     { display: none !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .workspace   { display: block !important; overflow: visible !important; height: auto !important; min-height: 0 !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .table-panel { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .table-scroll { display: block !important; overflow: visible !important; height: auto !important; max-height: none !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .flow-resizer     { display: none !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .flow-chart-panel { display: block !important; height: 160px !important; }
    body[data-print-page="rcc-rapport"] #pc-print-data-clone .debit-bar  { display: block !important; flex-shrink: unset !important; }

    /* Rapport raccordement Stations Météo Secondaires — pas de volet gauche
       à l'impression (mini-graphiques indicatifs uniquement, écran). */
    body[data-print-page="smt-rapport"]               { height: auto !important; overflow: visible !important; display: block !important; }
    body[data-print-page="smt-rapport"] .app-layout   { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="smt-rapport"] .app-main     { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="smt-rapport"] .page             { display: none !important; }
    /* Écrase la règle générique #pageEtalon { display:block } plus haut (spécificité ID trop élevée). */
    body[data-print-page="smt-rapport"] #pageEtalon        { display: none !important; }
    body[data-print-page="smt-rapport"] #pageStationMeteo { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="smt-rapport"] .pc-eq-panel      { display: none !important; }
    body[data-print-page="smt-rapport"] .pc-split         { display: block !important; overflow: visible !important; height: auto !important; }
    body[data-print-page="smt-rapport"] .pc-left          { display: none !important; }
    body[data-print-page="smt-rapport"] .pc-resizer       { display: none !important; }
    body[data-print-page="smt-rapport"] .rcc-save-bar     { display: none !important; }
    body[data-print-page="smt-rapport"] .rcc-legend        { display: none !important; }
    body[data-print-page="smt-rapport"] .rcc-print-btn    { display: none !important; }
    body[data-print-page="smt-rapport"] .pc-right         {
        display: block !important;
        width: 100% !important;
        overflow: visible !important;
        background: #fff;
        padding: 0;
    }
    body[data-print-page="smt-rapport"] .rcc-wrap { overflow: visible !important; height: auto !important; padding: 0 !important; }
    body[data-print-page="smt-rapport"] .rcc-inp {
        border: none !important;
        background: transparent !important;
    }
    body[data-print-page="smt-rapport"] select.rcc-inp {
        -webkit-appearance: none;
        border: none !important;
        background: transparent !important;
    }
    body[data-print-page="smt-rapport"] header      { display: none !important; }
    body[data-print-page="smt-rapport"] .statusbar  { display: none !important; }
    body[data-print-page="smt-rapport"] .tab-bar    { display: none !important; }
    body[data-print-page="smt-rapport"] .sidebar    { display: none !important; }
    body[data-print-page="smt-rapport"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    .device-bar { display: none !important; }

    /* Fiche de vie équipement */
    body[data-print-page="pageFicheVie"] .page       { display: none !important; }
    /* Écrase la règle générique #pageEtalon { display:block } plus haut (spécificité ID trop élevée). */
    body[data-print-page="pageFicheVie"] #pageEtalon   { display: none !important; }
    body[data-print-page="pageFicheVie"] #pageFicheVie { display: block !important; overflow: visible !important; padding: 0 !important; }
    body[data-print-page="pageFicheVie"] .toolbar    { display: none !important; }
    body[data-print-page="pageFicheVie"] header      { display: none !important; }
    body[data-print-page="pageFicheVie"] .statusbar  { display: none !important; }
    body[data-print-page="pageFicheVie"] .tab-bar    { display: none !important; }
    body[data-print-page="pageFicheVie"] .sidebar    { display: none !important; }
    body[data-print-page="pageFicheVie"] .fv-int-del-btn { display: none !important; }
    body[data-print-page="pageFicheVie"] textarea    { border: none !important; }
    body[data-print-page="pageFicheVie"] .app-layout { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="pageFicheVie"] .app-main   { display: block !important; overflow: visible !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
    body[data-print-page="pageFicheVie"] * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}

/* ── Page Contact ──────────────────────────────────────────────────── */
.contact-page.sb-page { background: #12281f; }
.contact-body {
    padding: 0;
    display: flex;
    justify-content: center;
}
.contact-wrap {
    width: 100%;
    max-width: 640px;
    padding: 56px 24px 72px;
    box-sizing: border-box;
}
.contact-eyebrow {
    text-align: center;
    color: #7fdcae;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 3px;
    margin-bottom: 10px;
}
.contact-title {
    text-align: center;
    color: #fff;
    font-size: 44px;
    font-weight: 800;
    margin: 0 0 18px;
    line-height: 1.15;
}
.contact-sub {
    text-align: center;
    color: #b9cfc3;
    font-size: 16px;
    line-height: 1.5;
    margin: 0 0 40px;
}
.contact-form { display: flex; flex-direction: column; gap: 20px; }
.contact-row { display: flex; gap: 20px; }
.contact-row .contact-field { flex: 1; min-width: 0; }
.contact-field { display: flex; flex-direction: column; gap: 8px; }
.contact-field label { color: #e8f3ec; font-size: 14px; font-weight: 600; }
.contact-field input,
.contact-field textarea {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 10px;
    color: #fff;
    font: inherit;
    font-size: 15px;
    padding: 14px 16px;
    outline: none;
    resize: vertical;
    box-sizing: border-box;
}
.contact-field input::placeholder,
.contact-field textarea::placeholder { color: #8fa79b; }
.contact-field input:focus,
.contact-field textarea:focus { border-color: #4cbd8c; background: rgba(255,255,255,0.09); }
.contact-submit {
    margin-top: 8px;
    padding: 16px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #57c98f, #2f9e6b);
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
}
.contact-submit:hover { filter: brightness(1.05); }
.contact-submit:disabled { opacity: 0.65; cursor: default; }
@media (max-width: 560px) {
    .contact-title { font-size: 32px; }
    .contact-row { flex-direction: column; gap: 20px; }
}
