:root{
  --bg:#eef6ff;--bg2:#f8fbff;--surface:rgba(255,255,255,.78);--surface-strong:rgba(255,255,255,.96);
  --text:#06142f;--muted:#5c6e8b;--line:rgba(25,118,255,.18);--line-strong:rgba(25,118,255,.34);
  --blue:#1677ff;--cyan:#00bdf2;--green:#00c977;--amber:#ffad19;--red:#ff4d5e;--purple:#8d5cf6;
  --shadow:0 30px 90px rgba(17,78,158,.15);--soft-shadow:0 12px 36px rgba(17,78,158,.09);
  --radius:26px;--header:76px;--rail:86px;--ops:320px;--dock:78px;--icon:#0b5bd3;
}
body.dark{
  --bg:#050e1a;--bg2:#07172a;--surface:rgba(9,25,44,.78);--surface-strong:rgba(11,28,49,.96);
  --text:#f4f9ff;--muted:#9fb1cc;--line:rgba(0,194,255,.16);--line-strong:rgba(0,194,255,.34);--icon:#72dfff;
  --shadow:0 30px 90px rgba(0,0,0,.44);--soft-shadow:0 12px 36px rgba(0,0,0,.28);
}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;color:var(--text);background:radial-gradient(circle at 40% -10%,rgba(0,194,255,.22),transparent 38%),radial-gradient(circle at 8% 80%,rgba(25,118,255,.10),transparent 32%),linear-gradient(135deg,var(--bg2),var(--bg));overflow:hidden}button,input{font:inherit}button{cursor:pointer;color:inherit}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.app-shell{height:100vh;display:grid;grid-template-columns:var(--rail) minmax(760px,1fr) var(--ops);grid-template-rows:var(--header) 1fr var(--dock);gap:14px;padding:0 14px 14px}.topbar{grid-column:1/4;height:var(--header);display:flex;align-items:center;gap:12px;padding:10px 14px;background:rgba(255,255,255,.70);backdrop-filter:blur(24px);border-bottom:1px solid var(--line);box-shadow:0 14px 42px rgba(15,84,170,.08);z-index:30}.dark .topbar{background:rgba(5,14,27,.82)}.brand{width:255px;height:56px;display:flex;align-items:center;overflow:hidden}.brand-img{max-width:242px;max-height:55px;object-fit:contain}.brand-dark{display:none}.dark .brand-light{display:none}.dark .brand-dark{display:block}.mega-nav{display:flex;gap:8px;align-items:center}.mega-nav button,.ghost,.primary,.lang-toggle,.icon-btn,.mode-toggle{border:1px solid var(--line-strong);border-radius:15px;min-height:46px;padding:0 18px;background:linear-gradient(180deg,var(--surface-strong),rgba(255,255,255,.72));font-weight:850;box-shadow:var(--soft-shadow);transition:.22s ease}.dark .mega-nav button,.dark .ghost,.dark .lang-toggle,.dark .icon-btn,.dark .mode-toggle{background:linear-gradient(180deg,rgba(18,40,68,.96),rgba(9,25,44,.76))}.mega-nav button:hover,.ghost:hover,.lang-toggle:hover,.icon-btn:hover{transform:translateY(-2px);border-color:var(--cyan);box-shadow:0 15px 38px rgba(0,144,255,.18)}.primary{background:linear-gradient(135deg,var(--blue),#0758dd);color:#fff;border:none;box-shadow:0 16px 36px rgba(22,119,255,.30)}.primary:hover{transform:translateY(-2px);filter:saturate(1.12)}.global-search{height:48px;flex:1;min-width:230px;display:flex;align-items:center;gap:10px;padding:0 16px;border:1px solid var(--line-strong);border-radius:16px;background:var(--surface-strong);box-shadow:var(--soft-shadow)}.global-search svg{width:18px;color:var(--muted)}.global-search input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:15px}.icon-btn{width:50px;padding:0;position:relative;display:flex;align-items:center;justify-content:center;color:var(--icon)}.icon-btn b{position:absolute;right:6px;top:5px;background:var(--red);color:white;border-radius:12px;font-size:11px;padding:2px 5px}.mode-toggle{display:flex;gap:8px;align-items:center;padding:0 10px}.mode-toggle i{width:34px;height:18px;border-radius:20px;background:var(--blue);position:relative}.mode-toggle i:after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;right:2px;top:2px;background:#fff;transition:.22s}.dark .mode-toggle i:after{right:18px}.sidebar{grid-column:1;grid-row:2/4;display:flex;flex-direction:column;gap:10px;align-items:center;padding:12px 0;border-radius:25px;background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.34));border:1px solid var(--line);backdrop-filter:blur(20px)}.dark .sidebar{background:linear-gradient(180deg,rgba(12,32,55,.82),rgba(7,19,34,.42))}.sidebar button{width:58px;height:58px;border-radius:18px;border:1px solid var(--line-strong);background:var(--surface-strong);display:flex;align-items:center;justify-content:center;position:relative;box-shadow:var(--soft-shadow);transition:.22s;color:var(--icon)}.sidebar button span{position:absolute;left:66px;white-space:nowrap;background:var(--surface-strong);border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:13px;font-weight:800;opacity:0;pointer-events:none;transform:translateX(-8px);transition:.18s;box-shadow:var(--soft-shadow);z-index:50;color:var(--text)}.sidebar button:hover span{opacity:1;transform:translateX(0)}.sidebar button.active,.sidebar button:hover{background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;border-color:transparent;transform:translateY(-2px)}.workspace{grid-column:2;grid-row:2;min-width:0;overflow:auto;padding:2px 4px 100px}.workspace::-webkit-scrollbar{width:8px}.workspace::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:10px}.glass{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(26px)}.hero-panel{min-height:640px;border-radius:30px;display:grid;grid-template-columns:minmax(420px,38%) minmax(640px,62%);position:relative;overflow:hidden}.hero-panel:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--surface-strong) 0%,rgba(255,255,255,.86) 35%,rgba(255,255,255,.42) 54%,rgba(255,255,255,.12) 100%),radial-gradient(circle at 68% 42%,rgba(0,194,255,.17),transparent 34%);pointer-events:none;z-index:1}.dark .hero-panel:before{background:linear-gradient(90deg,rgba(6,16,29,.98) 0%,rgba(6,16,29,.90) 36%,rgba(6,16,29,.44) 58%,rgba(6,16,29,.12) 100%),radial-gradient(circle at 68% 42%,rgba(0,194,255,.18),transparent 34%)}.hero-copy{position:relative;z-index:3;padding:30px 34px;display:flex;flex-direction:column;justify-content:center}.pill{display:inline-flex;align-self:flex-start;border:1px solid var(--cyan);color:var(--cyan);border-radius:999px;padding:10px 16px;font-size:13px;font-weight:900;letter-spacing:.02em;background:rgba(0,194,255,.05)}h1{font-size:clamp(38px,4vw,64px);line-height:1.02;margin:16px 0 14px;font-weight:900;letter-spacing:-.02em}h1 strong{display:block;color:var(--blue)}.dark h1 strong{color:var(--cyan)}.hero-copy p{font-size:18px;line-height:1.55;color:var(--muted);max-width:620px;margin:0 0 20px}.actions{display:flex;gap:14px;margin-bottom:20px}.kpi-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi-strip div{min-height:110px;border:1px solid var(--line-strong);border-radius:20px;padding:18px;background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(234,245,255,.62));box-shadow:var(--soft-shadow);position:relative;overflow:hidden}.dark .kpi-strip div{background:linear-gradient(145deg,rgba(18,40,68,.96),rgba(10,28,49,.66))}.kpi-strip div:after{content:"";position:absolute;right:-35px;top:-35px;width:112px;height:112px;border-radius:50%;background:rgba(0,194,255,.09)}.kpi-strip div i{position:absolute;left:18px;right:18px;bottom:12px;height:3px;border-radius:10px;background:linear-gradient(90deg,var(--green) 0 70%,rgba(0,194,255,.2) 70%)}.kpi-strip b{display:block;font-size:28px;color:var(--green);font-weight:900}.kpi-strip span{display:block;color:var(--muted);font-size:14px;margin-top:7px}.kpi-strip em{position:absolute;right:18px;bottom:18px;font-style:normal;color:var(--cyan);font-size:12px;font-weight:800}.twin-canvas{position:relative;z-index:2;min-height:700px;overflow:hidden;border-radius:0 30px 30px 0}.city{position:absolute;inset:-2%;width:104%;height:104%;object-fit:cover;object-position:center;filter:saturate(1.08) contrast(1.03);transform:scale(1.02);animation:cityBreath 10s ease-in-out infinite alternate}.city-dark{display:none}.dark .city-light{display:none}.dark .city-dark{display:block}@keyframes cityBreath{to{transform:scale(1.055)}}.twin-canvas:before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(circle at 54% 45%,transparent 0 42%,rgba(255,255,255,.18) 75%),linear-gradient(90deg,rgba(255,255,255,.40),transparent 22%,transparent 78%,rgba(255,255,255,.18))}.dark .twin-canvas:before{background:radial-gradient(circle at 54% 45%,transparent 0 44%,rgba(0,0,0,.38) 82%),linear-gradient(90deg,rgba(6,16,29,.45),transparent 22%,transparent 75%,rgba(6,16,29,.28))}.data-flow{position:absolute;height:2px;width:48%;background:linear-gradient(90deg,transparent,var(--cyan),transparent);opacity:.70;filter:drop-shadow(0 0 10px var(--cyan));animation:flow 5s linear infinite;z-index:4}.f1{top:31%;left:22%;transform:rotate(8deg)}.f2{top:61%;left:6%;transform:rotate(21deg);animation-delay:1.2s}.f3{top:73%;left:28%;transform:rotate(-8deg);animation-delay:2.2s}.f4{top:46%;left:38%;transform:rotate(-21deg);animation-delay:3.1s}@keyframes flow{0%{clip-path:inset(0 100% 0 0)}50%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 100%)}}.hotspot{position:absolute;z-index:6;display:grid;grid-template-columns:32px auto;grid-template-rows:auto auto;column-gap:11px;text-align:left;align-items:center;min-width:218px;padding:14px 16px;border:1px solid var(--line-strong);border-radius:18px;background:rgba(255,255,255,.88);box-shadow:0 18px 45px rgba(13,57,118,.17);backdrop-filter:blur(16px);transition:.22s;color:var(--text)}.dark .hotspot{background:rgba(10,27,48,.86);box-shadow:0 18px 42px rgba(0,0,0,.36)}.hotspot:hover{transform:translateY(-4px) scale(1.02);border-color:var(--cyan);box-shadow:0 24px 60px rgba(0,194,255,.18)}.hotspot svg{grid-row:1/3;width:24px;height:24px;color:var(--icon)}.hotspot b{font-size:14px}.hotspot span{font-size:12px;color:var(--muted);margin-top:4px}.h-energy{left:18%;top:13%}.h-ai{right:8%;top:18%}.h-hvac{left:32%;top:43%}.h-water{right:5%;top:58%}.h-security{left:47%;top:70%}.module-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:16px}.module-grid button,.protocol-card,.flow-card,.industries-card{border-radius:24px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--soft-shadow);backdrop-filter:blur(20px)}.module-grid button{min-height:150px;padding:22px 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;transition:.24s;color:var(--text)}.module-grid button svg{width:34px;height:34px;color:var(--icon);stroke-width:1.65}.module-grid button:hover{transform:translateY(-5px);border-color:var(--cyan);box-shadow:0 22px 50px rgba(0,144,255,.18)}.module-grid b{font-size:15px}.module-grid span{font-size:12px;text-align:center;color:var(--muted)}.info-grid{display:grid;grid-template-columns:1.05fr 1.25fr 1fr;gap:14px;margin-top:16px}.info-grid>div{padding:22px}.info-grid h3{margin:0 0 16px;font-size:15px;text-transform:uppercase;letter-spacing:.04em}.protocols,.industries{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.protocols span,.industries span,.flow span{border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center;background:rgba(255,255,255,.42);font-weight:850;color:var(--text)}.dark .protocols span,.dark .industries span,.dark .flow span{background:rgba(255,255,255,.04)}.flow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.flow b{color:var(--cyan);font-size:24px}.ops-panel{grid-column:3;grid-row:2/4;border-radius:28px;padding:16px;min-width:0;overflow:auto}.tabs{display:flex;gap:8px;background:rgba(25,118,255,.06);border:1px solid var(--line);border-radius:18px;padding:6px;margin-bottom:14px}.tabs button{flex:1;border:0;border-radius:13px;background:transparent;padding:12px 6px;font-weight:900;color:var(--muted)}.tabs button.active{background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;box-shadow:0 10px 22px rgba(22,119,255,.22)}.tab-body{display:none}.tab-body.active{display:block}.ops-panel h3{font-size:17px;margin:12px 2px 16px}.ops-panel small{float:right;color:var(--green);font-size:12px}.metric{border:1px solid var(--line);border-radius:18px;padding:16px;margin:10px 0;background:rgba(255,255,255,.48);position:relative}.dark .metric{background:rgba(255,255,255,.04)}.metric span{display:block;color:var(--muted);font-size:13px}.metric b{font-size:26px;display:block;margin-top:6px}.metric.alert b{color:var(--red)}/* old decorative triangle removed — replaced with SCADA gauges/sparkline below */.recommendations button{width:100%;margin-top:9px;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--surface-strong);text-align:left}.ai-chat{display:flex;gap:8px;margin-top:18px}.ai-chat input{min-width:0;flex:1;border:1px solid var(--line);border-radius:15px;padding:14px;background:var(--surface-strong);outline:0;color:var(--text)}.ai-chat button{width:52px;border:0;border-radius:15px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff}.dock{grid-column:2;grid-row:3;justify-self:center;align-self:end;display:flex;gap:8px;padding:10px;border-radius:27px;z-index:40;background:rgba(255,255,255,.90)}.dark .dock{background:rgba(8,21,38,.86)}.dock button{height:52px;min-width:96px;border-radius:16px;border:1px solid var(--line-strong);background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(236,246,255,.68));display:flex;align-items:center;justify-content:center;gap:9px;font-weight:850;transition:.22s;box-shadow:0 8px 22px rgba(13,57,118,.08);color:var(--text)}.dark .dock button{background:linear-gradient(180deg,rgba(24,47,76,.92),rgba(12,29,50,.72))}.dock button svg{width:20px;height:20px;color:var(--icon);stroke-width:1.75}.dock button:hover{transform:translateY(-5px) scale(1.03);border-color:var(--cyan)}.dock button.active{background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;border-color:transparent;box-shadow:0 18px 38px rgba(22,119,255,.30)}.dock button.active svg{color:#fff}.window-layer{position:fixed;inset-inline-start:calc(var(--rail) + 22px);inset-inline-end:calc(var(--ops) + 28px);top:calc(var(--header) + 14px);bottom:calc(var(--dock) + 28px);pointer-events:none;z-index:80}.app-window{position:absolute;width:min(560px,90%);min-height:340px;border-radius:24px;background:var(--surface-strong);border:1px solid var(--line-strong);box-shadow:0 30px 90px rgba(0,0,0,.28);backdrop-filter:blur(28px);overflow:hidden;pointer-events:auto;resize:both}.window-head{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,rgba(0,194,255,.10),transparent);user-select:none}.window-head b{color:var(--cyan)}.window-actions{display:flex;gap:8px}.window-actions button{width:34px;height:34px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-weight:900}.window-actions .close:hover{background:var(--red);color:#fff}.window-body{padding:18px}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dash-card{border:1px solid var(--line-strong);border-radius:18px;padding:18px;background:rgba(25,118,255,.05)}.dash-card span{display:block;color:var(--muted);font-size:13px}.dash-card b{display:block;margin-top:8px;color:var(--green);font-size:25px}.chart{height:85px;border-radius:18px;background:linear-gradient(135deg,rgba(0,194,255,.18),rgba(0,216,122,.08));border-bottom:3px solid var(--cyan);position:relative;overflow:hidden}.chart:before{content:"";position:absolute;inset:18px;background:linear-gradient(140deg,transparent 10%,rgba(255,255,255,.24),transparent 42%,rgba(255,255,255,.15),transparent 70%);animation:shine 3s linear infinite}@keyframes shine{to{transform:translateX(100%)}}.app-window.minimized{height:62px!important;min-height:62px;resize:none}.app-window.minimized .window-body{display:none}.mega-layer{position:fixed;top:74px;left:345px;z-index:90}.mega{display:grid;grid-template-columns:repeat(3,160px);gap:10px;background:var(--surface-strong);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;padding:16px;backdrop-filter:blur(24px)}.mega button{border:1px solid var(--line);border-radius:14px;background:transparent;padding:14px;text-align:left;font-weight:800}.mega button:hover{background:rgba(0,194,255,.1);border-color:var(--cyan)}[dir="rtl"] .hotspot{text-align:right}[dir="rtl"] .sidebar button span{left:auto;right:66px}[dir="rtl"] .recommendations button{text-align:right}@media(max-width:1400px){:root{--ops:300px}.module-grid{grid-template-columns:repeat(3,1fr)}.hero-panel{grid-template-columns:45% 55%}.global-search{display:none}.dock button{min-width:80px}.dock button span{display:none}}@media(max-width:980px){body{overflow:auto}.app-shell{height:auto;min-height:100vh;display:block;padding:0}.topbar{position:sticky;top:0;flex-wrap:wrap;height:auto}.brand{width:220px}.mega-nav{order:3;width:100%;overflow:auto}.sidebar,.ops-panel,.dock{display:none}.workspace{padding:14px;overflow:visible}.hero-panel{grid-template-columns:1fr}.twin-canvas{min-height:430px}.info-grid{grid-template-columns:1fr}.module-grid{grid-template-columns:repeat(2,1fr)}.window-layer{left:10px;right:10px;top:110px;bottom:20px}}

/* ================= V3.1 — Framed hero stage + professional icon system ================= */
:root{--indigo:#6a5cf5;--teal:#16c9c0}
.dark{--indigo:#5848f4;--teal:#3eeae1}

/* ---- Twin canvas: no more edge-to-edge photo. It's now a designed panel with a framed stage inside ---- */
.twin-canvas{display:flex;align-items:center;justify-content:center;padding:26px 30px 26px 14px;background:
  radial-gradient(circle at 18% 12%,rgba(0,194,255,.14),transparent 40%),
  radial-gradient(circle at 86% 82%,rgba(109,92,245,.12),transparent 42%),
  linear-gradient(160deg,rgba(235,244,255,.9),rgba(255,255,255,.55) 55%,rgba(235,244,255,.85));
}
.dark .twin-canvas{background:
  radial-gradient(circle at 18% 12%,rgba(0,194,255,.16),transparent 42%),
  radial-gradient(circle at 86% 82%,rgba(109,92,245,.16),transparent 44%),
  linear-gradient(160deg,rgba(7,18,33,.96),rgba(6,15,27,.88) 55%,rgba(7,18,33,.96));
}
/* dot-grid pattern removed per feedback — replaced with animated scan lines below */
.canvas-glow{position:absolute;border-radius:50%;filter:blur(50px);z-index:0;pointer-events:none;opacity:.55}
.canvas-glow.g1{width:280px;height:280px;left:-60px;top:-40px;background:radial-gradient(circle,rgba(0,194,255,.35),transparent 70%)}
.canvas-glow.g2{width:260px;height:260px;right:-50px;bottom:-50px;background:radial-gradient(circle,rgba(109,92,245,.3),transparent 70%)}

.twin-stage{position:relative;z-index:1;width:100%;height:100%;border-radius:24px;overflow:hidden;
  border:1px solid var(--line-strong);box-shadow:0 30px 70px rgba(13,57,118,.22),0 2px 0 rgba(255,255,255,.5) inset;}
.dark .twin-stage{box-shadow:0 30px 80px rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,.06) inset}
.twin-stage .city{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;border-radius:0}
.stage-sheen{position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:24px;
  background:radial-gradient(circle at 54% 40%,transparent 0 40%,rgba(255,255,255,.14) 78%),
  linear-gradient(180deg,rgba(255,255,255,.22),transparent 18%,transparent 82%,rgba(0,0,0,.10));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);}
.dark .stage-sheen{background:radial-gradient(circle at 54% 40%,transparent 0 42%,rgba(0,0,0,.30) 80%),
  linear-gradient(180deg,rgba(255,255,255,.06),transparent 18%,transparent 82%,rgba(0,0,0,.25));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);}

/* ---- Category accent map ---- */
.h-energy,.kpi-energy{--c:var(--green)}
.h-hvac{--c:var(--cyan)}
.h-ai{--c:var(--indigo)}
.h-water{--c:var(--blue)}
.h-security{--c:var(--indigo)}
.kpi-maint{--c:var(--amber)}
.kpi-uptime{--c:var(--blue)}
.kpi-response{--c:var(--indigo)}

/* ---- Hotspot: icon becomes a colored badge chip, not a flat line icon ---- */
.hotspot{grid-template-columns:44px auto;gap:0 12px}
.hotspot .h-icon{grid-row:1/3;width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 18%,transparent),color-mix(in srgb,var(--c) 8%,transparent));
  border:1px solid color-mix(in srgb,var(--c) 30%,transparent);box-shadow:0 6px 16px color-mix(in srgb,var(--c) 22%,transparent)}
.hotspot .h-icon svg{width:22px;height:22px;flex:0 0 22px;color:var(--c);stroke-width:2}
.hotspot b{font-size:14px}
.hotspot .h-sub{font-size:12px;color:var(--muted);margin-top:3px}
.hotspot:hover .h-icon{transform:scale(1.08)}
.hotspot:hover{border-color:color-mix(in srgb,var(--c) 55%,var(--line-strong))}

/* ---- KPI cards: colored icon badge to match reference layout ---- */
.kpi-strip div{display:grid;grid-template-columns:40px 1fr;column-gap:12px;row-gap:2px;align-items:start}
.kpi-icon{grid-row:1/3;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c,var(--blue)) 18%,transparent),color-mix(in srgb,var(--c,var(--blue)) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--c,var(--blue)) 28%,transparent)}
.kpi-icon svg{width:20px;height:20px;flex:0 0 20px;color:var(--c,var(--blue));stroke-width:2}
.kpi-strip b{grid-column:2}
.kpi-strip span:not(.kpi-icon){grid-column:2}
.kpi-strip .kpi-icon{display:flex;align-items:center;justify-content:center}

/* ---- Module grid icon colors now handled by the v3.3 Product Suite block below ---- */

@media(max-width:980px){.twin-canvas{padding:16px}.twin-stage{max-height:420px}}

/* ================= V3.2 — Clean city-only hero artwork (no baked chrome), invisible interactive zones ================= */
.twin-stage{width:100%;height:auto;aspect-ratio:1220/725;max-height:100%;background:linear-gradient(160deg,#f3f8ff,#e7f1ff);margin:auto}
.dark .twin-stage{background:linear-gradient(160deg,#050d18,#081327)}
.twin-stage .city{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;border-radius:0;filter:none;transform:none;animation:none}
.twin-canvas{padding:16px;align-items:center;justify-content:center}


/* Invisible interactive click zones sitting over the artwork's own labelled cards */
.hot{position:absolute;z-index:6;border-radius:16px;border:0;background:transparent;cursor:pointer;transition:.2s}
.hot:hover,.hot:focus-visible{background:rgba(0,194,255,.10);box-shadow:0 0 0 2px var(--cyan) inset;outline:none}

@media(max-width:980px){.twin-canvas{padding:14px}.twin-stage{max-height:340px}}

/* ================= V3.3 — Product suite grid, KPI overlap fix, responsive type ================= */
:root{--violet:#a855f7;--rose:#fb5ea8;--sky:#38bdf8}
.dark{--violet:#a046f6;--rose:#fa4299;--sky:#44c1f8}

/* ---- Responsive fluid type everywhere it matters ---- */
.hero-copy p{font-size:clamp(14px,1.15vw,18px)}
.pill{font-size:clamp(11px,.8vw,13px)}
.kpi-strip b{font-size:clamp(20px,1.7vw,28px)}
.kpi-label{font-size:clamp(12px,.95vw,14px)}
.module-grid b{font-size:clamp(13px,1vw,15px)}
.module-grid span:not(.mod-icon){font-size:clamp(11px,.85vw,12px)}
.protocols span,.industries span,.flow span{font-size:clamp(12px,.95vw,14px)}
.hotspot b,.suite-head h2{letter-spacing:-.01em}
h1{letter-spacing:-.02em}

/* ---- KPI card: value + trend badge sit inline, label below — no more overlap ---- */
.kpi-strip div{display:grid;grid-template-columns:40px 1fr;column-gap:12px;row-gap:2px;align-items:start;padding:16px 18px 20px}
.kpi-icon{grid-row:1/3}
.kpi-row{grid-column:2;display:flex;align-items:baseline;gap:8px;min-width:0}
.kpi-row b{color:var(--green);font-weight:900;white-space:nowrap}
.kpi-row em{font-style:normal;color:var(--cyan);font-size:12px;font-weight:800;white-space:nowrap}
.kpi-label{grid-column:2;display:block;color:var(--muted);margin-top:2px;line-height:1.3}
.kpi-strip div i{position:absolute;left:18px;right:18px;bottom:10px;height:3px;border-radius:10px;background:linear-gradient(90deg,var(--green) 0 70%,rgba(0,194,255,.2) 70%)}

/* ---- Product Suite section ---- */
.suite-section{margin-top:26px}
.suite-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.suite-head h2{margin:0;font-size:clamp(19px,1.6vw,24px);font-weight:900;letter-spacing:-.02em}
.suite-head p{margin:0;color:var(--muted);font-size:clamp(12px,.95vw,14px)}

.module-grid{grid-template-columns:repeat(5,1fr)}
.module-grid button{min-height:168px;gap:12px;padding:24px 14px 20px}
.mod-icon{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c,var(--blue)) 16%,transparent),color-mix(in srgb,var(--c,var(--blue)) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--c,var(--blue)) 30%,transparent);
  box-shadow:0 8px 18px color-mix(in srgb,var(--c,var(--blue)) 18%,transparent);transition:.24s}
.module-grid .mod-icon svg{width:26px;height:26px;flex:0 0 26px;color:var(--c,var(--blue));stroke-width:1.8}
.module-grid button:hover .mod-icon{transform:translateY(-2px) scale(1.06)}
.module-grid button span:not(.mod-icon){color:var(--muted);line-height:1.35}

.module-grid button[data-app="bms"]{--c:var(--blue)}
.module-grid button[data-app="scada"]{--c:var(--cyan)}
.module-grid button[data-app="ems"]{--c:var(--green)}
.module-grid button[data-app="ai"]{--c:var(--indigo)}
.module-grid button[data-app="orchestrator"]{--c:var(--violet)}
.module-grid button[data-app="digitalTwin"]{--c:var(--sky)}
.module-grid button[data-app="edge"]{--c:var(--amber)}
.module-grid button[data-app="cloud"]{--c:var(--teal)}
.module-grid button[data-app="studio"]{--c:var(--rose)}
.module-grid button[data-app="mobile"]{--c:var(--purple)}
/* neutralize old single-color rule from v3.1 */
.module-grid button svg{color:var(--c,var(--icon))}

@media(max-width:1400px){.module-grid{grid-template-columns:repeat(5,1fr)}}
@media(max-width:1180px){.module-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:980px){.module-grid{grid-template-columns:repeat(2,1fr)}.suite-head{flex-direction:column;gap:4px}}

/* ================= V3.4 — Icon-matched text colors, protocol icon badges, RTL polish ================= */

/* ---- Hue-true, contrast-safe text variants (hand-tuned in HSL space so amber doesn't turn brown, etc.) ---- */
:root{
  --blue-text:#0055cc;--cyan-text:#00778f;--green-text:#00915a;--indigo-text:#3324c9;--violet-text:#7d0fd6;
  --sky-text:#0277ac;--amber-text:#996200;--teal-text:#0e8177;--rose-text:#c2006b;--purple-text:#5a13d6;
}
.dark{
  --blue-text:var(--blue);--cyan-text:var(--cyan);--green-text:var(--green);--indigo-text:var(--indigo);--violet-text:var(--violet);
  --sky-text:var(--sky);--amber-text:var(--amber);--teal-text:var(--teal);--rose-text:var(--rose);--purple-text:var(--purple);
}
.module-grid button[data-app="bms"]{--ct:var(--blue-text)}
.module-grid button[data-app="scada"]{--ct:var(--cyan-text)}
.module-grid button[data-app="ems"]{--ct:var(--green-text)}
.module-grid button[data-app="ai"]{--ct:var(--indigo-text)}
.module-grid button[data-app="orchestrator"]{--ct:var(--violet-text)}
.module-grid button[data-app="digitalTwin"]{--ct:var(--sky-text)}
.module-grid button[data-app="edge"]{--ct:var(--amber-text)}
.module-grid button[data-app="cloud"]{--ct:var(--teal-text)}
.module-grid button[data-app="studio"]{--ct:var(--rose-text)}
.module-grid button[data-app="mobile"]{--ct:var(--purple-text)}
.proto-opcua{--ct:var(--blue-text)}
.proto-bacnet{--ct:var(--indigo-text)}
.proto-modbus{--ct:var(--cyan-text)}
.proto-knx{--ct:var(--amber-text)}
.proto-mqtt{--ct:var(--purple-text)}
.proto-profinet{--ct:var(--violet-text)}
.proto-siemens{--ct:var(--teal-text)}
.proto-schneider{--ct:var(--green-text)}

/* ---- Product suite: title text now matches its icon's accent color ---- */
.module-grid b{color:var(--ct,var(--text));transition:.2s}
.dark .module-grid b{color:var(--ct,var(--text))}

/* ---- Open Integration: protocol pills become icon + colored-name badges ---- */
.protocols{grid-template-columns:repeat(2,1fr)}
.proto{display:flex;align-items:center;gap:10px;justify-content:flex-start;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.42);transition:.2s;color:var(--text)}
.dark .proto{background:rgba(255,255,255,.04)}
.proto-icon{width:32px;height:32px;flex:0 0 auto;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 18%,transparent),color-mix(in srgb,var(--c) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--c) 30%,transparent)}
.proto-icon svg{width:17px;height:17px;flex:0 0 17px;color:var(--c);stroke-width:2}
.proto b{font-weight:850;font-size:13px;color:var(--ct,var(--c))}
.dark .proto b{color:var(--ct,var(--c))}
.proto:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--c) 55%,var(--line))}
.proto-opcua{--c:var(--blue)}
.proto-bacnet{--c:var(--indigo)}
.proto-modbus{--c:var(--cyan)}
.proto-knx{--c:var(--amber)}
.proto-mqtt{--c:var(--purple)}
.proto-profinet{--c:var(--violet)}
.proto-siemens{--c:var(--teal)}
.proto-schneider{--c:var(--green)}

/* ---- RTL: let native bidi grid/flex reversal handle it — no fragile order hacks ---- */
[dir="rtl"] .proto{text-align:right;direction:rtl}
[dir="rtl"] .suite-head{flex-direction:row-reverse}
[dir="rtl"] .kpi-strip div{direction:rtl}


/* ================= V3.5 — Full-card color theming so the whole card reads as one coordinated accent ================= */
.module-grid button{position:relative;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--c,var(--blue)) 6%,var(--surface)) 0%,var(--surface) 60%)}
.module-grid button::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--c,var(--blue))}
.module-grid button:hover{border-color:color-mix(in srgb,var(--c,var(--blue)) 45%,var(--line))}

.proto{background:linear-gradient(120deg,color-mix(in srgb,var(--c) 7%,var(--surface)) 0%,var(--surface) 70%);border-color:color-mix(in srgb,var(--c) 16%,var(--line))}
.dark .proto{background:linear-gradient(120deg,color-mix(in srgb,var(--c) 10%,rgba(255,255,255,.03)) 0%,rgba(255,255,255,.03) 70%)}

.kpi-strip div{background:linear-gradient(150deg,color-mix(in srgb,var(--c,var(--blue)) 10%,var(--surface-strong)) 0%,var(--surface-strong) 62%)!important}
.dark .kpi-strip div{background:linear-gradient(150deg,color-mix(in srgb,var(--c,var(--blue)) 14%,rgba(18,40,68,.9)) 0%,rgba(10,28,49,.7) 62%)!important}
.kpi-strip div i{background:linear-gradient(90deg,var(--c,var(--green)) 0 70%,transparent 70%)!important}

/* ================= V3.6 — Popup windows now themed to match the product/system they belong to ================= */
.app-window{--wc:var(--blue);border-top:3px solid var(--wc)}
.window-head{background:linear-gradient(135deg,color-mix(in srgb,var(--wc) 14%,transparent),transparent)}
.window-head b{color:var(--wc)}
.dash-card{border-color:color-mix(in srgb,var(--wc) 24%,var(--line-strong));background:color-mix(in srgb,var(--wc) 6%,transparent)}
.dash-card b{color:var(--wc)}
.chart{background:linear-gradient(135deg,color-mix(in srgb,var(--wc) 20%,transparent),color-mix(in srgb,var(--wc) 8%,transparent));border-bottom:3px solid var(--wc)}

/* ================= V3.7 — Industry icons + Our Ecosystem external links ================= */

/* ---- Industries: same icon-badge treatment as protocols ---- */
.industries{grid-template-columns:repeat(2,1fr)}
.ind{display:flex;align-items:center;gap:10px;justify-content:flex-start;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(120deg,color-mix(in srgb,var(--c) 7%,var(--surface)) 0%,var(--surface) 70%);border-color:color-mix(in srgb,var(--c) 16%,var(--line));transition:.2s;color:var(--text)}
.dark .ind{background:linear-gradient(120deg,color-mix(in srgb,var(--c) 10%,rgba(255,255,255,.03)) 0%,rgba(255,255,255,.03) 70%)}
.ind-icon{width:32px;height:32px;flex:0 0 auto;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 18%,transparent),color-mix(in srgb,var(--c) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--c) 30%,transparent)}
.ind-icon svg{width:17px;height:17px;flex:0 0 17px;color:var(--c);stroke-width:2}
.ind b{font-weight:850;font-size:13px;color:var(--ct,var(--c))}
.ind:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--c) 55%,var(--line))}
.ind-hospitals{--c:var(--red);--ct:#c81e35}
.dark .ind-hospitals{--ct:var(--red)}
.ind-hotels{--c:var(--rose);--ct:var(--rose-text)}
.ind-industrial{--c:var(--cyan);--ct:var(--cyan-text)}
.ind-parks{--c:var(--green);--ct:var(--green-text)}
.ind-oilgas{--c:var(--amber);--ct:var(--amber-text)}
.ind-datacenters{--c:var(--indigo);--ct:var(--indigo-text)}
.dark .ind b{color:var(--c)}

/* ---- Our Ecosystem: real external links to sibling platforms ---- */
.ecosystem-section{margin-top:16px}
.ecosystem-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.eco-card{position:relative;overflow:hidden;display:flex;align-items:center;gap:14px;padding:20px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--c) 7%,var(--surface)) 0%,var(--surface) 60%);box-shadow:var(--soft-shadow);text-decoration:none;color:var(--text);transition:.24s}
.dark .eco-card{background:linear-gradient(180deg,color-mix(in srgb,var(--c) 10%,rgba(255,255,255,.03)) 0%,rgba(255,255,255,.03) 60%)}
.eco-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--c)}
.eco-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c) 50%,var(--line));box-shadow:0 20px 44px color-mix(in srgb,var(--c) 20%,transparent)}
.eco-icon{width:52px;height:52px;flex:0 0 auto;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--c) 18%,transparent),color-mix(in srgb,var(--c) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--c) 30%,transparent);box-shadow:0 8px 18px color-mix(in srgb,var(--c) 18%,transparent)}
.eco-icon svg{width:26px;height:26px;flex:0 0 26px;color:var(--c);stroke-width:1.8}
.eco-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.eco-text b{font-size:15px;color:var(--ct,var(--c))}
.dark .eco-text b{color:var(--c)}
.eco-text span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eco-go{position:absolute;top:16px;inset-inline-end:16px;width:16px;height:16px;color:var(--muted);opacity:.6;transition:.2s}
.eco-card:hover .eco-go{opacity:1;color:var(--c);transform:translate(2px,-2px)}
.eco-site{--c:var(--blue);--ct:var(--blue-text)}
.eco-bms{--c:var(--cyan);--ct:var(--cyan-text)}
.eco-erp{--c:var(--violet);--ct:var(--violet-text)}

@media(max-width:1180px){.ecosystem-grid{grid-template-columns:1fr}}
@media(max-width:980px){.industries{grid-template-columns:1fr}}

/* ================= V3.8 — Remove letter-spacing in Arabic (breaks cursive joining / detaches diacritics & periods) ================= */
[dir="rtl"] h1,[dir="rtl"] h2,[dir="rtl"] h3,[dir="rtl"] .pill,[dir="rtl"] .suite-head h2{letter-spacing:normal}
[dir="rtl"] h1{line-height:1.35;margin-top:22px}
[dir="rtl"] h1 strong{margin-top:6px}

/* ================= V3.9 — Animated laser/light-sweep lines in the hero canvas background ================= */
/* base .scan-line rule superseded below (faster, higher z-index) */
.scan-line{position:absolute;height:2px;width:44%;pointer-events:none;z-index:5;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),var(--cyan),transparent);
  filter:drop-shadow(0 0 8px var(--cyan));opacity:.85;animation:scanFlow 2.4s linear infinite}
.dark .scan-line{background:linear-gradient(90deg,transparent,#fff,var(--cyan),transparent);opacity:.95}
.scan-line.s1{top:8%;left:2%;transform:rotate(3deg)}
.scan-line.s2{top:48%;left:0;transform:rotate(-2deg);animation-delay:.8s;width:38%}
.scan-line.s3{bottom:8%;left:6%;transform:rotate(4deg);animation-delay:1.6s;width:34%}
@keyframes scanFlow{0%{clip-path:inset(0 100% 0 0);opacity:0}10%{opacity:.9}90%{opacity:.9}100%{clip-path:inset(0 0 0 0);opacity:0}}
@media(max-width:980px){.scan-line{display:none}}

/* V3.10 band-aid transforms removed — real bug was grid centering, fixed at the source in V3.11 */

/* ================= V3.11 — Proper Arabic typeface (Inter has no real Arabic glyph support, which was detaching dots/diacritics) ================= */
[dir="rtl"] body,[dir="rtl"]{font-family:'Cairo',Inter,'Segoe UI',Tahoma,sans-serif}

/* ================= V3.13 — SCADA-style metric gauges (replaces overlapping decorative triangle) ================= */
.metric{display:flex;align-items:center;justify-content:space-between;gap:12px}
.metric-text{min-width:0}
.metric-text span{display:block;color:var(--muted);font-size:13px}
.metric-text b{font-size:26px;display:block;margin-top:6px;color:var(--text)}
.metric.alert .metric-text b{color:var(--red)}

/* Circular SCADA gauge */
.metric-gauge{width:56px;height:56px;flex:0 0 56px}
.mg-track{fill:none;stroke:var(--line-strong);stroke-width:5}
.mg-fill{fill:none;stroke-width:5;stroke-linecap:round;transform-origin:28px 28px;transform:rotate(-90deg);transition:stroke-dasharray .6s ease}
.mg-label{font-size:13px;font-weight:800;fill:var(--text);text-anchor:middle;dominant-baseline:central;font-family:Inter,system-ui,sans-serif;paint-order:stroke;stroke:var(--surface-strong);stroke-width:3px;stroke-linejoin:round}
.metric-sites .mg-fill{stroke:var(--blue)}
.metric-alarms .mg-fill{stroke:var(--red)}
.metric-devices .mg-fill{stroke:var(--green)}

/* Energy Today — heatmap-style sparkline instead of a floating triangle */
.metric-spark{width:64px;height:34px;flex:0 0 64px}
.metric-spark rect{fill:var(--amber)}
.metric-spark rect:nth-child(1){opacity:.45}
.metric-spark rect:nth-child(2){opacity:.6}
.metric-spark rect:nth-child(3){opacity:.5}
.metric-spark rect:nth-child(4){opacity:.75}
.metric-spark rect:nth-child(5){opacity:1}
.metric-spark rect:nth-child(6){opacity:.85}

@media(max-width:1400px){.metric-gauge,.metric-spark{display:none}}
