:root{--bg:#061120;--panel:#0b1730;--card:#101d33;--border:#263953;--text:#f8fbff;--muted:#9fb3d1;--blue:#38bdf8;--green:#22c55e;--orange:#f59e0b;--red:#ef4444;--purple:#a78bfa}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,#10284a 0,#061120 38%,#030712 100%);color:var(--text);font-family:Segoe UI,Arial,sans-serif}.sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:linear-gradient(180deg,#0b1730,#07101f);border-right:1px solid var(--border);padding:22px;overflow:auto}.brand{display:flex;gap:12px;align-items:center;margin-bottom:16px}.logo{width:54px;height:54px;border-radius:15px;background:linear-gradient(135deg,#2dd4bf,#2563eb);display:grid;place-items:center;font-weight:900}.brand h1{font-size:20px;margin:0}.brand p{margin:2px 0;color:#cbd5e1}.building-chip{background:#081626;border:1px solid #164e63;color:#67e8f9;padding:10px;border-radius:12px;margin:12px 0 18px;font-weight:700}nav button,.filters button,.toolbar button{width:100%;text-align:left;background:#121e31;border:1px solid var(--border);color:white;padding:13px 14px;border-radius:12px;margin:6px 0;font-weight:800;cursor:pointer}nav button.active,nav button:hover,.filters button.active{background:#123d5a;border-color:#38bdf8}.source{margin-top:20px;background:#101d33;border:1px solid var(--border);border-radius:16px;padding:16px;font-size:14px}.green{color:#22c55e}.main{margin-left:260px;padding:24px 28px}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:18px}.topbar h1{font-size:24px;letter-spacing:1px;margin:0}.topbar p{margin:6px 0;color:#9fb3d1}.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.controls select,.clock{background:#0b1730;color:white;border:1px solid #304663;border-radius:10px;padding:11px 14px}.clock{border-color:#0ea5e9;color:#bfdbfe}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}.kpi,.card,.panel{background:linear-gradient(180deg,rgba(18,31,51,.96),rgba(8,18,34,.96));border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 35px rgba(0,0,0,.2)}.kpi{padding:18px}.kpi span{display:block;color:#b8c7df;font-size:13px}.kpi b{font-size:27px;display:block;margin-top:10px;color:#dbeafe}.view{display:none}.view.active{display:block}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wide-left{grid-template-columns:1.35fr .85fr}.card{padding:18px}.card h2,.panel h2{margin-top:0}.muted{color:var(--muted)}.local-grid{display:grid;grid-template-columns:repeat(2,minmax(230px,1fr));gap:14px;margin-top:14px}.local-card{position:relative;overflow:hidden;min-height:150px;border:1px solid #28405f;border-radius:18px;padding:18px;background:linear-gradient(135deg,#13213a,#071427);cursor:pointer}.local-card:hover{border-color:#38bdf8;transform:translateY(-1px)}.local-card.selected{outline:2px solid #22c55e}.local-card .score{position:absolute;right:14px;top:14px;border-radius:99px;padding:6px 10px;background:#052e1a;color:#86efac;font-weight:900}.local-card .type{color:#38bdf8;font-weight:800}.local-card h3{margin:14px 0 8px}.local-card .meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.local-card .meta span{background:#08172b;border:1px solid #223653;border-radius:10px;padding:8px}.executive{display:grid;gap:10px}.exec-line{border-left:4px solid #38bdf8;padding:10px 12px;background:#0b1730;border-radius:10px}.story{line-height:1.8;color:#cbd5e1}.synoptic-layout{display:grid;grid-template-columns:minmax(700px,1fr) 430px;gap:18px}.image-card{position:relative;overflow:hidden;border-radius:18px;border:1px solid var(--border);background:#000;min-height:560px}.image-card img{width:100%;height:100%;object-fit:cover;display:block;filter:contrast(1.04) brightness(.82)}.image-card.zoom img{filter:contrast(1.07) brightness(.75)}.flow{position:absolute;inset:0;pointer-events:none}.flow path{fill:none;stroke-width:.8;stroke-dasharray:3 2;animation:dash 1.8s linear infinite}.air{stroke:#38bdf8}.water{stroke:#60a5fa}@keyframes dash{to{stroke-dashoffset:-10}}#markers{position:absolute;inset:0}.marker{position:absolute;transform:translate(-50%,-50%);min-width:105px;background:rgba(9,17,32,.92);border:2px solid #22c55e;border-radius:13px;padding:9px 11px;box-shadow:0 10px 25px rgba(0,0,0,.45);cursor:pointer}.marker:hover{scale:1.05}.marker strong{display:block;font-size:13px}.marker span{font-size:13px}.marker.alerte{border-color:#f59e0b}.marker.critique{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.2),0 10px 25px rgba(0,0,0,.45)}.panel{padding:18px;max-height:650px;overflow:auto}.empty{background:#081526;border-radius:12px;padding:18px;color:#cbd5e1}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail-grid div,.mini,.doc-card{background:#0b1730;border:1px solid #1b2e49;border-radius:12px;padding:12px}.badge{display:inline-block;border-radius:999px;padding:4px 8px;font-weight:800;font-size:12px}.badge.normal{background:#052e1a;color:#86efac}.badge.alerte{background:#3a2706;color:#fbbf24}.badge.critique{background:#3b0a13;color:#fca5a5}.doc-chip{display:inline-block;margin:6px 6px 0 0;padding:8px 10px;background:#0b1730;border:1px solid #1d4ed8;border-radius:9px;color:#bfdbfe;font-size:12px}.alarm{padding:12px;border-left:4px solid #f59e0b;background:#1b1420;border-radius:10px;margin:9px 0}.alarm.critique{border-left-color:#ef4444;background:#321524}.table{width:100%;border-collapse:separate;border-spacing:0 8px}.table th{text-align:left;color:#9fb3d1;font-size:13px}.table td{background:#0b1730;border-top:1px solid #1b2e49;border-bottom:1px solid #1b2e49;padding:12px}.table tr td:first-child{border-left:1px solid #1b2e49;border-radius:12px 0 0 12px}.table tr td:last-child{border-right:1px solid #1b2e49;border-radius:0 12px 12px 0}.clickable{cursor:pointer}.selected-row td{outline:1px solid #22c55e}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.filters button,.toolbar button{width:auto}.asset-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px}.asset-card{background:#0b1730;border:1px solid #1b2e49;border-radius:14px;padding:14px}.mini-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.mini span{display:block;color:#9fb3d1}.mini strong{font-size:24px;color:#e0f2fe}canvas{max-width:100%;background:#081526;border-radius:12px}.toolbar{display:flex;gap:10px;margin:8px 0 14px}.docs-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px}.doc-card b{display:block;font-size:16px}.doc-card span{color:#9fb3d1}@media(max-width:1200px){.kpis{grid-template-columns:repeat(2,1fr)}.synoptic-layout,.grid2,.wide-left{grid-template-columns:1fr}.sidebar{position:static;width:auto}.main{margin-left:0}.local-grid,.asset-grid,.docs-grid{grid-template-columns:1fr}}

/* V4 - Mode Flux Air : séquence professionnelle par équipements, sans grande courbe bleue */
.flow{display:none}.flow-demo{position:absolute;inset:0;pointer-events:none;z-index:2}.flow-step{position:absolute;min-width:118px;padding:9px 12px;border-radius:14px;background:rgba(4,12,24,.92);border:1px solid rgba(56,189,248,.35);color:#dff7ff;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.3px;box-shadow:0 12px 24px rgba(0,0,0,.35);opacity:.38;transform:translate(-50%,-50%) scale(.92);transition:opacity .35s ease, transform .35s ease, border-color .35s ease, box-shadow .35s ease, background .35s ease}.flow-step::after{content:attr(data-label);display:block;margin-top:3px;font-size:10px;color:#93c5fd;text-transform:none;font-weight:700}.flow-demo.playing .flow-step.done{opacity:.75;border-color:#22c55e;box-shadow:0 0 0 1px rgba(34,197,94,.35),0 12px 24px rgba(0,0,0,.35)}.flow-demo.playing .flow-step.active{opacity:1;background:rgba(7,89,133,.96);border-color:#38bdf8;box-shadow:0 0 0 4px rgba(56,189,248,.20),0 0 28px rgba(56,189,248,.55);transform:translate(-50%,-50%) scale(1.08)}.flow-demo.playing .flow-step.active::before{content:"";position:absolute;inset:-10px;border-radius:20px;border:2px solid rgba(56,189,248,.55);animation:flowPulse 1s ease-out infinite}@keyframes flowPulse{from{opacity:.9;transform:scale(.92)}to{opacity:0;transform:scale(1.18)}}.step1{left:9%;top:28%}.step2{left:32%;top:40%}.step3{left:49%;top:25%}.step4{left:64%;top:36%}.step5{left:89%;top:31%}.flow-button{width:100%;margin:12px 0 8px;padding:11px 12px;border-radius:12px;border:1px solid #38bdf8;background:linear-gradient(135deg,#075985,#0f172a);color:#e0f2fe;font-weight:900;cursor:pointer}.flow-button:hover{filter:brightness(1.15)}

/* V6 - Interface propre : plus de grosses étiquettes flottantes, seulement des points interactifs */
.image-card{min-height:620px;display:block}.image-card img{height:100%;min-height:620px;object-fit:cover;filter:contrast(1.04) brightness(.72) saturate(.92)}
.image-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,10,20,.15),rgba(4,10,20,.03) 45%,rgba(4,10,20,.42));pointer-events:none;z-index:1}
#markers{z-index:4}.marker{min-width:0;width:24px;height:24px;padding:0;border-radius:50%;border:2px solid rgba(34,197,94,.95);background:rgba(8,18,34,.86);box-shadow:0 0 0 5px rgba(34,197,94,.16),0 8px 20px rgba(0,0,0,.45)}
.marker strong,.marker span{display:none}.marker:hover{scale:1.22;box-shadow:0 0 0 8px rgba(56,189,248,.18),0 0 22px rgba(56,189,248,.55)}
.marker::after{content:attr(data-tip);position:absolute;left:50%;bottom:145%;transform:translateX(-50%);min-width:180px;max-width:240px;background:rgba(6,15,28,.97);border:1px solid #38bdf8;border-radius:12px;padding:10px 12px;color:#e0f2fe;font-size:12px;line-height:1.35;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 12px 24px rgba(0,0,0,.45)}
.marker:hover::after,.marker.active::after{opacity:1}.marker.alerte{border-color:#f59e0b;box-shadow:0 0 0 5px rgba(245,158,11,.15),0 8px 20px rgba(0,0,0,.45)}.marker.critique{border-color:#ef4444;box-shadow:0 0 0 5px rgba(239,68,68,.18),0 8px 20px rgba(0,0,0,.45)}
.marker.temperature{border-color:#38bdf8;box-shadow:0 0 0 5px rgba(56,189,248,.16),0 8px 20px rgba(0,0,0,.45)}.marker.pression{border-color:#a78bfa;box-shadow:0 0 0 5px rgba(167,139,250,.16),0 8px 20px rgba(0,0,0,.45)}.marker.vanne{border-color:#f97316;box-shadow:0 0 0 5px rgba(249,115,22,.16),0 8px 20px rgba(0,0,0,.45)}
.bottom-hud{position:absolute;left:16px;right:16px;bottom:16px;z-index:6;background:rgba(5,13,26,.88);border:1px solid rgba(56,189,248,.25);border-radius:16px;padding:12px;backdrop-filter:blur(10px);box-shadow:0 16px 36px rgba(0,0,0,.45)}
.hud-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.hud-tabs button{border:1px solid #27415f;background:#0b1730;color:#dbeafe;border-radius:10px;padding:9px 12px;font-weight:900;cursor:pointer}.hud-tabs button:hover,.hud-tabs button.active{background:linear-gradient(135deg,#075985,#0f172a);border-color:#38bdf8;color:white}.bottom-inspector{display:flex;gap:10px;overflow-x:auto;padding-bottom:2px}.hud-card{min-width:150px;background:#0b1730;border:1px solid #223653;border-radius:12px;padding:10px 12px;cursor:pointer}.hud-card:hover{border-color:#38bdf8;transform:translateY(-1px)}.hud-card.selected{border-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}.hud-card b{display:block;font-size:13px}.hud-card span{display:block;color:#9fb3d1;font-size:12px;margin-top:4px}.hud-card strong{display:block;font-size:18px;margin-top:7px;color:#e0f2fe}.hud-card.critique{border-color:#ef4444}.hud-card.alerte{border-color:#f59e0b}.hud-empty{color:#cbd5e1;padding:10px 4px}.flow-demo{z-index:3;display:none}.flow-demo.playing{display:block}.flow-step{opacity:0}.flow-demo.playing .flow-step{opacity:.55}.flow-demo.playing .flow-step.active,.flow-demo.playing .flow-step.done{opacity:1}.image-card:not(.show-flow) .flow-demo{display:none!important}.panel{max-height:720px}.source h3::after{content:" V6";color:#38bdf8}.synoptic-layout{grid-template-columns:minmax(700px,1fr) 430px}@media(max-width:1200px){.bottom-hud{position:relative;left:auto;right:auto;bottom:auto;margin:10px}.image-card img{min-height:480px}.image-card{min-height:480px}.synoptic-layout{grid-template-columns:1fr}}

/* =======================================================
   RESPONSIVE MOBILE COMPLET - JUMEAU NUMERIQUE
   Ajouté pour conserver la version PC et corriger téléphone/tablette
   ======================================================= */

@media screen and (max-width: 900px) {

    html,
    body {
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: hidden !important;
    }

    body {
        display: block !important;
    }

    .sidebar {
        position: relative !important;
        left: auto !important;
        top: auto !important;
        bottom: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
        padding: 12px !important;
        border-right: none !important;
        border-bottom: 1px solid var(--border) !important;
    }

    .brand {
        justify-content: center !important;
        text-align: center !important;
    }

    .brand h1 {
        font-size: 18px !important;
    }

    .logo {
        width: 46px !important;
        height: 46px !important;
        border-radius: 12px !important;
    }

    .building-chip {
        text-align: center !important;
        margin: 10px 0 !important;
    }

    nav {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
    }

    nav button {
        margin: 0 !important;
        padding: 11px 10px !important;
        font-size: 13px !important;
        text-align: center !important;
    }

    .source {
        margin-top: 12px !important;
        padding: 12px !important;
        font-size: 12px !important;
    }

    .main {
        margin-left: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        padding: 12px !important;
    }

    .topbar {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        margin-bottom: 12px !important;
    }

    .topbar h1 {
        font-size: 20px !important;
        line-height: 1.25 !important;
        letter-spacing: .4px !important;
    }

    .topbar p {
        font-size: 13px !important;
    }

    .controls {
        display: flex !important;
        width: 100% !important;
        flex-direction: column !important;
        align-items: stretch !important;
        justify-content: flex-start !important;
        gap: 8px !important;
    }

    .controls select,
    .clock {
        width: 100% !important;
        max-width: 100% !important;
        padding: 11px 12px !important;
    }

    .kpis {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px !important;
        margin-bottom: 12px !important;
    }

    .kpi {
        padding: 14px !important;
    }

    .kpi b {
        font-size: 24px !important;
        margin-top: 6px !important;
    }

    .grid2,
    .wide-left,
    .synoptic-layout,
    .local-grid,
    .asset-grid,
    .docs-grid,
    .mini-kpis,
    .detail-grid {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 12px !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    .card,
    .panel {
        padding: 14px !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    .card h2,
    .panel h2 {
        font-size: 19px !important;
    }

    .local-card {
        min-height: auto !important;
        padding: 14px !important;
    }

    .local-card .meta {
        grid-template-columns: 1fr !important;
    }

    .synoptic-layout {
        overflow: visible !important;
    }

    .image-card {
        width: 100% !important;
        max-width: 100% !important;
        min-height: 340px !important;
        height: auto !important;
        overflow: hidden !important;
        border-radius: 14px !important;
    }

    .image-card img {
        width: 100% !important;
        height: 340px !important;
        min-height: 340px !important;
        object-fit: cover !important;
        display: block !important;
    }

    #markers {
        position: absolute !important;
        inset: 0 !important;
    }

    .marker {
        width: 22px !important;
        height: 22px !important;
    }

    .marker::after {
        min-width: 135px !important;
        max-width: 170px !important;
        font-size: 11px !important;
        padding: 8px 10px !important;
    }

    .bottom-hud {
        position: relative !important;
        left: auto !important;
        right: auto !important;
        bottom: auto !important;
        margin: 10px !important;
        padding: 10px !important;
        border-radius: 14px !important;
    }

    .hud-tabs {
        display: flex !important;
        flex-wrap: nowrap !important;
        overflow-x: auto !important;
        gap: 7px !important;
        padding-bottom: 4px !important;
        scrollbar-width: thin !important;
    }

    .hud-tabs button {
        flex: 0 0 auto !important;
        white-space: nowrap !important;
        padding: 8px 10px !important;
        font-size: 12px !important;
    }

    .bottom-inspector {
        display: flex !important;
        flex-direction: column !important;
        gap: 8px !important;
        overflow-x: visible !important;
    }

    .hud-card {
        width: 100% !important;
        min-width: 0 !important;
    }

    .panel {
        max-height: none !important;
        overflow: visible !important;
    }

    .filters,
    .toolbar {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 8px !important;
    }

    .filters button,
    .toolbar button {
        width: auto !important;
        flex: 1 1 auto !important;
        text-align: center !important;
        font-size: 12px !important;
    }

    .table {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: auto !important;
        white-space: nowrap !important;
    }

    .table td,
    .table th {
        padding: 10px !important;
        font-size: 12px !important;
    }

    canvas {
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
    }

    .flow-step {
        min-width: 82px !important;
        padding: 7px 8px !important;
        font-size: 10px !important;
    }

    .flow-step::after {
        font-size: 9px !important;
    }
}

@media screen and (max-width: 420px) {

    nav {
        grid-template-columns: 1fr !important;
    }

    .topbar h1 {
        font-size: 18px !important;
    }

    .image-card {
        min-height: 300px !important;
    }

    .image-card img {
        height: 300px !important;
        min-height: 300px !important;
    }

    .marker {
        width: 20px !important;
        height: 20px !important;
    }

    .marker::after {
        max-width: 150px !important;
        min-width: 120px !important;
    }
}

