.iot-visual-stage{border:1px solid var(--border);border-radius:24px;background:radial-gradient(1200px 420px at 10% -10%,rgba(239,68,68,.08),transparent 60%),radial-gradient(900px 340px at 100% 0%,rgba(59,130,246,.08),transparent 55%),var(--bg-card);box-shadow:var(--shadow-lg);overflow:hidden}.iot-visual-header{border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.02),transparent)}.iot-kicker-chip{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--border);background:var(--bg);border-radius:9999px;padding:.45rem .85rem;font-size:.78rem;font-weight:700;color:var(--text)}.iot-kicker-chip:before{content:"";width:8px;height:8px;border-radius:9999px;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:0 0 0 4px #ef444414}.iot-main-canvas{position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--border);background:#0f172a;min-height:360px}.iot-main-canvas img{width:100%;height:100%;object-fit:cover;display:block}.iot-main-canvas:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0f172a0a,#0f172ab8);pointer-events:none}.iot-canvas-caption{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:2;display:grid;gap:.4rem;padding:.9rem 1rem;border-radius:14px;border:1px solid rgba(255,255,255,.14);background:#0f172ab8;backdrop-filter:blur(10px)}.iot-canvas-caption strong{color:#fff;font-size:.98rem;font-weight:700}.iot-canvas-caption span{color:#ffffffd1;font-size:.82rem;line-height:1.35}.iot-dashboard-card{border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--bg);box-shadow:var(--shadow-md);transform:rotate(-1.2deg);transition:transform .25s ease}.iot-dashboard-card:hover{transform:rotate(-.3deg) translateY(-2px)}.iot-dashboard-card img{width:100%;height:100%;min-height:260px;object-fit:cover;display:block}.iot-micro-grid{display:grid;grid-template-columns:1fr;gap:1rem}.iot-micro-tile{position:relative;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--bg);min-height:150px;box-shadow:var(--shadow-sm)}.iot-micro-tile img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(1.02)}.iot-micro-overlay{position:absolute;inset:auto 0 0;padding:.9rem 1rem;background:linear-gradient(180deg,transparent,rgba(15,23,42,.88));color:#fff;font-size:.85rem;line-height:1.3;font-weight:600}.iot-micro-overlay small{display:block;margin-top:.25rem;color:#ffffffbf;font-size:.72rem;font-weight:500}.iot-signal-list{display:grid;gap:.75rem}.iot-signal-item{display:grid;grid-template-columns:28px 1fr;gap:.75rem;align-items:start;padding:.85rem .95rem;border:1px solid var(--border);border-radius:14px;background:var(--bg)}.iot-signal-item svg{width:18px;height:18px;margin-top:2px;color:var(--primary)}.iot-signal-item strong{display:block;color:var(--text);font-size:.92rem;font-weight:700;margin-bottom:.2rem}.iot-signal-item span{color:var(--text-muted);font-size:.82rem;line-height:1.4}.iot-flow-panel{position:relative;border:1px solid var(--border);border-radius:20px;background:radial-gradient(480px 180px at 15% 0%,rgba(239,68,68,.08),transparent 70%),radial-gradient(480px 180px at 85% 0%,rgba(59,130,246,.1),transparent 70%),var(--bg);overflow:hidden}.iot-flow-panel:before{content:"";position:absolute;left:14%;right:14%;top:42%;height:2px;background:linear-gradient(90deg,#ef444438,#3b82f652);border-radius:9999px;z-index:0}.iot-flow-node{position:relative;z-index:1;border:1px solid var(--border);border-radius:14px;background:var(--bg-card);padding:.8rem .9rem;display:grid;grid-template-columns:34px 1fr;gap:.7rem;align-items:center}.iot-flow-node-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;border:1px solid var(--border);background:var(--bg);color:var(--primary)}.iot-flow-node-title{color:var(--text);font-size:.86rem;font-weight:700;line-height:1.2}.iot-flow-node-sub{color:var(--text-muted);font-size:.72rem;line-height:1.25;margin-top:.12rem}.iot-flow-hub{position:relative;z-index:2;border:1px solid rgba(59,130,246,.22);border-radius:18px;background:linear-gradient(180deg,#2563eb14,#2563eb05);padding:1rem;box-shadow:var(--shadow-md)}.iot-flow-hub-badge{display:inline-flex;align-items:center;gap:.4rem;border-radius:9999px;padding:.35rem .7rem;font-size:.72rem;font-weight:700;border:1px solid rgba(59,130,246,.2);background:#2563eb14;color:var(--text)}.iot-live-stream{border:1px solid var(--border);border-radius:16px;background:var(--bg-card);padding:.9rem}.iot-live-pill{display:inline-flex;align-items:flex-start;gap:.45rem;border:1px solid var(--border);background:var(--bg);border-radius:9999px;padding:.45rem .7rem;font-size:.75rem;color:var(--text-muted);white-space:normal;line-height:1.3}.iot-live-pill:before{content:"";width:7px;height:7px;border-radius:9999px;background:#22c55e;box-shadow:0 0 0 4px #22c55e1a;flex:0 0 auto}.iot-flow-panel-compact:before{display:none}.iot-flow-grid-6{display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:640px){.iot-flow-grid-6{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1280px){.iot-flow-grid-6{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1024px){.iot-visual-grid{display:grid;grid-template-columns:1.25fr .95fr;gap:1.25rem}.iot-lower-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:1.25rem}.iot-micro-grid{grid-template-columns:1fr}}@media(max-width:1023px){.iot-flow-panel:before{display:none}}
