/* IntelliCore — customer-facing command center */
:root {
    --bg: #06111f;
    --bg2: #0b1f33;
    --card: rgba(12, 28, 48, 0.78);
    --card-solid: #0e2238;
    --primary: #2dd4ff;
    --primary2: #8b5cf6;
    --accent: #22c55e;
    --warning: #f59e0b;
    --danger: #ef4444;
    --text: #eaf6ff;
    --muted: #91a7bd;
    --border: rgba(148, 213, 255, 0.18);
    --shadow: 0 24px 90px rgba(0, 0, 0, 0.42);
}

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

body {
    min-height: 100vh;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--text);
    background:
        radial-gradient(circle at 15% 0%, rgba(45, 212, 255, 0.24), transparent 34rem),
        radial-gradient(circle at 85% 10%, rgba(139, 92, 246, 0.24), transparent 30rem),
        linear-gradient(135deg, var(--bg), var(--bg2) 55%, #030712);
    line-height: 1.5;
}

body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,0.8), transparent 75%);
}

header {
    position: sticky;
    top: 0;
    z-index: 10;
    backdrop-filter: blur(18px);
    background: rgba(4, 13, 24, 0.72);
    border-bottom: 1px solid var(--border);
    padding: 0.95rem 1.5rem;
}

nav { max-width: 1440px; margin: 0 auto; display: flex; align-items: center; gap: 0.9rem; }
header .logo { color: #fff; text-decoration: none; font-weight: 900; font-size: 1.35rem; letter-spacing: -0.04em; }
header .tagline { color: var(--primary); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.18em; }
.nav-link { margin-left:auto; text-decoration:none; color:#ccecff; border:1px solid var(--border); border-radius:999px; padding:.35rem .7rem; font-size:.82rem; }

main { max-width: 1440px; margin: 0 auto; padding: 1.4rem; }
footer { text-align: center; padding: 1.5rem; color: var(--muted); font-size: 0.8rem; }
a { color: var(--primary); }

.hero-shell {
    min-height: 290px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 280px;
    gap: 1.5rem;
    align-items: center;
    padding: clamp(1.4rem, 3vw, 3rem);
    border: 1px solid var(--border);
    border-radius: 32px;
    background: linear-gradient(135deg, rgba(16, 43, 70, 0.86), rgba(10, 20, 38, 0.72)), radial-gradient(circle at 70% 20%, rgba(45, 212, 255, 0.28), transparent 22rem);
    box-shadow: var(--shadow);
    overflow: hidden;
    position: relative;
}
.hero-shell::after { content: ""; position: absolute; inset: auto -80px -130px auto; width: 360px; height: 360px; border-radius: 999px; background: rgba(34,197,94,.16); filter: blur(14px); }
.eyebrow { color: var(--primary); text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.72rem; font-weight: 800; margin-bottom: 0.45rem; }
h1 { font-size: clamp(2.2rem, 5vw, 5.2rem); line-height: 0.92; letter-spacing: -0.07em; margin-bottom: 1rem; }
h2 { font-size: 1.2rem; letter-spacing: -0.03em; }
.hero-subtitle { color: #b8d4e8; max-width: 820px; font-size: 1.08rem; }
.hero-orb { justify-self: center; width: 220px; height: 220px; border-radius: 999px; display: grid; place-items: center; align-content: center; background: radial-gradient(circle at 35% 25%, #67e8f9, #2563eb 45%, #111827 72%); box-shadow: 0 0 80px rgba(45, 212, 255, 0.42); position: relative; }
.hero-orb strong { font-size: 4.5rem; line-height: 1; }
.hero-orb small { color: #dff7ff; text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.75rem; }
.pulse-ring { position: absolute; inset: -18px; border: 1px solid rgba(45,212,255,.35); border-radius: inherit; animation: pulse 2.6s infinite; }
@keyframes pulse { 50% { transform: scale(1.06); opacity: .42; } }

.metric-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0.85rem; margin: 1rem 0; }
.metric-card { border: 1px solid var(--border); border-radius: 22px; padding: 1rem; background: rgba(12, 28, 48, 0.72); box-shadow: 0 12px 40px rgba(0,0,0,.18); }
.metric-card span { display: block; color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .1em; }
.metric-card strong { display: block; margin: .35rem 0 .15rem; font-size: 2rem; letter-spacing: -.05em; }
.metric-card small { color: #9fb6c9; }
.metric-card.primary { background: linear-gradient(135deg, rgba(45,212,255,.22), rgba(12,28,48,.72)); }
.metric-card.warning strong { color: var(--warning); }
.metric-card.danger strong { color: #fb7185; }

.command-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(360px, .65fr); gap: 1rem; margin-bottom: 1rem; }
.glass-panel, .panel { border: 1px solid var(--border); border-radius: 28px; background: var(--card); box-shadow: var(--shadow); padding: 1.15rem; backdrop-filter: blur(18px); margin-bottom: 1rem; }
.panel-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: 1rem; }
.chip { border: 1px solid var(--border); border-radius: 999px; padding: .35rem .7rem; color: #ccecff; background: rgba(45,212,255,.1); font-size: .78rem; }
.chip.live { color: #bbf7d0; background: rgba(34,197,94,.15); }
.muted, .map-note, .empty { color: var(--muted); }

.blueprint-map { min-height: 430px; border-radius: 24px; border: 1px solid rgba(45,212,255,.22); background: linear-gradient(135deg, rgba(2,132,199,.12), rgba(15,23,42,.86)), repeating-linear-gradient(0deg, transparent, transparent 31px, rgba(125,211,252,.08) 32px), repeating-linear-gradient(90deg, transparent, transparent 31px, rgba(125,211,252,.08) 32px); position: relative; overflow: hidden; }
.map-zone { position: absolute; border: 1px solid rgba(125,211,252,.38); background: rgba(8, 47, 73, .58); border-radius: 18px; padding: .8rem; box-shadow: inset 0 0 28px rgba(45,212,255,.06); }
.map-zone span { display:block; color:#dbeafe; font-weight:700; }
.map-zone b { color:var(--primary); font-size:.82rem; }
.waiting { left: 5%; top: 9%; width: 34%; height: 31%; }
.preop { left: 43%; top: 9%; width: 28%; height: 36%; }
.or { right: 5%; top: 13%; width: 20%; height: 48%; border-color: rgba(248,113,113,.55); background: rgba(127,29,29,.35); }
.support { left: 9%; bottom: 9%; width: 58%; height: 36%; }
.roof-rack { position:absolute; right: 5%; bottom: 8%; display:grid; gap:.45rem; }
.roof-rack span { border: 1px solid rgba(34,197,94,.42); background: rgba(20,83,45,.38); border-radius: 999px; padding: .35rem .75rem; color:#dcfce7; font-size:.8rem; }

.premium-form { display: grid; grid-template-columns: 1fr; gap: .55rem; align-items: stretch; }
.scan-controls input, .scan-controls select { width: 100%; padding: .7rem .85rem; border-radius: 14px; border: 1px solid var(--border); background: rgba(2, 8, 23, .54); color: var(--text); }
.scan-controls label { color: var(--muted); font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.scan-controls button { margin-top: .35rem; padding: .8rem 1rem; border: none; border-radius: 16px; color: #03141f; font-weight: 900; cursor: pointer; background: linear-gradient(135deg, var(--primary), #a7f3d0); }
.profile-strip { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem; }
.profile-strip span { border: 1px solid var(--border); border-radius: 999px; padding: .35rem .6rem; color: var(--muted); font-size: .78rem; }
.shortcut-strip { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:.65rem; margin:1rem 0; }
.shortcut-strip > strong { grid-column:1 / -1; color:#dff7ff; font-size:.86rem; text-transform:uppercase; letter-spacing:.1em; }
.shortcut-card { border:1px solid var(--border); border-radius:18px; padding:.75rem; background:rgba(2,8,23,.32); display:grid; gap:.35rem; }
.shortcut-card b { font-size:1.65rem; line-height:1; }
.shortcut-card small, .shortcut-card span { color:var(--muted); font-size:.78rem; }

.drawing-grid { display:grid; grid-template-columns: 1.2fr .9fr .9fr; gap:.8rem; align-items:stretch; }
.drawing-card { min-height: 250px; color: var(--text); text-decoration:none; border:1px solid var(--border); border-radius:20px; overflow:hidden; background:rgba(2,8,23,.44); display:flex; flex-direction:column; }
.drawing-card img { width:100%; height:190px; object-fit:cover; object-position: top left; filter: saturate(1.1) contrast(1.04); border-bottom:1px solid var(--border); }
.drawing-card.featured img { height:260px; }
.drawing-card div { padding:.85rem; }
.drawing-card strong { display:block; margin-bottom:.25rem; }
.drawing-card span { display:block; color:var(--muted); font-size:.86rem; }
.drawing-link { display:flex; align-items:center; justify-content:center; min-height:56px; border:1px dashed rgba(45,212,255,.45); border-radius:18px; text-decoration:none; grid-column:1 / -1; background:rgba(45,212,255,.07); }
.device-card-grid { display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap:.75rem; }
.device-card { color: var(--text); text-decoration: none; border: 1px solid var(--border); border-radius: 18px; padding: .9rem; background: rgba(15,23,42,.48); transition: transform .18s ease, border-color .18s ease; }
.device-card:hover { transform: translateY(-2px); border-color: rgba(45,212,255,.55); }
.device-protocol { display:inline-block; color:var(--primary); font-size:.68rem; text-transform:uppercase; letter-spacing:.12em; margin-bottom:.5rem; }
.device-card h3 { font-size: 1rem; margin-bottom:.2rem; }
.device-card p, .device-card small { color: var(--muted); }

.point-stream { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:.55rem; }
.point-row { display:grid; grid-template-columns: minmax(0, 1fr) auto auto; gap:.6rem; align-items:center; border:1px solid var(--border); border-radius:16px; padding:.65rem .75rem; background:rgba(2,8,23,.36); }
.point-row strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.point-row span, .point-row small { color:var(--muted); font-size:.78rem; }
.point-row b { color:#bbf7d0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.ghost-link { text-decoration:none; border:1px solid var(--border); border-radius:999px; padding:.4rem .7rem; font-size:.82rem; }
.status-box { margin-top: 1rem; padding: .75rem .9rem; border-radius: 16px; font-size: .9rem; border:1px solid var(--border); }
.status-box.info { background: rgba(59,130,246,.14); color:#bfdbfe; }
.status-box.success { background: rgba(34,197,94,.14); color:#bbf7d0; }
.status-box.error { background: rgba(239,68,68,.14); color:#fecaca; }

table { width:100%; border-collapse:collapse; font-size:.875rem; }
th, td { text-align:left; padding:.6rem; border-bottom:1px solid var(--border); }
th { color:var(--muted); text-transform:uppercase; font-size:.72rem; letter-spacing:.08em; }
code { background: rgba(255,255,255,.08); padding:.1em .3em; border-radius:5px; }

@media (max-width: 1100px) {
    .metric-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
    .command-grid { grid-template-columns: 1fr; }
    .drawing-grid { grid-template-columns: 1fr; }
    .device-card-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .point-stream { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
.site-hero { display:flex; justify-content:space-between; gap:1rem; align-items:flex-end; border:1px solid var(--border); border-radius:32px; padding:2rem; margin-bottom:1rem; background:linear-gradient(135deg, rgba(20,83,45,.32), rgba(8,47,73,.5)), radial-gradient(circle at 80% 0%, rgba(45,212,255,.24), transparent 24rem); box-shadow:var(--shadow); }
.site-scorecard { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; min-width:360px; }
.site-scorecard div { border:1px solid var(--border); border-radius:20px; padding:.9rem; text-align:center; background:rgba(2,8,23,.36); }
.site-scorecard strong { display:block; font-size:2rem; line-height:1; }
.site-scorecard span { color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; }
.live-test-layout { display:grid; grid-template-columns:280px minmax(0,1fr); gap:1rem; align-items:start; }
.site-sidebar { position:sticky; top:86px; }
.site-sidebar a { display:block; text-decoration:none; color:var(--text); border:1px solid var(--border); border-radius:14px; padding:.65rem .75rem; margin:.45rem 0; background:rgba(2,8,23,.26); }
.site-sidebar hr { border:none; border-top:1px solid var(--border); margin:1rem 0; }
.graphic-stage { overflow:hidden; }
.plan-frame { position:relative; border-radius:24px; overflow:hidden; border:1px solid var(--border); background:#07111f; max-height:760px; }
.plan-frame img { display:block; width:100%; height:auto; filter:contrast(1.04) saturate(1.05); }
.hotspot { position:absolute; transform:translate(-50%,-50%); border:1px solid rgba(45,212,255,.72); border-radius:999px; padding:.5rem .75rem; color:#eaffff; background:rgba(3,18,32,.86); box-shadow:0 0 28px rgba(45,212,255,.32); cursor:pointer; backdrop-filter:blur(10px); }
.hotspot b, .hotspot span { display:block; line-height:1.05; }
.hotspot span { color:#a7f3d0; font-size:.7rem; margin-top:.15rem; }
.hotspot.critical { border-color:rgba(248,113,113,.8); box-shadow:0 0 30px rgba(248,113,113,.34); }
.hotspot.warning { border-color:rgba(245,158,11,.8); }
.hotspot.equipment { font-weight:900; }
.equipment-board { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; }
.equipment-tile { border:1px solid var(--border); border-radius:20px; padding:.9rem; background:rgba(2,8,23,.38); min-height:190px; }
.equipment-tile.rtu { background:linear-gradient(135deg, rgba(45,212,255,.12), rgba(2,8,23,.38)); }
.equipment-tile.terminal { background:linear-gradient(135deg, rgba(34,197,94,.10), rgba(2,8,23,.38)); }
.equipment-tile.routed { background:linear-gradient(135deg, rgba(139,92,246,.12), rgba(2,8,23,.38)); }
.tile-top { display:flex; justify-content:space-between; gap:.5rem; align-items:center; margin-bottom:.55rem; }
.tile-top span { color:var(--primary); text-transform:uppercase; letter-spacing:.1em; font-size:.68rem; }
.tile-top strong { color:#bbf7d0; }
.equipment-tile h3 { margin-bottom:.25rem; }
.equipment-tile p, .equipment-tile small { color:var(--muted); }
.mini-points { display:flex; flex-wrap:wrap; gap:.25rem; margin-top:.7rem; }
.mini-points em { font-style:normal; font-size:.68rem; color:#ccecff; border:1px solid var(--border); border-radius:999px; padding:.16rem .4rem; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.point-stream.dense { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width: 1100px) {
    .live-test-layout { grid-template-columns:1fr; }
    .site-sidebar { position:static; }
    .equipment-board { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 720px) {
    main { padding: .85rem; }
    .hero-shell { grid-template-columns: 1fr; border-radius: 24px; }
    .hero-orb { width: 170px; height: 170px; }
    .metric-grid, .device-card-grid, .point-stream, .point-stream.dense, .equipment-board { grid-template-columns: 1fr; }
    .site-hero { display:block; }
    .site-scorecard { min-width:0; grid-template-columns:1fr; margin-top:1rem; }
}

/* Supervisor landing cleanup */
.supervisor-hero h1 { max-width: 920px; }
.supervisor-metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.compact-drawings { grid-template-columns: 1fr 1fr; }
.compact-drawings .drawing-card img,
.compact-drawings .drawing-card.featured img { height: 230px; }
.action-list { display:grid; gap:.7rem; }
.action-list a { color:var(--text); text-decoration:none; border:1px solid var(--border); border-radius:18px; padding:.9rem; background:rgba(2,8,23,.34); display:grid; gap:.2rem; }
.action-list a:hover { border-color:rgba(45,212,255,.6); transform:translateY(-1px); }
.action-list strong { font-size:1rem; }
.action-list span { color:var(--muted); font-size:.86rem; }
@media (max-width: 1100px) {
    .supervisor-metrics, .compact-drawings { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
    .supervisor-metrics, .compact-drawings { grid-template-columns: 1fr; }
}

/* BAS operator graphics */
.bas-graphic-hero { display:flex; justify-content:space-between; gap:1rem; align-items:center; border:1px solid var(--border); border-radius:32px; padding:2rem; margin-bottom:1rem; background:linear-gradient(135deg, rgba(8,47,73,.72), rgba(15,23,42,.82)), radial-gradient(circle at 85% 5%, rgba(34,197,94,.2), transparent 24rem); box-shadow:var(--shadow); }
.bas-graphic-hero h1 { font-size:clamp(2.2rem,4vw,4.2rem); }
.bas-status-card { min-width:190px; border:1px solid var(--border); border-radius:24px; padding:1.1rem; text-align:center; background:rgba(2,8,23,.42); }
.bas-status-card strong { display:block; font-size:2rem; letter-spacing:-.04em; }
.bas-status-card.normal strong { color:#86efac; }
.bas-status-card.alarm strong { color:#fca5a5; }
.bas-status-card span { color:var(--muted); font-size:.8rem; text-transform:uppercase; letter-spacing:.08em; }
.bas-shell { display:grid; grid-template-columns:280px minmax(0,1fr); gap:1rem; align-items:start; }
.bas-sidebar { position:sticky; top:86px; }
.bas-sidebar a { display:block; text-decoration:none; color:var(--text); border:1px solid var(--border); border-radius:14px; padding:.68rem .75rem; margin:.45rem 0; background:rgba(2,8,23,.28); }
.bas-sidebar a.active { border-color:rgba(45,212,255,.7); background:rgba(45,212,255,.12); }
.bas-sidebar hr { border:none; border-top:1px solid var(--border); margin:1rem 0; }
.ahu-panel { overflow:hidden; }
.ahu-schematic { position:relative; min-height:560px; border:1px solid rgba(125,211,252,.22); border-radius:28px; background:linear-gradient(135deg, rgba(2,8,23,.88), rgba(8,47,73,.52)); overflow:hidden; }
.air-duct { position:absolute; background:linear-gradient(90deg, rgba(125,211,252,.16), rgba(125,211,252,.08)); border:2px solid rgba(125,211,252,.36); box-shadow: inset 0 0 28px rgba(45,212,255,.08); }
.main-duct { left:7%; right:8%; top:43%; height:92px; border-radius:28px; }
.return-duct { left:8%; width:28%; top:15%; height:70px; border-radius:22px; border-color:rgba(251,146,60,.34); background:rgba(251,146,60,.08); }
.air-label { position:absolute; color:#bfdbfe; text-transform:uppercase; letter-spacing:.12em; font-size:.72rem; font-weight:900; }
.air-label.outside { left:8%; top:37%; }
.air-label.return { left:9%; top:10%; color:#fed7aa; }
.air-arrow { position:absolute; color:#7dd3fc; font-size:2.2rem; z-index:3; text-shadow:0 0 18px rgba(45,212,255,.6); }
.a1 { left:17%; top:47%; } .a2 { left:39%; top:47%; } .a3 { left:61%; top:47%; } .a4 { right:9%; top:47%; }
.component { position:absolute; z-index:4; min-width:132px; border:1px solid var(--border); border-radius:18px; padding:.75rem; background:rgba(3,18,32,.92); box-shadow:0 18px 44px rgba(0,0,0,.26); }
.component span, .served-zone-card span { display:block; color:var(--muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; }
.component strong, .served-zone-card strong { display:block; color:#eaffff; font-size:1.35rem; line-height:1.1; margin:.2rem 0; }
.component small, .served-zone-card small { color:#93a9bd; }
.oa-damper { left:9%; top:50%; } .ra-damper { left:22%; top:13%; }
.filter-bank { left:25%; top:34%; border-color:rgba(203,213,225,.38); }
.cooling-coil { left:43%; top:34%; border-color:rgba(59,130,246,.62); background:linear-gradient(135deg, rgba(37,99,235,.24), rgba(3,18,32,.92)); }
.heating-coil { left:55%; top:58%; border-color:rgba(248,113,113,.62); background:linear-gradient(135deg, rgba(185,28,28,.22), rgba(3,18,32,.92)); }
.supply-fan { left:69%; top:34%; border-color:rgba(34,197,94,.56); }
.fan-wheel { width:64px; height:64px; border:2px solid rgba(34,197,94,.58); border-radius:999px; display:grid; place-items:center; margin:.35rem auto; color:#86efac; font-size:2rem; }
.supply-fan.running .fan-wheel { animation:spin 1.4s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.mixed-air { left:34%; top:61%; } .supply-air { right:9%; top:34%; } .static-pressure { right:9%; top:61%; }
.served-zone-card { position:absolute; right:9%; bottom:7%; z-index:4; border:1px solid rgba(139,92,246,.5); border-radius:18px; padding:.75rem; background:rgba(49,46,129,.28); min-width:170px; }
.bas-bottom-grid { display:grid; grid-template-columns:1.15fr .85fr; gap:1rem; }
.slot-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.65rem; }
.slot-card { border:1px solid var(--border); border-radius:16px; padding:.75rem; background:rgba(2,8,23,.34); position:relative; }
.slot-card.missing { border-style:dashed; opacity:.72; }
.slot-card span { display:block; color:var(--muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; }
.slot-card strong { display:block; margin:.2rem 0; color:#dff7ff; }
.slot-card small { color:var(--muted); }

/* BAS graphics binding-health overlay — operator must immediately know
   whether values on the screen are bound, stale, demo, or missing. */
.slot-card--bound { border-color:rgba(34,197,94,.42); }
.slot-card--stale { border-color:rgba(234,179,8,.55); }
.slot-card--demo { border-color:rgba(125,211,252,.5); border-style:dashed; background:linear-gradient(180deg, rgba(2,8,23,.34), rgba(56,189,248,.06)); }
.slot-card--missing { border-style:dashed; opacity:.78; }
.binding-pip { position:absolute; top:.5rem; right:.55rem; display:inline-flex; align-items:center; gap:.3rem; font-style:normal; font-size:.58rem; letter-spacing:.1em; text-transform:uppercase; padding:.15rem .45rem; border-radius:999px; border:1px solid var(--border); background:rgba(2,8,23,.55); color:var(--muted); }
.binding-pip::before { content:""; width:.45rem; height:.45rem; border-radius:50%; background:currentColor; display:inline-block; }
.binding-pip--bound { color:#86efac; border-color:rgba(34,197,94,.5); }
.binding-pip--stale { color:#fde68a; border-color:rgba(234,179,8,.55); }
.binding-pip--demo { color:#7dd3fc; border-color:rgba(125,211,252,.5); }
.binding-pip--missing { color:#fca5a5; border-color:rgba(248,113,113,.5); }

.bas-binding-health { display:grid; grid-template-columns:1.4fr 1fr; gap:1rem; align-items:center; margin:0 0 1rem 0; padding:1rem 1.2rem; border:1px solid var(--border); border-radius:24px; background:rgba(2,8,23,.42); box-shadow:var(--shadow); }
.bas-binding-health__lead p.eyebrow { margin:0; }
.bas-binding-health__lead strong { display:block; font-size:1.5rem; letter-spacing:-.02em; margin:.15rem 0 .25rem; }
.bas-binding-health__lead span { color:var(--muted); font-size:.85rem; }
.bas-binding-health--bound .bas-binding-health__lead strong { color:#86efac; }
.bas-binding-health--stale .bas-binding-health__lead strong { color:#fde68a; }
.bas-binding-health--demo { border-color:rgba(125,211,252,.45); }
.bas-binding-health--demo .bas-binding-health__lead strong { color:#7dd3fc; }
.bas-binding-health--missing { border-color:rgba(248,113,113,.45); }
.bas-binding-health--missing .bas-binding-health__lead strong { color:#fca5a5; }
.bas-binding-health__counts { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.5rem; }
.bas-binding-pip { display:flex; flex-direction:column; align-items:flex-start; gap:.15rem; padding:.5rem .65rem; border:1px solid var(--border); border-radius:14px; background:rgba(2,8,23,.34); }
.bas-binding-pip i { width:.55rem; height:.55rem; border-radius:50%; background:currentColor; display:inline-block; }
.bas-binding-pip span { color:var(--muted); font-size:.6rem; text-transform:uppercase; letter-spacing:.12em; }
.bas-binding-pip b { color:#dff7ff; font-size:1.1rem; }
.bas-binding-pip--bound { color:#86efac; border-color:rgba(34,197,94,.4); }
.bas-binding-pip--stale { color:#fde68a; border-color:rgba(234,179,8,.45); }
.bas-binding-pip--demo { color:#7dd3fc; border-color:rgba(125,211,252,.4); }
.bas-binding-pip--missing { color:#fca5a5; border-color:rgba(248,113,113,.45); }
@media (max-width:720px) {
    .bas-binding-health { grid-template-columns:1fr; }
    .bas-binding-health__counts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
.operator-insights { padding-left:1.1rem; color:#ccecff; display:grid; gap:.65rem; }
.zone-card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.zone-card { border:1px solid var(--border); border-radius:24px; background:rgba(12,28,48,.82); padding:1rem; box-shadow:var(--shadow); }
.zone-card.alarm { border-color:rgba(248,113,113,.58); }
.zone-top { display:flex; justify-content:space-between; gap:.7rem; align-items:flex-start; }
.zone-temp-row { display:grid; grid-template-columns:1fr 1fr; gap:.65rem; margin:1rem 0; }
.zone-temp-row div { border:1px solid var(--border); border-radius:18px; padding:.8rem; background:rgba(2,8,23,.34); }
.zone-temp-row span { color:var(--muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; }
.zone-temp-row strong { display:block; font-size:1.7rem; color:#eaffff; }
.vav-box { position:relative; height:92px; border:1px solid rgba(125,211,252,.22); border-radius:18px; background:rgba(2,8,23,.3); overflow:hidden; }
.mini-duct { position:absolute; left:8%; right:8%; top:37px; height:26px; border:1px solid rgba(125,211,252,.45); background:rgba(125,211,252,.08); border-radius:999px; }
.mini-damper { position:absolute; left:39%; top:25px; width:8px; height:48px; background:#7dd3fc; transform:rotate(var(--damper-angle)); transform-origin:center; box-shadow:0 0 18px rgba(45,212,255,.7); }
.mini-air { position:absolute; left:58%; top:29px; color:#7dd3fc; font-size:1.6rem; }
.reheat-coil { position:absolute; right:16%; top:26px; width:30px; height:42px; border-left:4px solid #f97316; border-right:4px solid #f97316; }
.zone-points { display:grid; grid-template-columns:1fr 1fr; gap:.45rem; margin:.8rem 0; }
.zone-points span { color:var(--muted); border:1px solid var(--border); border-radius:999px; padding:.35rem .55rem; font-size:.78rem; }
.zone-points b { color:#dff7ff; }
.bas-preview-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; margin-top:1rem; }
.bas-preview-card { min-height:180px; color:var(--text); text-decoration:none; border:1px solid var(--border); border-radius:22px; padding:1rem; background:linear-gradient(135deg, rgba(45,212,255,.16), rgba(2,8,23,.48)); display:flex; flex-direction:column; justify-content:flex-end; }
.bas-preview-card strong { font-size:1.25rem; }
.bas-preview-card span { color:var(--muted); margin-top:.35rem; }
.bas-preview-card.muted-card { background:rgba(2,8,23,.34); }
@media (max-width:1100px) { .bas-shell, .bas-bottom-grid { grid-template-columns:1fr; } .bas-sidebar { position:static; } .zone-card-grid, .slot-grid, .bas-preview-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:720px) { .bas-graphic-hero { display:block; } .bas-status-card { margin-top:1rem; } .ahu-schematic { min-height:760px; } .component { position:relative; left:auto!important; right:auto!important; top:auto!important; margin:.6rem; } .air-duct,.air-arrow,.air-label,.served-zone-card { display:none; } .zone-card-grid,.slot-grid,.bas-preview-grid { grid-template-columns:1fr; } }

/* Actual RTU equipment graphic */
.rtu-equipment-panel { overflow:hidden; }
.rtu-equipment-stage { position:relative; min-height:640px; border:1px solid rgba(125,211,252,.22); border-radius:30px; background:linear-gradient(180deg, rgba(56,189,248,.12), rgba(15,23,42,.86) 48%, rgba(2,6,23,.96)); overflow:hidden; perspective:900px; }
.roof-surface { position:absolute; left:-10%; right:-10%; bottom:-16%; height:42%; background:linear-gradient(135deg, #263442, #111827); transform:rotateX(62deg); transform-origin:bottom; border-top:2px solid rgba(148,163,184,.28); }
.rtu-shadow { position:absolute; left:16%; right:16%; top:69%; height:52px; border-radius:50%; background:rgba(0,0,0,.46); filter:blur(18px); }
.rtu-body { position:absolute; left:8%; right:8%; top:18%; height:330px; transform:skewX(-6deg); border:2px solid rgba(203,213,225,.34); border-radius:22px; background:linear-gradient(145deg, #d6dde5, #788797 48%, #3b4756); box-shadow:0 42px 95px rgba(0,0,0,.48), inset 0 2px 0 rgba(255,255,255,.42); display:grid; grid-template-columns:1.05fr .9fr 1fr .9fr 1.05fr; gap:8px; padding:22px 22px 32px; }
.rtu-top-lid { position:absolute; left:3%; right:3%; top:-34px; height:58px; border-radius:18px 18px 8px 8px; background:linear-gradient(145deg, #eef2f7, #94a3b8); border:1px solid rgba(255,255,255,.45); box-shadow:inset 0 2px 0 rgba(255,255,255,.7); }
.rtu-section { position:relative; border:1px solid rgba(15,23,42,.35); border-radius:16px; background:linear-gradient(180deg, rgba(15,23,42,.16), rgba(15,23,42,.42)); padding:.75rem; color:#07111f; overflow:hidden; }
.rtu-section span, .rtu-condenser-bank span { display:block; font-size:.66rem; font-weight:900; text-transform:uppercase; letter-spacing:.09em; color:#172033; }
.rtu-section b { display:block; margin:.4rem 0 .1rem; font-size:1.15rem; color:#02111f; }
.rtu-section small { color:#263442; font-size:.68rem; }
.louver-stack { display:grid; gap:7px; margin:.8rem 0; }
.louver-stack i { height:9px; display:block; border-radius:999px; background:linear-gradient(90deg, #1e293b, #64748b); box-shadow:0 2px 0 rgba(255,255,255,.35); }
.filter-media { display:flex; gap:6px; height:82px; margin:.8rem 0; }
.filter-media i { flex:1; border-radius:4px; background:repeating-linear-gradient(135deg, #e2e8f0, #e2e8f0 5px, #94a3b8 6px, #94a3b8 10px); border:1px solid rgba(15,23,42,.24); }
.coil-face { height:86px; margin:.8rem 0; border-radius:10px; background:repeating-linear-gradient(90deg, #60a5fa, #60a5fa 5px, #1d4ed8 8px, #1d4ed8 13px); box-shadow:inset 0 0 18px rgba(2,6,23,.32); }
.burner-tubes { display:grid; gap:10px; margin:1rem 0; }
.burner-tubes i { height:14px; border-radius:999px; background:linear-gradient(90deg, #7f1d1d, #f97316, #7f1d1d); box-shadow:0 0 18px rgba(249,115,22,.36); }
.rtu-fan { width:86px; height:86px; margin:.6rem auto; border-radius:999px; border:9px solid #1f2937; display:grid; place-items:center; background:radial-gradient(circle, #e2e8f0, #64748b); color:#111827; font-size:2.2rem; box-shadow:inset 0 0 18px rgba(0,0,0,.4); }
.rtu-fan.running { animation:spin 1.2s linear infinite; }
.rtu-condenser-bank { position:absolute; right:8%; top:-92px; width:260px; height:86px; border:2px solid rgba(203,213,225,.34); border-radius:18px; background:linear-gradient(145deg, #cbd5e1, #64748b); padding:.65rem; }
.condenser-fans { display:flex; gap:18px; justify-content:center; margin-top:.25rem; }
.condenser-fans i { width:46px; height:46px; border-radius:999px; display:grid; place-items:center; border:6px solid #1f2937; color:#111827; background:#e2e8f0; font-style:normal; animation:spin 1.6s linear infinite; }
.rtu-airflow { position:absolute; z-index:6; border:1px solid rgba(125,211,252,.5); border-radius:999px; padding:.55rem .8rem; background:rgba(3,18,32,.84); color:#dff7ff; font-weight:900; box-shadow:0 0 28px rgba(45,212,255,.22); }
.rtu-airflow.supply { right:8%; top:58%; }
.rtu-airflow.return { left:9%; top:58%; color:#fed7aa; border-color:rgba(251,146,60,.42); }
.rtu-value { position:absolute; z-index:7; min-width:170px; border:1px solid var(--border); border-radius:18px; padding:.8rem; background:rgba(3,18,32,.9); box-shadow:0 18px 44px rgba(0,0,0,.28); }
.rtu-value span { display:block; color:var(--muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; }
.rtu-value strong { display:block; margin:.2rem 0; font-size:1.45rem; color:#eaffff; }
.rtu-value small { color:#93a9bd; }
.rtu-value.sat { right:8%; top:72%; } .rtu-value.oat { left:8%; top:72%; } .rtu-value.static { left:42%; top:75%; }
@media (max-width:900px) { .rtu-equipment-stage { min-height:920px; } .rtu-body { position:relative; left:auto; right:auto; top:80px; margin:0 1rem; height:auto; transform:none; grid-template-columns:1fr; } .rtu-condenser-bank,.rtu-airflow,.rtu-value { position:relative; left:auto!important; right:auto!important; top:auto!important; margin:.75rem 1rem; } }

/* Actual VAV terminal-unit graphic */
.vav-equipment-panel { overflow:hidden; }
.vav-equipment-stage { position:relative; min-height:590px; border:1px solid rgba(125,211,252,.22); border-radius:30px; background:linear-gradient(180deg, rgba(15,23,42,.92), rgba(8,47,73,.62)); overflow:hidden; }
.vav-ceiling-grid { position:absolute; inset:0; opacity:.16; background-image:linear-gradient(rgba(255,255,255,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.2) 1px, transparent 1px); background-size:42px 42px; }
.vav-main-duct { position:absolute; left:6%; right:56%; top:33%; height:118px; border:2px solid rgba(203,213,225,.38); border-radius:34px 0 0 34px; background:linear-gradient(180deg, #94a3b8, #475569 54%, #1e293b); box-shadow:inset 0 2px 0 rgba(255,255,255,.32), 0 24px 52px rgba(0,0,0,.32); }
.vav-inlet-label { position:absolute; left:18px; top:-32px; color:#bfdbfe; text-transform:uppercase; letter-spacing:.11em; font-size:.72rem; font-weight:900; }
.airflow-chevrons { position:absolute; left:18%; top:34px; display:flex; gap:18px; color:#7dd3fc; font-size:2rem; text-shadow:0 0 18px rgba(45,212,255,.55); }
.vav-box-body { position:absolute; left:38%; top:25%; width:265px; height:220px; border:2px solid rgba(226,232,240,.48); border-radius:24px; background:linear-gradient(145deg, #e2e8f0, #8796a8 48%, #475569); box-shadow:0 38px 85px rgba(0,0,0,.42), inset 0 2px 0 rgba(255,255,255,.58); }
.vav-box-top { position:absolute; left:10%; right:10%; top:-22px; height:38px; border-radius:14px 14px 6px 6px; background:linear-gradient(145deg, #f8fafc, #94a3b8); border:1px solid rgba(255,255,255,.55); }
.vav-flow-ring { position:absolute; left:18px; top:54px; width:76px; height:92px; border:7px solid #334155; border-radius:50%; background:rgba(15,23,42,.14); display:grid; place-items:center; text-align:center; padding:.35rem; }
.vav-flow-ring span { color:#172033; font-size:.55rem; text-transform:uppercase; letter-spacing:.06em; font-weight:900; }
.vav-flow-ring b { color:#02111f; font-size:.78rem; }
.vav-damper-blade { position:absolute; left:126px; top:38px; width:13px; height:145px; border-radius:999px; background:linear-gradient(180deg, #0f172a, #64748b); transform:rotate(var(--vav-damper-angle)); transform-origin:center; box-shadow:0 0 18px rgba(15,23,42,.45); }
.vav-actuator { position:absolute; left:103px; top:4px; width:62px; height:34px; border-radius:10px; background:linear-gradient(145deg, #1e293b, #020617); box-shadow:0 8px 20px rgba(0,0,0,.35); }
.vav-damper-label { position:absolute; right:12px; bottom:12px; width:112px; border:1px solid rgba(15,23,42,.28); border-radius:14px; padding:.5rem; background:rgba(248,250,252,.44); }
.vav-damper-label span { display:block; color:#172033; font-size:.58rem; text-transform:uppercase; letter-spacing:.08em; font-weight:900; }
.vav-damper-label b { display:block; color:#02111f; }
.vav-damper-label small { color:#334155; }
.vav-reheat-box { position:absolute; left:58%; top:30%; width:210px; height:150px; border:2px solid rgba(248,113,113,.46); border-radius:20px; background:linear-gradient(145deg, #fed7aa, #c2410c 56%, #7c2d12); box-shadow:0 30px 70px rgba(0,0,0,.34); padding:.8rem; color:#111827; }
.vav-reheat-box span { display:block; color:#431407; font-size:.66rem; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.vav-reheat-box b { display:block; margin:.3rem 0 .1rem; color:#111827; font-size:1.1rem; }
.vav-reheat-box small { color:#431407; }
.vav-reheat-coil { display:flex; gap:10px; margin:.75rem 0; height:50px; }
.vav-reheat-coil i { flex:1; border-radius:999px; background:linear-gradient(180deg, #7f1d1d, #fb923c, #7f1d1d); box-shadow:0 0 16px rgba(249,115,22,.42); }
.vav-discharge-duct { position:absolute; left:72%; right:6%; top:36%; height:84px; border:2px solid rgba(203,213,225,.38); border-radius:0 28px 28px 0; background:linear-gradient(180deg, #94a3b8, #475569 54%, #1e293b); display:flex; align-items:center; justify-content:center; color:#dff7ff; font-weight:900; }
.vav-value { position:absolute; z-index:5; min-width:180px; border:1px solid var(--border); border-radius:18px; padding:.8rem; background:rgba(3,18,32,.9); box-shadow:0 18px 44px rgba(0,0,0,.28); }
.vav-value.discharge { right:8%; top:58%; }
.vav-value span { display:block; color:var(--muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; }
.vav-value strong { display:block; margin:.2rem 0; font-size:1.45rem; color:#eaffff; }
.vav-value small { color:#93a9bd; }
.vav-zone-panel { position:absolute; left:8%; right:8%; bottom:6%; border:1px solid var(--border); border-radius:24px; padding:1rem; background:rgba(3,18,32,.84); box-shadow:0 18px 44px rgba(0,0,0,.28); }
@media (max-width:950px) { .vav-equipment-stage { min-height:900px; } .vav-main-duct,.vav-box-body,.vav-reheat-box,.vav-discharge-duct,.vav-value,.vav-zone-panel { position:relative; left:auto!important; right:auto!important; top:auto!important; bottom:auto!important; margin:1rem; width:auto; } .vav-box-body { height:220px; } }

/* Clean rendered floorplan graphic */
.clean-floorplan-panel { overflow:hidden; }
.clean-floorplan-stage { position:relative; border-radius:28px; border:1px solid var(--border); background:#f8fafc; overflow:hidden; min-height:520px; display:grid; place-items:center; padding:1.2rem; }
.clean-floorplan-stage img { width:100%; max-width:1120px; height:auto; image-rendering:auto; filter:contrast(1.03) saturate(1.04); border-radius:18px; box-shadow:0 24px 70px rgba(0,0,0,.25); }
.floor-zone-pill { position:absolute; transform:translate(-50%,-50%); z-index:3; text-decoration:none; color:#f8fbff; min-width:132px; border:1px solid rgba(255,255,255,.42); border-radius:18px; padding:.55rem .7rem; background:rgba(3,18,32,.82); box-shadow:0 16px 36px rgba(0,0,0,.28), 0 0 0 4px rgba(45,212,255,.08); backdrop-filter:blur(10px); }
.floor-zone-pill strong { display:block; font-size:.9rem; line-height:1.05; }
.floor-zone-pill span { display:block; color:#cdefff; font-size:.72rem; margin-top:.16rem; }
.floor-zone-pill.normal { border-color:rgba(34,197,94,.72); box-shadow:0 16px 36px rgba(0,0,0,.28), 0 0 26px rgba(34,197,94,.2); }
.floor-zone-pill.warm { border-color:rgba(245,158,11,.82); box-shadow:0 16px 36px rgba(0,0,0,.28), 0 0 26px rgba(245,158,11,.22); }
.floor-zone-pill.critical { border-color:rgba(59,130,246,.82); box-shadow:0 16px 36px rgba(0,0,0,.28), 0 0 26px rgba(59,130,246,.22); }
.zone-list-table { display:grid; gap:.55rem; }
.zone-list-row { display:grid; grid-template-columns:1fr auto 1.1fr; gap:.75rem; align-items:center; text-decoration:none; color:var(--text); border:1px solid var(--border); border-radius:16px; padding:.75rem; background:rgba(2,8,23,.34); }
.zone-list-row strong { color:#eaffff; }
.zone-list-row small { color:var(--muted); text-align:right; }
.zone-list-row.warm { border-color:rgba(245,158,11,.45); }
.zone-list-row.critical { border-color:rgba(59,130,246,.45); }
@media (max-width:720px) { .clean-floorplan-stage { min-height:420px; padding:.5rem; } .floor-zone-pill { position:relative; left:auto!important; top:auto!important; transform:none; display:block; margin:.4rem; } .clean-floorplan-stage { display:block; } .zone-list-row { grid-template-columns:1fr; } .zone-list-row small { text-align:left; } }

/* Houston South generated 3D BAS floorplan recreation */
.generated-floorplan-panel { overflow:hidden; }
.generated-floorplan-stage { position:relative; height:690px; border:1px solid var(--border); border-radius:30px; background:linear-gradient(180deg,#edf4f8,#cbd5df 80%,#b8c4cf); overflow:hidden; box-shadow:inset 0 0 80px rgba(15,23,42,.14); }
.floor-slab { position:absolute; left:2%; right:2%; bottom:3%; height:88%; background:linear-gradient(135deg,#eff6fb,#d5e1e9); clip-path:polygon(3% 2%, 95% 2%, 100% 92%, 0 92%); border-radius:18px; box-shadow:0 34px 80px rgba(15,23,42,.28); }
.gen-room { position:absolute; z-index:2; display:grid; place-items:center; text-align:center; text-decoration:none; color:#050b12; border:2px solid rgba(255,255,255,.75); box-shadow:inset 0 8px 20px rgba(255,255,255,.35), inset 0 -12px 20px rgba(15,23,42,.10), 8px 10px 0 rgba(35,45,55,.22); transform:skewX(-4deg); }
.gen-room span { white-space:pre-line; font-size:clamp(.72rem,1.2vw,1.2rem); line-height:1.05; text-shadow:0 1px 0 rgba(255,255,255,.55); transform:skewX(4deg); }
.gen-room.zone-blue { background:linear-gradient(135deg,#9bd8ff,#63b8ef); }
.gen-room.zone-purple { background:linear-gradient(135deg,#b7b5ff,#8f8df4); }
.gen-room.zone-pink { background:linear-gradient(135deg,#ffb3db,#f37ac4); }
.gen-room.zone-yellow { background:linear-gradient(135deg,#ffff9b,#f5ef48); }
.gen-room.zone-green { background:linear-gradient(135deg,#b7ffbd,#62ee73); }
.gen-room.zone-red { background:linear-gradient(135deg,#ffc2c2,#f08f91); }
.gen-room.zone-neutral { background:linear-gradient(135deg,#dbe4ea,#aab8c2); }
.gen-wall { position:absolute; z-index:4; background:linear-gradient(90deg,#f8fafc,#9aa8b2); box-shadow:5px 6px 0 rgba(15,23,42,.25), inset 0 1px 0 rgba(255,255,255,.8); border:1px solid rgba(70,80,90,.25); }
.gen-wall.vertical { background:linear-gradient(180deg,#f8fafc,#9aa8b2); }
.floor-callout { position:absolute; z-index:8; transform:translate(-50%,-50%); min-width:92px; text-align:center; text-decoration:none; color:#112033; background:#f8fbff; border:3px solid #152a57; border-radius:6px; box-shadow:0 9px 18px rgba(15,23,42,.28); padding:.25rem .38rem .32rem; }
.floor-callout::after { content:""; position:absolute; left:50%; bottom:-10px; transform:translateX(-50%); border-left:8px solid transparent; border-right:8px solid transparent; border-top:10px solid #152a57; }
.floor-callout strong { display:block; margin:-.25rem -.38rem .2rem; padding:.2rem .35rem; background:#152a57; color:#fff; font-size:.78rem; line-height:1; }
.floor-callout span { display:block; font-size:.55rem; color:#34445a; }
.floor-callout b { display:block; color:#152a57; font-size:1rem; line-height:1.15; }
.floor-callout.alarm b { color:#ef4444; }
.floor-callout.warning b { color:#d97706; }
.floor-callout.normal b { color:#152a57; }
@media (max-width:900px) { .generated-floorplan-stage { height:980px; overflow:auto; } .floor-callout { min-width:82px; } .floor-callout b { font-size:.85rem; } .gen-room span { font-size:.72rem; } }

/* RTU summary page */
.rtu-summary-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.85rem; }
.rtu-summary-card { color:var(--text); text-decoration:none; border:1px solid var(--border); border-radius:24px; padding:1rem; background:rgba(12,28,48,.78); box-shadow:0 18px 48px rgba(0,0,0,.24); display:flex; flex-direction:column; gap:.75rem; min-height:360px; }
.rtu-summary-card.online { border-color:rgba(34,197,94,.38); }
.rtu-summary-card.alarm { border-color:rgba(248,113,113,.65); }
.rtu-summary-card.missing { border-style:dashed; opacity:.72; }
.rtu-card-top { display:flex; justify-content:space-between; gap:.7rem; align-items:flex-start; }
.rtu-card-top h2 { font-size:1.55rem; }
.rtu-card-top strong { width:34px; height:34px; border-radius:999px; display:grid; place-items:center; background:rgba(239,68,68,.16); color:#fecaca; }
.rtu-mini-unit { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:4px; height:74px; border:1px solid rgba(203,213,225,.24); border-radius:16px; padding:7px; background:linear-gradient(145deg,#dbe4ed,#5f7183); box-shadow:inset 0 2px 0 rgba(255,255,255,.38); }
.rtu-mini-unit > div { border-radius:8px; background:rgba(15,23,42,.25); border:1px solid rgba(15,23,42,.22); }
.mini-filter { background:repeating-linear-gradient(135deg,#e2e8f0,#e2e8f0 5px,#94a3b8 6px,#94a3b8 10px)!important; }
.mini-coil { background:repeating-linear-gradient(90deg,#60a5fa,#60a5fa 5px,#1d4ed8 8px,#1d4ed8 13px)!important; }
.mini-fan { display:grid; place-items:center; color:#0f172a; background:radial-gradient(circle,#e2e8f0,#64748b)!important; animation:spin 1.8s linear infinite; }
.rtu-summary-card p { color:#ccecff; min-height:70px; }
.rtu-kpi-row { display:grid; gap:.35rem; }
.rtu-kpi-row span { display:flex; justify-content:space-between; gap:.5rem; border:1px solid var(--border); border-radius:999px; padding:.32rem .55rem; color:var(--muted); font-size:.78rem; }
.rtu-kpi-row b { color:#eaffff; }
.terminal-strip { display:flex; flex-wrap:wrap; gap:.25rem; }
.terminal-strip em { font-style:normal; font-size:.68rem; border:1px solid var(--border); border-radius:999px; padding:.15rem .38rem; color:#dff7ff; background:rgba(2,8,23,.25); }
.rtu-summary-card small { margin-top:auto; color:var(--muted); }
@media (max-width:1200px) { .rtu-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:720px) { .rtu-summary-grid { grid-template-columns:1fr; } }

/* Customer-facing polish pass — cleaner nav, simpler portal, safer BAS graphics */
:root {
    --surface: rgba(8, 20, 34, 0.86);
    --surface-strong: rgba(12, 28, 48, 0.94);
    --ring: rgba(45, 212, 255, 0.42);
}

header { padding: .85rem 1.25rem; }
nav { justify-content: space-between; gap: 1rem; }
.brand-lockup { display:flex; align-items:baseline; gap:.75rem; min-width: max-content; }
.nav-actions { display:flex; align-items:center; justify-content:flex-end; gap:.45rem; flex-wrap:wrap; }
.nav-link { margin-left:0; background:rgba(255,255,255,.035); transition:background .18s ease, border-color .18s ease, transform .18s ease; }
.nav-link:hover { background:rgba(45,212,255,.12); border-color:rgba(45,212,255,.55); transform:translateY(-1px); }
.nav-link.nav-primary { color:#03141f; border-color:transparent; background:linear-gradient(135deg, var(--primary), #a7f3d0); font-weight:900; }
.nav-link.nav-muted { color:#9fb6c9; }

button, .button-link, .card-link { font:inherit; }
button, .button-link { display:inline-flex; align-items:center; justify-content:center; min-height:44px; border:none; border-radius:16px; padding:.72rem 1rem; font-weight:900; cursor:pointer; text-decoration:none; }
.button-link.primary, .scan-controls button { color:#03141f; background:linear-gradient(135deg, var(--primary), #a7f3d0); box-shadow:0 14px 34px rgba(45,212,255,.18); }
.button-link.secondary, .quiet-button { color:#dff7ff; border:1px solid var(--border); background:rgba(255,255,255,.045); }
button:hover, .button-link:hover, .card-link:hover { transform:translateY(-1px); }
.hero-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1.25rem; }

.landing-hero { grid-template-columns:minmax(0, 1fr) 320px; min-height:380px; }
.landing-hero h1 { max-width:820px; }
.landing-orb { justify-self:center; width:250px; height:250px; border-radius:44px; display:grid; place-items:center; align-content:center; gap:.35rem; background:linear-gradient(145deg, rgba(45,212,255,.95), rgba(139,92,246,.72) 56%, rgba(3,18,32,.92)); box-shadow:0 34px 90px rgba(45,212,255,.26); transform:rotate(-4deg); }
.landing-orb span { font-size:4.4rem; font-weight:950; letter-spacing:-.08em; }
.landing-orb small { text-transform:uppercase; letter-spacing:.14em; color:#eaffff; font-weight:800; }
.platform-grid { display:grid; grid-template-columns:1.2fr .8fr; gap:1rem; margin-top:1rem; }
.platform-card { border:1px solid var(--border); border-radius:30px; padding:1.35rem; background:var(--surface); box-shadow:var(--shadow); display:grid; gap:.75rem; }
.platform-card.featured { background:linear-gradient(135deg, rgba(45,212,255,.16), rgba(12,28,48,.88)); }
.platform-kicker { color:var(--primary); font-size:.72rem; text-transform:uppercase; letter-spacing:.16em; font-weight:900; }
.platform-card p, .platform-card li { color:#b8d4e8; }
.platform-card ul { padding-left:1.1rem; display:grid; gap:.25rem; }
.card-link { color:#dff7ff; text-decoration:none; font-weight:900; margin-top:.35rem; }

.auth-layout { min-height:calc(100vh - 170px); display:grid; grid-template-columns:minmax(0, 1fr) minmax(360px, 500px); gap:1rem; align-items:center; padding:clamp(.5rem, 4vw, 3rem) 0; }
.auth-copy { min-height:420px; display:flex; flex-direction:column; justify-content:center; background:linear-gradient(135deg, rgba(16,43,70,.92), rgba(10,20,38,.78)), radial-gradient(circle at 75% 18%, rgba(45,212,255,.22), transparent 23rem); }
.auth-copy h1 { max-width:760px; }
.login-card { margin:0; padding:1.4rem; }
.small-note { font-size:.82rem; margin-top:1rem; }
.safety-banner { display:inline-flex; align-items:center; gap:.7rem; align-self:flex-start; margin-top:1.35rem; border:1px solid rgba(34,197,94,.46); border-radius:18px; padding:.65rem .85rem; background:rgba(34,197,94,.12); color:#dcfce7; }
.safety-banner strong { font-size:1rem; }
.safety-banner span { color:#a7f3d0; font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; font-weight:800; }
.safety-banner.compact { margin-top:0; display:flex; flex-direction:column; gap:.12rem; align-items:center; text-align:center; }
.status-box.danger { background:rgba(239,68,68,.14); color:#fecaca; border-color:rgba(239,68,68,.36); }

.portal-hero, .site-detail-hero { min-height:310px; }
.portal-hero-actions, .site-health-stack, .graphic-hero-stack { display:grid; gap:.8rem; justify-items:end; }
.site-card-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:.85rem; }
.site-card { min-height:230px; color:var(--text); text-decoration:none; border:1px solid var(--border); border-radius:24px; padding:1rem; background:linear-gradient(135deg, rgba(45,212,255,.10), rgba(2,8,23,.38)); display:flex; flex-direction:column; gap:.55rem; transition:transform .18s ease, border-color .18s ease, background .18s ease; }
.site-card:hover { transform:translateY(-3px); border-color:rgba(45,212,255,.62); background:linear-gradient(135deg, rgba(45,212,255,.16), rgba(2,8,23,.5)); }
.site-card h3 { font-size:1.35rem; letter-spacing:-.04em; }
.site-card p { color:#b8d4e8; }
.site-card small { margin-top:auto; color:var(--primary); font-weight:900; }
.site-card-metrics { display:grid; grid-template-columns:repeat(3,1fr); gap:.4rem; margin-top:.3rem; }
.site-card-metrics span { border:1px solid var(--border); border-radius:14px; padding:.5rem; color:var(--muted); font-size:.76rem; background:rgba(2,8,23,.3); }
.site-card-metrics b { display:block; color:#eaffff; font-size:1.25rem; }
.quick-action-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:.65rem; }
.quick-action { color:var(--text); text-decoration:none; border:1px solid var(--border); border-radius:18px; padding:.85rem; background:rgba(2,8,23,.34); transition:transform .18s ease, border-color .18s ease; }
.quick-action:hover { transform:translateY(-2px); border-color:rgba(45,212,255,.55); }
.quick-action strong, .quick-action span { display:block; }
.quick-action span { color:var(--muted); font-size:.82rem; margin-top:.14rem; }

.polished-graphic-hero { background:linear-gradient(135deg, rgba(8,47,73,.82), rgba(15,23,42,.86)), radial-gradient(circle at 82% 12%, rgba(45,212,255,.2), transparent 24rem); }
.generated-floorplan-stage { background:linear-gradient(180deg,#f5f9fc,#d8e4ec 78%,#bdc9d4); }
.gen-room { border-radius:8px; transition:transform .18s ease, filter .18s ease, box-shadow .18s ease; }
.gen-room:hover { transform:skewX(-4deg) translateY(-3px); filter:saturate(1.08); box-shadow:inset 0 8px 20px rgba(255,255,255,.35), inset 0 -12px 20px rgba(15,23,42,.10), 10px 14px 0 rgba(35,45,55,.24), 0 0 0 4px rgba(45,212,255,.18); }
.floor-callout { transition:transform .18s ease, box-shadow .18s ease; }
.floor-callout:hover { transform:translate(-50%,-54%); box-shadow:0 14px 28px rgba(15,23,42,.34), 0 0 0 5px rgba(45,212,255,.16); }

@media (max-width: 1100px) {
    nav { align-items:flex-start; }
    .brand-lockup { flex-direction:column; gap:.1rem; }
    .landing-hero, .auth-layout, .platform-grid { grid-template-columns:1fr; }
    .landing-orb { width:190px; height:190px; border-radius:34px; }
    .site-card-grid, .quick-action-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    header { position:static; }
    nav, .nav-actions { align-items:stretch; }
    nav { flex-direction:column; }
    .nav-actions { justify-content:flex-start; }
    .nav-link { text-align:center; }
    .auth-layout { min-height:auto; }
    .site-card-grid, .quick-action-grid { grid-template-columns:1fr; }
    .portal-hero-actions, .site-health-stack, .graphic-hero-stack { justify-items:stretch; }
    .landing-orb { justify-self:start; }
}

/* BAS central plant operator graphics — chilled water + hot water plants.
   Same hero/sidebar/binding-health shell as AHU/RTU; the schematic is plant-
   specific (chiller + tower + lead/lag pumps for CHW; lead/lag boilers + HW
   pumps for HW). Read-only operator screen. */
.plant-panel { overflow:hidden; }
.plant-schematic { position:relative; min-height:600px; border:1px solid rgba(125,211,252,.22); border-radius:28px; background:linear-gradient(135deg, rgba(2,8,23,.9), rgba(8,47,73,.5)); overflow:hidden; }
.plant-schematic.chw-schematic { background:linear-gradient(135deg, rgba(2,8,23,.92), rgba(8,47,73,.55) 60%, rgba(15,76,117,.6)); }
.plant-schematic.hw-schematic { background:linear-gradient(135deg, rgba(15,23,42,.92), rgba(76,29,29,.45) 60%, rgba(120,53,15,.4)); }

.plant-pipe { position:absolute; border-radius:999px; box-shadow:inset 0 0 18px rgba(0,0,0,.3); }
/* CHW plant pipes */
.chw-supply-header { left:30%; right:6%; top:42%; height:14px; background:linear-gradient(90deg, rgba(56,189,248,.55), rgba(56,189,248,.18)); border:1px solid rgba(125,211,252,.5); }
.chw-return-header { left:30%; right:6%; top:62%; height:14px; background:linear-gradient(90deg, rgba(96,165,250,.45), rgba(96,165,250,.18)); border:1px solid rgba(147,197,253,.45); }
.cw-supply-pipe { left:5%; right:62%; top:80%; height:12px; background:linear-gradient(90deg, rgba(45,212,191,.45), rgba(45,212,191,.18)); border:1px solid rgba(94,234,212,.5); }
.cw-return-pipe { left:5%; right:62%; top:91%; height:12px; background:linear-gradient(90deg, rgba(34,197,94,.45), rgba(34,197,94,.18)); border:1px solid rgba(134,239,172,.5); }
/* HW plant pipes */
.hw-supply-header { left:30%; right:6%; top:32%; height:14px; background:linear-gradient(90deg, rgba(248,113,113,.55), rgba(248,113,113,.18)); border:1px solid rgba(252,165,165,.55); }
.hw-return-header { left:30%; right:6%; top:78%; height:14px; background:linear-gradient(90deg, rgba(251,146,60,.45), rgba(251,146,60,.18)); border:1px solid rgba(253,186,116,.5); }

.pipe-tag { position:absolute; font-size:.62rem; letter-spacing:.18em; font-weight:900; text-transform:uppercase; padding:.15rem .5rem; border-radius:999px; background:rgba(2,8,23,.7); color:#bfdbfe; border:1px solid rgba(148,163,184,.35); z-index:5; }
.chws-tag { left:32%; top:39%; color:#7dd3fc; }
.chwr-tag { left:32%; top:59%; color:#93c5fd; }
.cws-tag { left:6%; top:77%; color:#5eead4; }
.cwr-tag { left:6%; top:88%; color:#86efac; }
.hws-tag { left:32%; top:29%; color:#fca5a5; }
.hwr-tag { left:32%; top:75%; color:#fdba74; }

.plant-label { position:absolute; color:#cbd5e1; font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; font-weight:800; z-index:5; }
.tower-label { left:6%; top:5%; }
.chiller-label { left:6%; top:48%; }

.plant-component { position:absolute; z-index:6; min-width:138px; border:1px solid var(--border); border-radius:18px; padding:.7rem; background:rgba(3,18,32,.92); box-shadow:0 18px 44px rgba(0,0,0,.3); }
.plant-component span { display:block; color:var(--muted); font-size:.66rem; text-transform:uppercase; letter-spacing:.1em; }
.plant-component strong { display:block; color:#eaffff; font-size:1.15rem; line-height:1.15; margin:.25rem 0; }
.plant-component small { color:#93a9bd; }

/* Cooling tower */
.plant-component.cooling-tower { left:6%; top:9%; min-width:170px; border-color:rgba(56,189,248,.45); }
.tower-shell { position:relative; height:64px; border:1px dashed rgba(125,211,252,.45); border-radius:14px; margin:.4rem 0; display:grid; place-items:center; background:radial-gradient(circle at 50% 30%, rgba(56,189,248,.18), transparent 60%); }
.tower-fan-wheel { width:46px; height:46px; border:2px solid rgba(56,189,248,.6); border-radius:999px; display:grid; place-items:center; color:#7dd3fc; font-size:1.6rem; }
.cooling-tower.running .tower-fan-wheel { animation:spin 1.5s linear infinite; color:#86efac; border-color:rgba(34,197,94,.6); }

/* Chiller */
.plant-component.chiller { left:6%; top:52%; min-width:200px; border-color:rgba(56,189,248,.55); background:linear-gradient(135deg, rgba(8,47,73,.92), rgba(3,18,32,.92)); }
.plant-component.chiller.running { border-color:rgba(34,197,94,.6); box-shadow:0 18px 44px rgba(0,0,0,.3), 0 0 26px rgba(34,197,94,.18); }
.chiller-body { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; margin:.4rem 0; }
.chiller-evap, .chiller-cond { padding:.45rem; border-radius:10px; font-size:.62rem; font-weight:900; letter-spacing:.14em; text-align:center; color:#cffafe; }
.chiller-evap { background:linear-gradient(135deg, rgba(56,189,248,.35), rgba(8,47,73,.6)); border:1px solid rgba(125,211,252,.5); }
.chiller-cond { background:linear-gradient(135deg, rgba(45,212,191,.32), rgba(8,47,73,.6)); border:1px solid rgba(94,234,212,.5); }

/* Boilers */
.plant-component.boiler { left:6%; min-width:200px; border-color:rgba(248,113,113,.5); background:linear-gradient(135deg, rgba(76,29,29,.85), rgba(3,18,32,.92)); }
.plant-component.boiler-1 { top:18%; }
.plant-component.boiler-2 { top:55%; }
.plant-component.boiler.firing { border-color:rgba(248,113,113,.85); box-shadow:0 18px 44px rgba(0,0,0,.3), 0 0 32px rgba(239,68,68,.22); }
.boiler-body { position:relative; height:60px; border:1px solid rgba(252,165,165,.45); border-radius:12px; margin:.4rem 0; display:grid; place-items:center; background:radial-gradient(circle at 50% 70%, rgba(239,68,68,.22), transparent 60%); }
.boiler-flame { font-size:1.8rem; }
.plant-component.boiler.firing .boiler-flame { animation:flame-flicker 1.1s ease-in-out infinite alternate; }
@keyframes flame-flicker { from { transform:scale(.95); opacity:.85; } to { transform:scale(1.08); opacity:1; } }

/* Pumps (shared CHW/HW/CW) */
.plant-component.pump { min-width:130px; border-color:rgba(125,211,252,.4); }
.plant-component.pump.running { border-color:rgba(34,197,94,.55); }
.pump-icon { width:42px; height:42px; border:2px solid rgba(125,211,252,.55); border-radius:999px; display:grid; place-items:center; margin:.3rem auto; color:#7dd3fc; font-size:1.4rem; }
.plant-component.pump.running .pump-icon { animation:spin 1.4s linear infinite; color:#86efac; border-color:rgba(34,197,94,.6); }
.pump-chw-lead { left:42%; top:55%; }
.pump-chw-lag { left:60%; top:55%; }
.pump-cw { left:24%; top:74%; border-color:rgba(94,234,212,.45); }
.pump-hw-lead { left:42%; top:71%; }
.pump-hw-lag { left:62%; top:71%; }

/* Sensor pucks (temperatures and dP) */
.plant-component.sensor { min-width:118px; border-color:rgba(148,163,184,.4); background:rgba(2,8,23,.85); }
.sensor-chws { left:78%; top:35%; border-color:rgba(125,211,252,.5); }
.sensor-chwr { left:78%; top:55%; border-color:rgba(147,197,253,.5); }
.sensor-cws { left:38%; top:84%; border-color:rgba(94,234,212,.5); }
.sensor-cwr { left:38%; top:74%; border-color:rgba(134,239,172,.5); }
.sensor-hws { left:78%; top:25%; border-color:rgba(252,165,165,.55); }
.sensor-hwr { left:78%; top:71%; border-color:rgba(253,186,116,.55); }

@media (max-width:1100px) {
    .plant-schematic { min-height:780px; }
}
@media (max-width:720px) {
    .plant-schematic { min-height:auto; padding:.5rem; }
    .plant-component, .plant-pipe, .pipe-tag, .plant-label { position:relative; left:auto!important; right:auto!important; top:auto!important; bottom:auto!important; margin:.5rem 0; width:100%; }
    .plant-pipe { display:none; }
}
/* Blue Cloud / Children 1st rescue pass: be honest about data readiness, make the page operational. */
.bluecloud-hero-clean { background:linear-gradient(135deg, rgba(8,47,73,.88), rgba(15,23,42,.9)), radial-gradient(circle at 82% 10%, rgba(45,212,255,.18), transparent 24rem); }
.hero-honesty { max-width:760px; margin-top:.65rem; }
.upgraded-scorecard { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.55rem; min-width:360px; }
.upgraded-scorecard div { border:1px solid rgba(125,211,252,.2); border-radius:18px; padding:.75rem; background:rgba(2,8,23,.34); }
.pending-chip { color:#fde68a; border-color:rgba(245,158,11,.4); background:rgba(245,158,11,.12); }
.floor-two-column { display:grid; grid-template-columns:minmax(0,1fr) 280px; gap:1rem; align-items:stretch; }
.cleaned-sheet-frame { min-height:520px; background:#eef5f8; }
.cleaned-sheet-frame img { filter:grayscale(.15) contrast(1.05) brightness(1.04); opacity:.88; }
.operator-callout-stack { display:grid; gap:.75rem; align-content:start; }
.operator-callout { border:1px solid rgba(125,211,252,.25); border-radius:20px; padding:.9rem; background:rgba(2,8,23,.42); }
.operator-callout.warning { border-color:rgba(245,158,11,.45); background:rgba(245,158,11,.1); }
.operator-callout.safe { border-color:rgba(34,197,94,.38); background:rgba(34,197,94,.09); }
.operator-callout strong, .operator-callout span, .operator-callout small { display:block; }
.operator-callout strong { color:#eaffff; font-size:.88rem; }
.operator-callout span, .operator-callout a { color:var(--primary); font-weight:900; text-decoration:none; margin:.18rem 0; }
.operator-callout small { color:#a8bfd2; line-height:1.35; }
.zone-readiness-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.65rem; }
.zone-readiness-card { border:1px solid rgba(125,211,252,.22); border-radius:20px; padding:.85rem; background:rgba(2,8,23,.36); display:grid; gap:.45rem; min-height:145px; }
.zone-readiness-card.critical { border-color:rgba(248,113,113,.56); background:rgba(127,29,29,.18); }
.zone-readiness-card.pending { border-color:rgba(245,158,11,.38); }
.zone-readiness-card.normal { border-color:rgba(34,197,94,.35); }
.zone-readiness-card strong, .zone-readiness-card span, .zone-readiness-card b, .zone-readiness-card small { display:block; }
.zone-readiness-card strong { color:#eaffff; font-size:1.05rem; }
.zone-readiness-card span { color:#9fb6c9; font-size:.78rem; }
.zone-readiness-card b { color:#fde68a; }
.zone-readiness-card small { color:#a8bfd2; line-height:1.35; }
.expected-equipment-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.65rem; }
.expected-equipment-card { border:1px solid rgba(125,211,252,.22); border-radius:20px; padding:.85rem; background:linear-gradient(135deg, rgba(45,212,255,.08), rgba(2,8,23,.36)); min-height:170px; display:flex; flex-direction:column; gap:.35rem; }
.expected-equipment-card strong { color:#eaffff; font-size:1.25rem; }
.expected-equipment-card span { color:var(--primary); font-weight:900; font-size:.78rem; }
.expected-equipment-card p { color:#cfe8f8; margin:0; }
.expected-equipment-card small { color:#9fb6c9; margin-top:auto; line-height:1.35; }
.empty-action { display:grid; gap:.35rem; border:1px dashed rgba(245,158,11,.38); border-radius:18px; padding:1rem; background:rgba(245,158,11,.08); color:#fde68a; }
.empty-action strong { color:#fde68a; }
.empty-action span { color:#d8cda8; line-height:1.4; }
@media (max-width:1200px) { .floor-two-column { grid-template-columns:1fr; } .zone-readiness-grid, .expected-equipment-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .upgraded-scorecard { min-width:0; } }
@media (max-width:720px) { .zone-readiness-grid, .expected-equipment-grid, .upgraded-scorecard { grid-template-columns:1fr; } }
/* Blue Cloud rescue pass 2: reduce sidebar weight, enlarge drawing, avoid clipped callouts. */
.live-test-layout { grid-template-columns:220px minmax(0,1fr); }
.site-sidebar { padding:1rem; }
.site-sidebar a { padding:.52rem .62rem; margin:.32rem 0; font-size:.9rem; }
.site-sidebar .muted { font-size:.78rem; line-height:1.35; }
.floor-two-column { grid-template-columns:minmax(0,1fr) 230px; }
.cleaned-sheet-frame { min-height:640px; padding:.55rem; display:grid; place-items:center; }
.cleaned-sheet-frame img { max-height:620px; width:auto; max-width:100%; }
.full-drawing-link { position:absolute; right:14px; top:14px; z-index:9; background:rgba(3,18,32,.82); }
.floor-ops-panel .hotspot { padding:.42rem .62rem; font-size:.82rem; }
@media (max-width:1200px) { .live-test-layout { grid-template-columns:1fr; } .floor-two-column { grid-template-columns:1fr; } }
/* BAS workstation correction: utility-first operator screen before decorative SaaS cards. */
.bas-workstation-panel { background:linear-gradient(180deg, rgba(4,11,20,.96), rgba(9,23,38,.92)); }
.bas-workstation-topline { display:flex; align-items:center; justify-content:space-between; gap:1rem; border-bottom:1px solid rgba(148,163,184,.22); padding-bottom:.85rem; margin-bottom:.85rem; }
.bas-workstation-topline h2 { margin:0; font-size:1.45rem; letter-spacing:-.02em; }
.bas-workstation-status { min-width:170px; border:1px solid rgba(34,197,94,.45); border-radius:10px; padding:.55rem .75rem; background:rgba(22,101,52,.18); text-align:right; }
.bas-workstation-status.alarm { border-color:rgba(239,68,68,.65); background:rgba(127,29,29,.25); }
.bas-workstation-status strong, .bas-workstation-status span { display:block; }
.bas-workstation-status strong { color:#dcfce7; font-size:1rem; }
.bas-workstation-status.alarm strong { color:#fecaca; }
.bas-workstation-status span { color:#b8d4e8; font-size:.74rem; text-transform:uppercase; letter-spacing:.08em; }
.bas-workstation-grid { display:grid; grid-template-columns:190px minmax(420px,1fr) 270px; gap:.75rem; align-items:stretch; }
.bas-nav-tree { border:1px solid rgba(148,163,184,.24); border-radius:12px; background:rgba(2,6,23,.58); padding:.75rem; display:flex; flex-direction:column; gap:.35rem; font-size:.82rem; }
.bas-nav-tree strong { color:#eaffff; }
.bas-nav-tree span { color:#93a9bd; font-size:.75rem; margin-bottom:.35rem; }
.bas-nav-tree a { color:#cfe8f8; text-decoration:none; border-radius:8px; padding:.32rem .4rem; background:rgba(15,23,42,.35); border:1px solid transparent; }
.bas-nav-tree a.active, .bas-nav-tree a:hover { border-color:rgba(45,212,255,.48); background:rgba(45,212,255,.09); color:#eaffff; }
.bas-airside-schematic { position:relative; min-height:360px; border:1px solid rgba(125,211,252,.28); border-radius:12px; background:linear-gradient(180deg,#162333,#09111f); overflow:hidden; padding:1rem; box-shadow:inset 0 0 80px rgba(0,0,0,.25); }
.air-duct { position:absolute; left:4%; right:4%; height:38px; border:1px solid rgba(125,211,252,.28); background:rgba(15,23,42,.82); color:#9bdcf9; text-transform:uppercase; letter-spacing:.12em; font-size:.7rem; font-weight:900; display:flex; align-items:center; padding:0 .8rem; }
.return-duct { top:38px; justify-content:flex-start; }
.supply-duct { bottom:38px; justify-content:flex-end; }
.air-section { position:absolute; top:128px; width:15%; height:110px; border:1px solid rgba(203,213,225,.35); border-radius:10px; background:#101b2a; display:grid; align-content:center; justify-items:center; text-align:center; padding:.55rem; box-shadow:0 12px 30px rgba(0,0,0,.28); }
.air-section::before { content:""; position:absolute; left:-18px; top:50%; width:18px; height:2px; background:rgba(125,211,252,.38); }
.air-section span { color:#9bdcf9; font-size:.64rem; text-transform:uppercase; letter-spacing:.12em; font-weight:900; }
.air-section b { color:#eaffff; margin:.3rem 0 .12rem; }
.air-section small { color:#93a9bd; font-size:.68rem; }
.outdoor-air { left:7%; }
.filter-bank { left:24%; }
.cooling-coil { left:41%; border-color:rgba(96,165,250,.55); }
.heat-coil { left:58%; border-color:rgba(248,113,113,.48); }
.supply-fan { left:75%; border-color:rgba(34,197,94,.48); }
.schematic-point { position:absolute; border:1px solid rgba(148,163,184,.32); border-radius:10px; padding:.45rem .6rem; min-width:118px; background:rgba(2,8,23,.82); box-shadow:0 10px 24px rgba(0,0,0,.26); }
.schematic-point span, .schematic-point strong, .schematic-point small { display:block; }
.schematic-point span { color:#93a9bd; font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; font-weight:900; }
.schematic-point strong { color:#eaffff; font-size:1.05rem; }
.schematic-point small { color:#7dd3fc; font-size:.66rem; }
.schematic-point.sat { right:5%; bottom:88px; }
.schematic-point.oat { left:5%; top:88px; }
.schematic-point.dsp { right:5%; top:88px; }
.bas-live-table-card { border:1px solid rgba(148,163,184,.24); border-radius:12px; overflow:hidden; background:rgba(2,6,23,.58); }
.mini-heading { display:flex; justify-content:space-between; gap:.6rem; align-items:baseline; padding:.65rem .75rem; border-bottom:1px solid rgba(148,163,184,.18); }
.mini-heading strong { color:#eaffff; }
.mini-heading span { color:#93a9bd; font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; }
.bas-point-table { width:100%; border-collapse:collapse; font-size:.76rem; }
.bas-point-table th, .bas-point-table td { border-bottom:1px solid rgba(148,163,184,.14); padding:.45rem .55rem; text-align:left; }
.bas-point-table th { color:#cfe8f8; font-weight:800; }
.bas-point-table td { color:#eaffff; }
.bas-point-table tr.demo td:last-child { color:#fde68a; }
.bas-point-table tr.bound td:last-child { color:#86efac; }
.bas-point-table tr.missing td:last-child { color:#fca5a5; }
.bas-operator-panels { grid-column:1 / -1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.6rem; }
.bas-operator-panels article { border:1px solid rgba(148,163,184,.22); border-radius:12px; background:rgba(15,23,42,.48); padding:.7rem; display:grid; gap:.16rem; }
.bas-operator-panels strong { color:#eaffff; }
.bas-operator-panels span { color:#7dd3fc; font-weight:900; }
.bas-operator-panels small { color:#93a9bd; line-height:1.35; }
@media (max-width:1200px) { .bas-workstation-grid { grid-template-columns:1fr; } .bas-airside-schematic { min-height:460px; } .bas-operator-panels { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:720px) { .bas-workstation-topline { flex-direction:column; align-items:stretch; } .air-section, .schematic-point, .air-duct { position:relative; left:auto!important; right:auto!important; top:auto!important; bottom:auto!important; width:auto; margin:.5rem 0; } .air-section::before { display:none; } .bas-operator-panels { grid-template-columns:1fr; } }

/* Dense BAS operator workstation screen — replaces SaaS/card look on equipment graphics */
.bas-op-screen{background:#07111c;border:1px solid #2d3b4d;color:#d7e1ea;font-family:Arial,Helvetica,sans-serif;box-shadow:0 18px 60px rgba(0,0,0,.42);margin:0 auto 1rem;max-width:1480px}
.bas-op-titlebar{display:flex;justify-content:space-between;gap:1rem;align-items:center;background:#1c2938;border-bottom:1px solid #3a4a5f;padding:.42rem .65rem;font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;color:#cbd5e1}.bas-op-clock{color:#fbbf24;font-weight:800}.bas-op-crumbs{font-weight:800;color:#e5edf5}
.bas-op-alarmline{display:grid;grid-template-columns:190px 1fr 330px;gap:.6rem;align-items:center;padding:.42rem .65rem;border-bottom:1px solid #344256;font-size:.82rem}.bas-op-alarmline strong{font-size:.9rem}.bas-op-alarmline em{font-style:normal;text-align:right;color:#cbd5e1}.bas-op-alarmline.normal{background:#064e3b;color:#dcfce7}.bas-op-alarmline.caution{background:#713f12;color:#fff7ed}.bas-op-alarmline.alarm{background:#7f1d1d;color:#fee2e2}
.bas-op-layout{display:grid;grid-template-columns:218px 1fr;min-height:760px}.bas-op-tree{background:#0d1825;border-right:1px solid #2d3b4d;padding:.55rem;font-size:.8rem}.tree-title{color:#93a4b8;font-weight:900;font-size:.68rem;letter-spacing:.1em;margin-bottom:.45rem}.bas-op-tree a{display:block;color:#d7e1ea;text-decoration:none;padding:.25rem .3rem;border-left:3px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bas-op-tree a:hover{background:#172338}.bas-op-tree a.selected{background:#1e3a5f;border-left-color:#38bdf8;color:#fff}.bas-op-tree a.open{color:#bfdbfe}.tree-status{display:grid;grid-template-columns:1fr auto;gap:.28rem;margin-top:1rem;padding:.55rem;border:1px solid #334155;background:#111c2b}.tree-status span{color:#9aaabe}.tree-status b{color:#f8fafc;text-align:right}
.bas-op-main{padding:.65rem;background:#0a1420}.rtu-workstation-schematic{position:relative;height:330px;border:1px solid #3b4b60;background:#101927;background-image:linear-gradient(rgba(148,163,184,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.08) 1px,transparent 1px);background-size:24px 24px;margin-bottom:.65rem;overflow:hidden}.air-path{position:absolute;top:128px;height:78px;display:grid;place-items:center;border:2px solid #64748b;background:#1f2937;color:#e2e8f0;font-weight:900;font-size:.78rem}.air-path.return{left:14px;width:124px;color:#fed7aa}.air-path.supply{right:14px;width:146px;color:#bfdbfe}.component-block{position:absolute;top:92px;width:128px;height:148px;border:2px solid #93a4b8;background:#253344;display:grid;align-content:center;text-align:center;padding:.35rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}.component-block span{font-size:.68rem;color:#cbd5e1;font-weight:900}.component-block strong{display:block;color:#fff;font-size:1rem;margin:.28rem 0}.component-block small{color:#a8b4c2;font-size:.68rem}.mixing-box{left:164px}.filter-block{left:318px}.coil-block.cooling{left:472px;border-color:#38bdf8}.coil-block.heating{left:626px;border-color:#fb923c}.fan-block{left:780px;border-color:#22c55e}.active-cool{background:#0c3650}.idle-heat{background:#3b2a1e}.fan-block.running:after{content:'◉';position:absolute;right:8px;top:6px;color:#22c55e;font-size:1rem}.sensor-tag{position:absolute;min-width:112px;background:#020817;border:1px solid #475569;padding:.35rem .45rem;box-shadow:0 10px 26px rgba(0,0,0,.25)}.sensor-tag span{display:block;color:#93a4b8;font-size:.62rem;font-weight:900}.sensor-tag strong{display:block;color:#fff;font-size:1.05rem}.sensor-tag em{font-style:normal;color:#fbbf24;font-size:.62rem}.sensor-tag.oat{left:166px;top:18px}.sensor-tag.mat{left:319px;bottom:22px}.sensor-tag.sat{right:175px;top:18px}.sensor-tag.dsp{right:175px;bottom:22px}.flow-arrow{position:absolute;top:153px;color:#67e8f9;font-size:1.8rem;font-weight:900}.flow-arrow.a1{left:143px}.flow-arrow.a2{left:294px}.flow-arrow.a3{left:448px}.flow-arrow.a4{left:602px}.flow-arrow.a5{left:756px}
.bas-op-tables{display:grid;grid-template-columns:1fr 320px;gap:.65rem}.bas-op-table-panel,.bas-op-sidepanels article{border:1px solid #334155;background:#111c2b}.panel-strip{display:flex;justify-content:space-between;gap:.5rem;align-items:center;background:#1e293b;border-bottom:1px solid #334155;padding:.35rem .5rem;color:#e5edf5;font-size:.74rem}.panel-strip span{color:#93a4b8}.workstation-point-table{width:100%;border-collapse:collapse;font-size:.78rem}.workstation-point-table th,.workstation-point-table td{border:1px solid #2b3848;padding:.34rem .45rem;text-align:left}.workstation-point-table thead th{background:#253344;color:#cbd5e1;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}.workstation-point-table tbody th{color:#dbeafe;width:150px}.workstation-point-table tr[data-binding-health='demo'] td:nth-child(4){color:#fbbf24}.workstation-point-table tr[data-binding-health='bound'] td:nth-child(4){color:#86efac}.workstation-point-table tr[data-binding-health='stale'] td:nth-child(4){color:#facc15}.workstation-point-table tr[data-binding-health='missing'] td:nth-child(4){color:#fca5a5}.bas-op-sidepanels{display:grid;gap:.65rem;align-content:start}.bas-op-sidepanels p{margin:0;padding:.55rem;color:#cbd5e1;font-size:.78rem;line-height:1.35}.alarm-empty{color:#fde68a!important}.bas-commissioning-strip{max-width:1480px;margin:0 auto 1rem;border:1px solid #334155;background:#111827;color:#cbd5e1;padding:.55rem .7rem;display:flex;gap:.85rem;flex-wrap:wrap;font-size:.78rem}.bas-commissioning-strip small{color:#94a3b8;flex-basis:100%}
@media(max-width:1100px){.bas-op-layout,.bas-op-tables{grid-template-columns:1fr}.bas-op-tree{border-right:none;border-bottom:1px solid #2d3b4d}.rtu-workstation-schematic{height:760px}.component-block,.air-path,.sensor-tag,.flow-arrow{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;margin:.5rem;width:auto}.flow-arrow{display:none}.bas-op-alarmline{grid-template-columns:1fr}.bas-op-alarmline em{text-align:left}}

/* ========================================================== */
/* RTU mechanical SVG schematic — operator-credible airside    */
/* equipment graphic.  Renders inside .rtu-workstation-        */
/* schematic.rtu-mechanical so existing CSS for plant pages    */
/* (.rtu-workstation-schematic.chw-plant-schematic etc.)       */
/* is left untouched.                                          */
/* ========================================================== */
.rtu-workstation-schematic.rtu-mechanical,.rtu-workstation-schematic.vav-mechanical,.rtu-workstation-schematic.chw-plant-mechanical,.rtu-workstation-schematic.hot-water-plant-mechanical{height:auto;min-height:430px;padding:0;overflow:visible;background:#101927}
.rtu-workstation-schematic.vav-hd-hero-stage{min-height:560px;border-color:#38bdf8;box-shadow:0 18px 50px rgba(8,47,73,.38),inset 0 0 55px rgba(14,165,233,.12)}
.rtu-svg{display:block;width:100%;height:auto;max-height:520px;background:#101927}
.vav-hd-hero-stage .rtu-svg{height:520px;max-height:660px}
.rtu-svg .component-reliability-badge{font:900 7.5px/1 'Inter','Segoe UI',sans-serif;fill:#bae6fd;letter-spacing:.08em;text-transform:uppercase}.rtu-svg .component-reliability-badge--missing,.rtu-svg .component-reliability-badge--demo{fill:#fde68a}.rtu-svg .component-reliability-badge--stale{fill:#fdba74}.rtu-svg .component-reliability-badge--bound{fill:#86efac}
.rtu-svg .vav-airflow-ribbon{stroke-dasharray:26 14;animation:rtu-flow-march 2.1s linear infinite}.rtu-svg .vav-airflow-particle{filter:drop-shadow(0 0 7px #67e8f9)}.rtu-svg .vav-damper-gauge-arc{filter:drop-shadow(0 0 5px #fbbf24)}.rtu-svg .vav-damper-blade-hd{filter:drop-shadow(0 0 3px #fbbf24)}.rtu-svg .vav-reheat-coil-glow{mix-blend-mode:screen}.rtu-svg .vav-hw-valve-fill{filter:drop-shadow(0 0 4px #fb923c)}.rtu-svg .vav-comfort-zone-card{filter:drop-shadow(0 0 12px rgba(34,197,94,.28))}.rtu-svg .vav-comfort-ring{filter:drop-shadow(0 0 6px #22c55e)}
@media(prefers-reduced-motion:reduce){.rtu-svg .vav-airflow-ribbon,.rtu-svg .vav-airflow-particle{animation:none}}
.rtu-svg .rtu-tag{font:700 9px/1 'Inter','Segoe UI',sans-serif;fill:#cbd5e1;letter-spacing:.04em}
.rtu-svg .rtu-tag-cool{fill:#7dd3fc}
.rtu-svg .rtu-tag-warm{fill:#fed7aa}
.rtu-svg .rtu-tag-heat{fill:#fb923c}
.rtu-svg .rtu-badge{font:800 9px/1 'Inter','Segoe UI',sans-serif;fill:#86efac;letter-spacing:.06em}
.rtu-svg .rtu-actuator{font:800 8px/1 'Inter',sans-serif;fill:#fbbf24}
.rtu-svg .rtu-cmp-text{font:800 9px/1 'Inter',sans-serif;fill:#86efac}
.rtu-svg .rtu-safety-text{font:700 7.5px/1 'Inter',sans-serif;fill:#fde68a;letter-spacing:.04em}
.rtu-svg .sensor-tag-name{font:700 8px/1 'Inter',sans-serif;fill:#93a4b8;letter-spacing:.05em}
.rtu-svg .sensor-tag-value{font:800 11px/1 'Inter',sans-serif;fill:#f8fafc}
.rtu-svg .sensor-tag-mini{font:700 9px/1 'Inter',sans-serif;fill:#fbbf24;letter-spacing:.03em}
.rtu-svg .rtu-mode-text{font:800 9px/1 'Inter',sans-serif;fill:#93a4b8;letter-spacing:.08em;text-transform:uppercase}
.rtu-svg .rtu-svg-fan-running .fan-blades,.rtu-svg .rtu-svg-fan-running .fan-wheel{stroke:#22c55e}
/* Spin animation intentionally omitted: SVG <g> + CSS transforms collide
   with the legacy .rtu-fan circular-icon CSS used elsewhere.  Static
   "running" stroke colour is enough operator feedback; trend lines on the
   SF-S point row carry the time-domain story. */
.rtu-svg .cool-section.active text.rtu-tag-cool{fill:#67e8f9}
.rtu-svg .heat-section.active text.rtu-tag-heat{fill:#fdba74}
.rtu-svg .rtu-compressor.running circle{filter:drop-shadow(0 0 4px #22c55e)}
.point-info-row{padding:.4rem .55rem;border-top:1px solid #1f2937;background:#111c2b}
.point-info-link{color:#7dd3fc;font-size:.74rem;text-decoration:none;font-weight:700}
.point-info-link:hover{text-decoration:underline}
@media(max-width:1100px){.rtu-workstation-schematic.rtu-mechanical,.rtu-workstation-schematic.vav-mechanical,.rtu-workstation-schematic.chw-plant-mechanical,.rtu-workstation-schematic.hot-water-plant-mechanical{min-height:540px;height:auto}.rtu-svg{max-height:none}}

/* ========================================================== */
/* Live-video-game BAS flow animation primitives.              */
/* Per /root/factory-v2/research/live-video-game-bas-graphics- */
/* standard-20260510.md and layered-piping-duct-graphics-      */
/* standard-20260510.md.  Animations are gated by              */
/*   data-flow-reliability on the scene-graph root             */
/*     live    -> full-strength stroke-dash flow               */
/*     derived -> half-strength flow (command/proof only)      */
/*     demo    -> muted dashed flow                            */
/*     stale   -> dashed, no animation                         */
/* and per-path data-active="true|false".  When the equipment  */
/* media (supply_air, return_air, refrigerant) is inactive,    */
/* flow halts even if the scene reliability is live.           */
/* These rules also feed the future Three.js bridge: each      */
/* data-layer group becomes a Three.js group with the same id  */
/* and per-path media/active/reliability attributes drive the  */
/* particle-system parameters there.                           */
/* ========================================================== */
@keyframes rtu-flow-march{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
.rtu-svg .rtu-airflow polyline{stroke-dasharray:6 4;animation:rtu-flow-march 1.6s linear infinite}
.rtu-svg .rtu-airflow[data-active="false"] polyline{animation-play-state:paused;opacity:.35}
.rtu-svg .rtu-scene-graph[data-flow-reliability="demo"] .rtu-airflow polyline{stroke-dasharray:3 5;animation-duration:2.6s;opacity:.55}
.rtu-svg .rtu-scene-graph[data-flow-reliability="derived"] .rtu-airflow polyline{animation-duration:2.2s;opacity:.75}
.rtu-svg .rtu-scene-graph[data-flow-reliability="stale"] .rtu-airflow polyline{stroke-dasharray:2 6;animation:none;opacity:.4}
/* Refrigerant lines flow only when cooling stage active. */
.rtu-svg [data-layer="refrigerant.circuit"][data-active="true"] .refrig-lines path{stroke-dasharray:5 3;animation:rtu-flow-march 1.2s linear infinite}
.rtu-svg [data-layer="refrigerant.circuit"][data-active="false"] .refrig-lines path{animation:none;opacity:.55}
.rtu-svg .rtu-scene-graph[data-flow-reliability="demo"] [data-layer="refrigerant.circuit"] .refrig-lines path{animation-duration:2.4s;opacity:.6}
.rtu-svg .rtu-scene-graph[data-flow-reliability="stale"] [data-layer="refrigerant.circuit"] .refrig-lines path{animation:none}
/* ========================================================== */
/* AHU/VAV/plant hydronic flow primitives.                     */
/* Scene-graph root is .ahu-scene-graph / .vav-scene-graph     */
/* (terminal units carry HW reheat only) / .chw-scene-graph /  */
/* .hw-scene-graph for plants.  Per layered-piping-duct-       */
/* graphics-standard-20260510.md:                              */
/*   pipe.chilled_water_supply  -> cyan  (#7dd3fc)             */
/*   pipe.chilled_water_return  -> teal  (#5eead4)             */
/*   pipe.hot_water_supply      -> orange(#fb923c)             */
/*   pipe.hot_water_return      -> amber (#fbbf24)             */
/* Animation gated identically to airflow: scene-graph         */
/* data-flow-reliability + per-layer data-active.              */
/* ========================================================== */
.ahu-scene-graph [data-layer^="pipe."] .chw-piping path,
.ahu-scene-graph [data-layer^="pipe."] .hw-piping path,
.vav-scene-graph [data-layer^="pipe."] .hw-piping path,
.vav-scene-graph [data-layer^="pipe."] path,
.chw-scene-graph [data-layer^="pipe."] path,
.hw-scene-graph  [data-layer^="pipe."] path{stroke-dasharray:6 4;animation:rtu-flow-march 1.8s linear infinite}
.ahu-scene-graph [data-layer="pipe.chilled_water_supply"][data-media="chilled_water_supply"] path{stroke:#7dd3fc}
.ahu-scene-graph [data-layer="pipe.chilled_water_return"][data-media="chilled_water_return"] path{stroke:#5eead4}
.ahu-scene-graph [data-layer="pipe.hot_water_supply"][data-media="hot_water_supply"] path{stroke:#fb923c}
.ahu-scene-graph [data-layer="pipe.hot_water_return"][data-media="hot_water_return"] path{stroke:#fbbf24}
.vav-scene-graph [data-layer="pipe.hot_water_supply"][data-media="hot_water_supply"] path{stroke:#fb923c}
.vav-scene-graph [data-layer="pipe.hot_water_return"][data-media="hot_water_return"] path{stroke:#fbbf24}
.hw-scene-graph  [data-layer="pipe.hot_water_supply"][data-media="hot_water_supply"] path{stroke:#fb923c}
.hw-scene-graph  [data-layer="pipe.hot_water_return"][data-media="hot_water_return"] path{stroke:#7dd3fc}
.ahu-scene-graph [data-layer^="pipe."][data-active="false"] path,
.vav-scene-graph [data-layer^="pipe."][data-active="false"] path,
.chw-scene-graph [data-layer^="pipe."][data-active="false"] path,
.hw-scene-graph  [data-layer^="pipe."][data-active="false"] path{animation-play-state:paused;opacity:.45}
.ahu-scene-graph[data-flow-reliability="demo"] [data-layer^="pipe."] path,
.vav-scene-graph[data-flow-reliability="demo"] [data-layer^="pipe."] path,
.chw-scene-graph[data-flow-reliability="demo"] [data-layer^="pipe."] path,
.hw-scene-graph[data-flow-reliability="demo"]  [data-layer^="pipe."] path{stroke-dasharray:3 5;animation-duration:2.6s;opacity:.6}
.ahu-scene-graph[data-flow-reliability="derived"] [data-layer^="pipe."] path,
.vav-scene-graph[data-flow-reliability="derived"] [data-layer^="pipe."] path,
.chw-scene-graph[data-flow-reliability="derived"] [data-layer^="pipe."] path,
.hw-scene-graph[data-flow-reliability="derived"]  [data-layer^="pipe."] path{animation-duration:2.2s;opacity:.78}
.ahu-scene-graph[data-flow-reliability="stale"] [data-layer^="pipe."] path,
.vav-scene-graph[data-flow-reliability="stale"] [data-layer^="pipe."] path,
.chw-scene-graph[data-flow-reliability="stale"] [data-layer^="pipe."] path,
.hw-scene-graph[data-flow-reliability="stale"]  [data-layer^="pipe."] path{stroke-dasharray:2 6;animation:none;opacity:.4}
/* Reduced-motion: respect user preference. */
@media(prefers-reduced-motion:reduce){.rtu-svg .rtu-airflow polyline,.rtu-svg [data-layer="refrigerant.circuit"] .refrig-lines path,.ahu-scene-graph [data-layer^="pipe."] path,.vav-scene-graph [data-layer^="pipe."] path,.chw-scene-graph [data-layer^="pipe."] path,.hw-scene-graph [data-layer^="pipe."] path{animation:none}}
