:root{
  --line:rgba(92,180,255,.18);
  --line-strong:rgba(82,205,255,.42);
  --text:#edf8ff;
  --muted:#7f9eb4;
  --cyan:#58d8ff;
  --green:#5bf7d0;
  --violet:#c2b1ff;
  --orange:#ffb56f;
  --panel:rgba(6,19,34,.78);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at 54% 18%,#0b2844 0,#04111e 34%,#020710 72%);color:var(--text);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
body{overflow-x:auto}
button{font:inherit}
#app{min-width:1460px;min-height:100vh;background:linear-gradient(rgba(45,132,188,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(45,132,188,.025) 1px,transparent 1px);background-size:48px 48px}
.topbar{height:68px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:36px;background:rgba(2,9,20,.84);backdrop-filter:blur(20px)}
.brand{display:flex;align-items:center;gap:12px;min-width:260px}.brand-mark{width:40px;height:40px;border:1px solid #28bfff;border-radius:12px;display:grid;place-items:center;font-weight:900;font-size:20px;box-shadow:inset 0 0 24px #1aa9ff33,0 0 24px #1aa9ff1f}.brand b{display:block;font-size:18px}.brand span{display:block;color:#6f94aa;font-size:11px;margin-top:2px}
nav{display:flex;align-items:center;height:100%;gap:4px;flex:1}.nav{height:100%;padding:0 17px;border:0;border-bottom:2px solid transparent;background:none;color:#829db1;cursor:pointer}.nav.active{color:#fff;border-bottom-color:var(--cyan);background:linear-gradient(180deg,transparent,#18b8ff0e)}
.clock{font-size:10px;color:#80a0b6;letter-spacing:.1em}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 14px var(--green);margin-right:8px}
.layout{display:grid;grid-template-columns:208px minmax(930px,1fr) 318px;gap:12px;padding:12px;height:calc(100vh - 68px)}
.glass{background:linear-gradient(180deg,rgba(9,27,49,.8),rgba(4,14,29,.74));border:1px solid var(--line);box-shadow:inset 0 1px rgba(255,255,255,.025),0 12px 35px rgba(0,0,0,.08);backdrop-filter:blur(18px)}
.eyebrow{font-size:9px;color:#4dbdec;letter-spacing:.17em;text-transform:uppercase}
.module-sidebar{border-radius:16px;padding:17px;overflow:hidden}.side-head h2{font-size:19px;margin:6px 0 15px}.module-list{display:grid;gap:8px}.module-item{width:100%;display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:center;padding:11px 10px;border:1px solid rgba(76,157,215,.12);background:rgba(5,16,31,.48);border-radius:12px;color:#b5cad7;text-align:left;cursor:pointer;transition:.22s}.module-item:hover{border-color:#35c7ff55;transform:translateX(2px)}.module-item.active{border-color:#37d7ff88;background:linear-gradient(90deg,#0c5e8a55,#07304c33);color:white;box-shadow:inset 3px 0 #34dcff,0 0 20px #16aee50f}.module-icon{width:32px;height:32px;border-radius:10px;border:1px solid #3896c566;display:grid;place-items:center;color:#6bd1ff;font-size:15px}.module-copy b{display:block;font-size:12px}.module-copy em{display:block;font-style:normal;font-size:9px;color:#7391a5;margin-top:4px}.module-tip{margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}.module-tip span{display:block;font-size:9px;color:#56cbff;letter-spacing:.12em}.module-tip b{display:block;font-size:12px;margin:5px 0 7px}.module-tip p{margin:0;font-size:9px;line-height:1.6;color:#7f9cb1}
.center{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-width:0}.process-strip{border-radius:16px;padding:14px 16px 13px}.process-strip-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:12px}.process-title span{display:block;font-size:9px;color:#55ccff;letter-spacing:.15em}.process-title b{display:block;font-size:19px;margin-top:4px}.process-title em{display:block;font-size:10px;color:#8fb0c4;font-style:normal;margin-top:5px}.process-actions{display:flex;gap:8px}.process-actions button{border:1px solid #3c91bd66;background:#06182a;color:#9cbcd0;border-radius:9px;padding:9px 14px;cursor:pointer;min-width:86px}.process-actions button.primary{color:#fff;border-color:#2bcaff88;background:linear-gradient(180deg,#0b527a,#083956);box-shadow:0 0 20px rgba(43,202,255,.08)}
.process-track{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.process-stage{position:relative;border:1px solid rgba(76,157,215,.13);background:rgba(5,16,31,.48);border-radius:11px;padding:10px 9px;text-align:left;color:#afc5d3;cursor:pointer;transition:.22s;min-height:54px}.process-stage:hover{border-color:#35c7ff55;transform:translateY(-1px)}.process-stage.active{border-color:#37d7ff8c;background:linear-gradient(180deg,#0b4f735a,#071829);box-shadow:inset 0 2px 0 #34dcff,0 0 20px #16aee50d;color:#fff}.process-stage .num{display:block;font-size:8px;color:#67d3ff;letter-spacing:.1em}.process-stage strong{display:block;font-size:11px;line-height:1.3;margin-top:5px}
.scene-card{position:relative;border-radius:17px;border:1px solid #3389b955;overflow:hidden;min-height:610px;background:radial-gradient(circle at 50% 58%,rgba(31,157,255,.11),transparent 34%),radial-gradient(circle at 50% 45%,rgba(30,134,198,.07),transparent 42%),linear-gradient(180deg,#020812,#040b14);box-shadow:inset 0 0 70px rgba(24,122,178,.04)}#threeCanvas{width:100%;height:100%;display:block}.visual-fallback{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(circle at 50% 50%,rgba(40,136,185,.12),transparent 36%)}.visual-fallback.hidden{display:none}.visual-fallback svg{width:88%;max-width:900px;height:auto;opacity:.95}.fallback-note{position:absolute;left:24px;bottom:18px;font-size:10px;color:#7fa3b9}
.scene-status{position:absolute;right:16px;top:14px;padding:6px 10px;border-radius:999px;background:rgba(5,20,36,.62);border:1px solid rgba(83,191,255,.16);font-size:8px;letter-spacing:.12em;color:#78cfff;z-index:7}.scene-status.ok{color:#48ffc1}.scene-status.error{color:#ffc085}
.scene-title-card{position:absolute;left:18px;top:16px;max-width:360px;padding:0;z-index:6}.scene-title-card span{display:inline-flex;align-items:center;min-height:25px;padding:5px 9px;border-radius:999px;background:linear-gradient(90deg,#28bde9,#55e5ff);color:#04111b;font-size:9px;font-weight:800;letter-spacing:.08em;box-shadow:0 0 18px rgba(78,216,255,.2)}.scene-title-card b{display:block;font-size:13px;line-height:1.45;margin-top:7px;text-shadow:0 1px 4px #000}
.scene-kpis{position:absolute;right:16px;top:48px;display:flex;gap:8px;z-index:6}.scene-kpis>div{min-width:118px;padding:8px 10px;border-radius:10px;background:rgba(5,17,30,.54);border:1px solid rgba(83,191,255,.14);backdrop-filter:blur(8px)}.scene-kpis span,.defect-box span{display:block;font-size:7px;letter-spacing:.12em;color:#66cbef}.scene-kpis b{display:block;font-size:19px;margin-top:2px}.defect-box{display:none;position:absolute;left:67%;top:47%;padding:9px 12px;border:1px solid #ff615d88;background:rgba(51,9,13,.72);border-radius:9px;box-shadow:0 0 30px #ff514533;z-index:8;animation:pulseBox 1.1s ease-in-out infinite}.defect-box b{font-size:11px;display:block;margin:3px 0;color:#ff8e89}.defect-box em{font-size:9px;color:#eeb6b1;font-style:normal}@keyframes pulseBox{50%{box-shadow:0 0 42px #ff514566;transform:scale(1.015)}}
.agent-label-layer{position:absolute;inset:0;pointer-events:none;z-index:5}.agent-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.agent-lines line{stroke:#58d8ff;stroke-width:1.35;stroke-opacity:.74;stroke-dasharray:5 4;filter:drop-shadow(0 0 3px rgba(88,216,255,.35))}.agent-lines circle{fill:#58d8ff;filter:drop-shadow(0 0 4px rgba(88,216,255,.5))}.agent-line-label{fill:#dff8ff;font-size:10px;font-weight:700;paint-order:stroke;stroke:#03101a;stroke-width:3px;stroke-linejoin:round;letter-spacing:.02em}
.agent-card{position:absolute;width:225px;padding:0;color:#edf8ff;text-shadow:0 2px 5px rgba(0,0,0,.95)}.agent-card span{display:inline-flex;align-items:center;min-height:28px;padding:5px 11px;border-radius:999px;background:linear-gradient(90deg,#2bc8ee,#67e5ff);color:#04111b;font-size:11px;font-weight:900;letter-spacing:.04em;box-shadow:0 0 18px rgba(71,213,255,.24)}.agent-card b{display:block;font-size:14px;line-height:1.35;margin:7px 0 3px;color:#f4fbff}.agent-card p{margin:0;font-size:10px;line-height:1.5;color:#c3d9e6;max-width:205px}.agent-card.left{text-align:left}.agent-card.right{text-align:right}.agent-card.right p{margin-left:auto}.agent-card.left.top{left:18px;top:105px}.agent-card.left.mid{left:18px;top:270px}.agent-card.right.top{right:18px;top:120px}.agent-card.right.mid{right:18px;top:288px}.agent-card.right.bottom{right:18px;bottom:28px}.agent-card[data-index="3"] span{background:linear-gradient(90deg,#49efbf,#85ffd9)}.agent-card[data-index="4"] span{background:linear-gradient(90deg,#9d85ff,#d0c1ff)}
.right-panel{display:grid;grid-template-rows:auto 1fr auto;gap:10px;min-height:0}.right-panel section{border-radius:16px;padding:13px}.panel-title{font-size:12px;font-weight:800;margin-bottom:10px}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.metric-grid>div{border:1px solid #2c62823d;border-radius:9px;padding:9px;background:#06142172}.metric-grid span{display:block;color:#708da1;font-size:8px}.metric-grid b{font-size:16px;display:block;margin-top:4px}.ai-task{display:grid;align-content:center}.task-block{border:1px solid #2d6d934c;background:#06182a80;border-radius:10px;padding:9px 11px}.task-block.ai{border-color:#3af5c76b;box-shadow:inset 0 0 22px #25cfa90e}.task-block.twin{border-color:#8a7cff58}.task-block span{display:block;font-size:8px;color:#56cbff;letter-spacing:.12em}.task-block p{margin:4px 0 0;font-size:9px;line-height:1.5;color:#a2bac9}.task-arrow{display:grid;place-items:center;color:#2f769b;font-size:12px;padding:3px 0}.decision{min-height:190px}.decision-head span{font-size:8px;color:#40d3ff;border:1px solid #2f98c755;padding:3px 6px;border-radius:4px}.decision-head b{display:block;font-size:13px;margin:8px 0 4px}.decision p{font-size:9px;line-height:1.55;color:#7997aa;min-height:52px}.decision-row{display:flex;justify-content:space-between;border-top:1px solid #28526d38;padding-top:7px;margin-top:7px;font-size:9px;color:#7794a6}.decision-row b{font-size:11px;color:#ff9b73}.decision-row.success b{color:#47ffc1}
@media(max-height:850px){.layout{height:auto}.scene-card{min-height:620px}.center{grid-template-rows:auto 640px}}

/* ===== Portal pages ===== */
.page-view{display:none}
.page-view.active{display:grid}
#page-industrial.active{display:grid}
.portal-page,.dashboard-page{padding:14px 16px 18px;gap:12px;min-height:calc(100vh - 68px)}
.portal-page.active,.dashboard-page.active{display:grid}
.portal-hero{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-radius:18px;min-height:132px;background:radial-gradient(circle at 75% 40%,rgba(48,183,255,.12),transparent 32%),linear-gradient(180deg,rgba(9,29,52,.88),rgba(4,15,30,.8))}
.portal-hero h1,.dash-head h1{font-size:28px;margin:7px 0 8px;letter-spacing:-.03em}
.portal-hero p,.dash-head p{margin:0;color:#7f9fb5;font-size:12px;max-width:720px;line-height:1.7}
.hero-stats{display:grid;grid-template-columns:repeat(4,118px);gap:10px}
.hero-stats>div{border:1px solid rgba(84,188,255,.15);border-radius:12px;background:rgba(5,18,33,.58);padding:13px 12px;text-align:center}
.hero-stats span{display:block;font-size:9px;color:#7597ac}.hero-stats b{font-size:26px;display:inline-block;margin-top:4px}.hero-stats em{font-style:normal;font-size:9px;color:#65cfff;margin-left:4px}
.module-center-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.module-card{position:relative;border:1px solid rgba(74,168,222,.14);background:linear-gradient(180deg,rgba(7,23,41,.88),rgba(4,14,27,.82));border-radius:16px;padding:18px;min-height:215px;transition:.28s;overflow:hidden}
.module-card:before{content:'';position:absolute;inset:auto -25% -60% 30%;height:180px;background:radial-gradient(circle,rgba(46,190,255,.1),transparent 65%);pointer-events:none}
.module-card:hover{transform:translateY(-3px);border-color:rgba(67,204,255,.38);box-shadow:0 14px 40px rgba(0,0,0,.22),0 0 28px rgba(36,179,235,.07)}
.module-card.active-module{border-color:rgba(77,213,255,.45);box-shadow:inset 0 0 30px rgba(29,168,230,.06)}
.module-card-top{display:flex;justify-content:space-between;align-items:center}.module-glyph{width:44px;height:44px;border-radius:12px;border:1px solid rgba(82,193,255,.32);display:grid;place-items:center;font-size:20px;color:#68d8ff;background:rgba(22,89,125,.18)}
.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:8px;letter-spacing:.06em;border:1px solid rgba(80,180,225,.2);color:#7fb5cf}.status-pill.online{color:#62f5c9;border-color:rgba(88,244,196,.25);background:rgba(40,164,128,.08)}.status-pill.pilot{color:#ffd18f;border-color:rgba(255,184,99,.24);background:rgba(150,96,38,.08)}.status-pill.ready{color:#aab8c4}
.module-card h3{font-size:17px;margin:15px 0 8px}.module-card p{font-size:10px;line-height:1.65;color:#7d9caf;margin:0;min-height:50px}.module-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.module-meta span{font-size:8px;color:#7bc8ec;background:rgba(23,91,128,.18);border:1px solid rgba(68,158,205,.14);padding:4px 6px;border-radius:5px}.module-enter{position:absolute;right:16px;bottom:15px;border:0;background:none;color:#68d7ff;font-size:10px;cursor:pointer}.module-enter.disabled{color:#60788a;cursor:default}
.platform-arch{padding:18px 20px;border-radius:16px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.section-head>div>span{display:block;font-size:8px;color:#56caff;letter-spacing:.14em}.section-head>div>b{display:block;font-size:15px;margin-top:4px}.section-head>p{margin:0;font-size:10px;color:#718fa3}.section-head.compact{margin-bottom:12px}
.arch-flow{display:grid;grid-template-columns:1fr 28px 1fr 28px 1fr 28px 1fr 28px 1fr;align-items:center;gap:4px;margin-top:16px}.arch-flow>div{min-height:86px;border:1px solid rgba(72,158,207,.14);border-radius:11px;background:rgba(5,17,31,.58);padding:11px}.arch-flow>div.highlight{border-color:rgba(77,241,200,.34);box-shadow:inset 0 0 24px rgba(57,223,178,.06)}.arch-flow i{font-style:normal;font-size:8px;color:#55cfff}.arch-flow b{display:block;font-size:12px;margin:5px 0}.arch-flow span{font-size:9px;color:#708da1;line-height:1.45}.arch-flow>em{font-style:normal;text-align:center;color:#2d759a;font-size:18px}
/* AI center */
.ai-hero{background:radial-gradient(circle at 76% 35%,rgba(79,255,195,.11),transparent 29%),linear-gradient(180deg,rgba(9,29,52,.88),rgba(4,15,30,.8))}
.ai-health{display:flex;align-items:center;gap:16px;border:1px solid rgba(84,195,230,.15);border-radius:14px;padding:13px 16px;background:rgba(5,18,31,.52)}.pulse-dot{width:9px;height:9px;border-radius:50%;background:#58f5c6;box-shadow:0 0 12px #58f5c6;animation:pulseAgent 1.4s ease-in-out infinite}@keyframes pulseAgent{50%{opacity:.45;transform:scale(.8)}}.ai-health>div b{display:block;font-size:20px}.ai-health>div em{font-style:normal;font-size:9px;color:#7896aa}
.ai-layout-grid{display:grid;grid-template-columns:280px minmax(520px,1fr) 330px;gap:12px;min-height:470px}.agent-library,.orchestration,.agent-trace{border-radius:16px;padding:16px}.agent-lib-list{display:grid;gap:8px}.agent-lib{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:9px;border:1px solid rgba(75,160,208,.13);border-radius:10px;background:rgba(5,17,30,.54);padding:9px}.agent-lib.active{border-color:rgba(80,244,199,.32);background:linear-gradient(90deg,rgba(27,109,91,.16),rgba(5,17,30,.54))}.agent-lib>i{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;background:rgba(36,127,168,.2);border:1px solid rgba(74,185,227,.18);font-style:normal;color:#6cd6ff}.agent-lib b{display:block;font-size:11px}.agent-lib span{display:block;font-size:8px;color:#6f8fa3;margin-top:3px}.agent-lib>em{font-style:normal;font-size:8px;color:#7199b0}
.orchestration-canvas{position:relative;display:grid;align-content:center;min-height:400px;padding:18px;background:radial-gradient(circle at 50% 50%,rgba(42,170,220,.08),transparent 48%);border:1px solid rgba(66,151,200,.08);border-radius:13px}.orch-node{border:1px solid rgba(74,179,225,.2);border-radius:10px;background:rgba(5,19,33,.72);padding:10px 14px;text-align:center;justify-self:center;min-width:360px}.orch-node span{font-size:8px;color:#5bcfff;letter-spacing:.1em}.orch-node b{display:block;font-size:11px;margin-top:4px}.orch-lines{height:34px;display:flex;justify-content:center;gap:90px;align-items:center}.orch-lines i{width:1px;height:30px;background:linear-gradient(#47d6ff,transparent);box-shadow:0 0 7px rgba(71,214,255,.32)}.orch-agents{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.orch-agents>div{border:1px solid rgba(77,163,210,.16);border-radius:12px;padding:12px 7px;text-align:center;background:rgba(7,22,37,.68)}.orch-agents>div.active{border-color:rgba(82,245,197,.4);box-shadow:0 0 24px rgba(82,245,197,.08)}.orch-agents i{display:grid;place-items:center;width:40px;height:40px;margin:auto;border-radius:50%;background:rgba(28,104,140,.18);border:1px solid rgba(74,189,231,.2);font-style:normal;font-size:10px;color:#6ed8ff}.orch-agents .active i{color:#65f2c8;border-color:rgba(87,244,202,.28);background:rgba(32,137,106,.12)}.orch-agents b{display:block;font-size:8px;margin-top:7px;color:#88a6b9}.orch-action-row{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:12px 0}.orch-action-row span{font-size:8px;color:#87a9bd;text-align:center;padding:7px;border-radius:7px;background:rgba(6,20,34,.6);border:1px dashed rgba(71,162,205,.16)}
.trace-list{display:grid;gap:9px}.trace-list>div{display:grid;grid-template-columns:58px 9px 68px 1fr;align-items:center;gap:7px;padding:9px 7px;border-bottom:1px solid rgba(62,129,166,.1)}.trace-list time{font-size:8px;color:#59778a}.trace-list i{width:7px;height:7px;border-radius:50%}.trace-list i.ok{background:#57f2c4}.trace-list i.run{background:#52d7ff;box-shadow:0 0 8px #52d7ff}.trace-list i.wait{background:#5b7382}.trace-list b{font-size:9px}.trace-list span{font-size:8px;color:#7998ab;line-height:1.35}
.replacement-section{border-radius:16px;padding:17px}.replacement-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-top:13px}.replacement-grid>div{border:1px solid rgba(75,160,206,.12);border-radius:10px;background:rgba(6,19,32,.52);padding:11px}.replacement-grid span{font-size:8px;color:#5bcfff}.replacement-grid b{display:block;font-size:15px;margin:5px 0;color:#e8f7ff}.replacement-grid p{font-size:8px;line-height:1.45;color:#6f8c9f;margin:0}
/* Dashboard */
.dashboard-page{grid-template-rows:auto auto 1fr}.dash-head{display:flex;justify-content:space-between;align-items:flex-end;padding:5px 3px}.dash-head h1{margin-bottom:6px}.dash-filter{display:flex;gap:6px;align-items:center}.dash-filter button{border:1px solid rgba(72,166,214,.16);background:rgba(6,19,32,.7);color:#7495aa;border-radius:8px;padding:7px 11px;font-size:9px;cursor:pointer}.dash-filter button.active{border-color:rgba(76,207,255,.38);color:#dff7ff;background:rgba(28,109,151,.22)}.dash-filter>span{font-size:8px;color:#7292a5;margin-left:8px}.dash-filter i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#58f4c7;margin-right:5px;box-shadow:0 0 9px #58f4c7}
.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.kpi-card{border:1px solid rgba(73,162,210,.13);border-radius:13px;background:linear-gradient(180deg,rgba(8,25,43,.82),rgba(4,15,28,.75));padding:13px 14px}.kpi-card span{font-size:8px;color:#748fa2}.kpi-card b{display:block;font-size:21px;margin:5px 0}.kpi-card em{font-style:normal;font-size:8px;color:#57f3c3}.kpi-card small{font-size:8px;color:#5f7b8d;margin-left:5px}
.dash-grid{display:grid;grid-template-columns:1.5fr .82fr .82fr;grid-template-rows:minmax(280px,1fr) minmax(260px,.9fr);gap:10px;min-height:0}.dash-card{border:1px solid rgba(71,155,202,.13);border-radius:15px;background:linear-gradient(180deg,rgba(7,23,40,.83),rgba(4,14,27,.78));padding:14px;min-height:0}.trend-card{grid-column:1/3}.trend-chart{width:100%;height:calc(100% - 55px);min-height:210px}.chart-grid line{stroke:rgba(87,144,175,.12);stroke-width:1}.trend-chart .area{fill:url(#areaA)}.trend-chart .line-a{fill:none;stroke:#4cd8ff;stroke-width:3}.trend-chart .line-b{fill:none;stroke:#56f4c6;stroke-width:2.3}.chart-axis{display:flex;justify-content:space-between;padding:0 8px;color:#5e7b8f;font-size:8px}.legend{font-size:8px;color:#738fa1}.legend i{display:inline-block;width:8px;height:2px;background:#4cd8ff;margin:0 4px 2px 8px}.legend i:nth-child(2){background:#56f4c6}
.agent-runtime-list{display:grid;gap:9px}.agent-runtime-list>div{display:grid;grid-template-columns:1fr 52px 54px;align-items:center;border-bottom:1px solid rgba(63,132,169,.1);padding:7px 2px}.agent-runtime-list span{font-size:9px}.agent-runtime-list span i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#54f2c3;margin-right:6px;box-shadow:0 0 6px rgba(84,242,195,.3)}.agent-runtime-list b{font-size:10px;color:#c9f9ea}.agent-runtime-list em{font-style:normal;font-size:8px;color:#67889d}
.process-health{display:grid;gap:12px}.process-health>div{display:grid;grid-template-columns:92px 1fr 38px;align-items:center;gap:8px}.process-health span{font-size:9px;color:#8ca9bb}.process-health>div>i{height:6px;border-radius:99px;background:#0b1c2b;overflow:hidden}.process-health em{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#36bfff,#55f3c4)}.process-health b{font-size:9px;color:#a5c9da;text-align:right}
.donut-wrap{display:grid;grid-template-columns:145px 1fr;align-items:center;gap:10px;height:calc(100% - 35px)}.donut{width:122px;height:122px;border-radius:50%;margin:auto;background:conic-gradient(#4fd7ff 0 38%,#5af0c6 38% 69%,#9b87ff 69% 88%,#ffb56f 88% 100%);display:grid;place-items:center;position:relative}.donut:after{content:'';position:absolute;width:82px;height:82px;border-radius:50%;background:#071727}.donut span{position:relative;z-index:2;text-align:center}.donut b{display:block;font-size:22px}.donut em{font-style:normal;font-size:8px;color:#7896aa}.defect-legend{display:grid;gap:8px}.defect-legend>div{display:grid;grid-template-columns:8px 1fr 34px;align-items:center;gap:6px;font-size:8px;color:#7f9bac}.defect-legend i{width:7px;height:7px;border-radius:2px;background:#4fd7ff}.defect-legend>div:nth-child(2) i{background:#5af0c6}.defect-legend>div:nth-child(3) i{background:#9b87ff}.defect-legend>div:nth-child(4) i{background:#ffb56f}.defect-legend b{text-align:right;color:#b9d4e2}
.device-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.device-summary>div{border:1px solid rgba(69,150,192,.12);border-radius:9px;padding:8px;background:rgba(5,17,29,.52);text-align:center}.device-summary b{font-size:16px;display:block}.device-summary span{font-size:7px;color:#708da0}.device-summary .warning b{color:#ffcb80}.device-summary .danger b{color:#ff7b70}.alert-list{display:grid;gap:7px;margin-top:10px}.alert-list>div{display:grid;grid-template-columns:8px 1fr auto;gap:7px;align-items:center;padding:7px;border-radius:8px;background:rgba(6,18,30,.48);font-size:8px}.alert-list i{width:7px;height:7px;border-radius:50%}.alert-list .warn{background:#ffbd69}.alert-list .info{background:#56d5ff}.alert-list span{color:#819eb0}.alert-list b{color:#d6e8f1}
.insight-card{background:radial-gradient(circle at 90% 10%,rgba(77,242,193,.08),transparent 30%),linear-gradient(180deg,rgba(7,23,40,.83),rgba(4,14,27,.78))}.insight-main{border-left:2px solid #53efc4;padding:8px 12px;margin-top:14px}.insight-main span{font-size:8px;color:#5af0c6}.insight-main b{display:block;font-size:14px;margin:5px 0 7px}.insight-main p{font-size:9px;line-height:1.6;color:#7d9aac;margin:0}.insight-action{margin-top:13px;border:1px solid rgba(81,219,183,.2);background:rgba(33,117,95,.12);color:#62f2ca;border-radius:8px;padding:7px 10px;font-size:8px;cursor:pointer}
@media(max-height:850px){.portal-page,.dashboard-page{min-height:auto}.ai-layout-grid{min-height:420px}.dash-grid{grid-template-rows:330px 290px}}


/* ===== v13 portal / AI / dashboard redesign ===== */
.page-view{display:none}.page-view.active{display:block}
.portal-page,.dashboard-page{
  position:relative;
  padding:18px 18px 20px;
  min-height:calc(100vh - 72px);
  background:
    radial-gradient(circle at 12% 14%, rgba(44,154,255,.12), transparent 24%),
    radial-gradient(circle at 88% 8%, rgba(79,255,193,.09), transparent 22%),
    radial-gradient(circle at 75% 80%, rgba(106,122,255,.08), transparent 28%),
    linear-gradient(180deg, rgba(5,15,28,.96), rgba(2,10,19,.98));
}
.portal-page::before,.dashboard-page::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(rgba(60,138,191,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(60,138,191,.045) 1px,transparent 1px);
  background-size:38px 38px;
  mask-image:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.35));
}
.portal-page > *,.dashboard-page > *{position:relative;z-index:1}
.portal-hero,.dash-head{
  border-radius:24px;
  padding:22px 24px;
  border:1px solid rgba(93,190,255,.16);
  background:
    radial-gradient(circle at 80% 20%, rgba(56,205,255,.12), transparent 30%),
    linear-gradient(135deg, rgba(9,31,54,.9), rgba(5,16,31,.78));
  box-shadow:0 18px 44px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.03);
}
.portal-hero h1,.dash-head h1{font-size:34px;margin:8px 0 10px;letter-spacing:-.035em;color:#f4fbff;text-shadow:0 0 24px rgba(67,208,255,.12)}
.portal-hero p,.dash-head p{font-size:14px;line-height:1.85;color:#9cb8ca;max-width:860px}
.hero-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;min-width:520px}
.hero-stats>div,.ai-health>div{
  padding:14px 16px;border-radius:18px;
  background:linear-gradient(180deg,rgba(7,24,43,.82),rgba(5,17,31,.78));
  border:1px solid rgba(84,180,235,.18);
  box-shadow:inset 0 0 26px rgba(44,138,255,.06),0 8px 22px rgba(0,0,0,.16);
}
.hero-stats span,.hero-stats em,.ai-health em{font-size:11px;color:#8ba8bc;font-style:normal}
.hero-stats b,.ai-health b{display:block;font-size:30px;line-height:1.05;margin:8px 0 6px;color:#f7fdff}
.module-center-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}
.module-card{
  position:relative;overflow:hidden;padding:20px;border-radius:22px;
  border:1px solid rgba(82,173,225,.16);
  background:
    radial-gradient(circle at 92% 8%, rgba(68,210,255,.14), transparent 28%),
    linear-gradient(180deg, rgba(7,24,43,.9), rgba(5,16,30,.84));
  box-shadow:0 16px 34px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.03);
  transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease;
}
.module-card::before{
  content:'';position:absolute;left:18px;right:18px;top:0;height:2px;border-radius:999px;
  background:linear-gradient(90deg,rgba(80,215,255,.1),rgba(90,255,214,.95),rgba(80,215,255,.1));
  opacity:.9;
}
.module-card:hover{transform:translateY(-4px);border-color:rgba(95,211,255,.34);box-shadow:0 20px 42px rgba(0,0,0,.24),0 0 32px rgba(42,185,255,.08)}
.module-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.module-glyph{width:50px;height:50px;border-radius:16px;display:grid;place-items:center;font-size:24px;color:#dff9ff;background:linear-gradient(135deg,rgba(51,198,255,.26),rgba(70,111,255,.12));border:1px solid rgba(89,204,255,.28);box-shadow:inset 0 0 18px rgba(53,176,255,.12)}
.status-pill{padding:6px 12px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em}
.status-pill.online{background:rgba(38,136,104,.18);border:1px solid rgba(79,255,193,.32);color:#72ffd7}
.status-pill.pilot{background:rgba(89,128,255,.14);border:1px solid rgba(113,151,255,.3);color:#b8c8ff}
.status-pill.ready{background:rgba(255,177,107,.12);border:1px solid rgba(255,177,107,.24);color:#ffd4aa}
.module-card h3{font-size:22px;margin:0 0 10px;color:#f4fbff}
.module-card p{min-height:64px;margin:0 0 16px;font-size:13px;line-height:1.8;color:#98b6c8}
.module-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.module-meta span{padding:6px 10px;border-radius:999px;font-size:11px;color:#bcecff;background:rgba(11,43,69,.66);border:1px solid rgba(85,185,238,.16)}
.module-enter{width:100%;padding:12px 14px;border:none;border-radius:14px;background:linear-gradient(90deg,#0c6fa7,#0c4667);color:#effbff;font-weight:700;font-size:13px;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.module-enter.disabled{background:rgba(13,38,61,.72);color:#86a3b6}
.platform-arch{margin-top:16px;padding:20px 22px;border-radius:22px;background:linear-gradient(180deg,rgba(7,24,43,.9),rgba(5,16,30,.84));border:1px solid rgba(82,173,225,.16)}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:16px}
.section-head span{display:block;font-size:10px;letter-spacing:.16em;color:#62cdf6}
.section-head b{display:block;font-size:24px;margin-top:5px;color:#f0fbff}
.section-head p{margin:0;font-size:13px;color:#93b0c4;max-width:560px;line-height:1.75}
.arch-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;align-items:center}
.arch-flow>div{min-height:118px;padding:16px;border-radius:18px;border:1px solid rgba(83,178,232,.16);background:rgba(8,28,46,.78)}
.arch-flow>div.highlight{background:linear-gradient(180deg,rgba(16,73,96,.5),rgba(7,27,44,.84));border-color:rgba(76,236,255,.35);box-shadow:0 0 26px rgba(47,190,255,.12)}
.arch-flow i{display:block;font-style:normal;font-size:11px;color:#56cbff;margin-bottom:10px}
.arch-flow b{display:block;font-size:18px;margin-bottom:6px}
.arch-flow span{font-size:12px;color:#95b3c4;line-height:1.6}
.arch-flow em{font-style:normal;color:#4ed3ff;font-size:20px;text-align:center}
.ai-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.ai-health{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:340px;align-items:start}
.pulse-dot{width:12px;height:12px;border-radius:50%;background:#59ffd2;box-shadow:0 0 18px rgba(89,255,210,.8);align-self:center;animation:pulseGlow 1.4s infinite}
@keyframes pulseGlow{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.68}}
.ai-layout-grid{display:grid;grid-template-columns:320px minmax(560px,1fr) 360px;gap:16px;min-height:520px;margin-top:16px}
.agent-library,.orchestration,.agent-trace,.replacement-section,.dash-card{border-radius:22px;border:1px solid rgba(83,178,232,.16);background:linear-gradient(180deg,rgba(7,24,43,.9),rgba(5,16,30,.84));box-shadow:0 16px 34px rgba(0,0,0,.2)}
.agent-library,.orchestration,.agent-trace{padding:18px}
.section-head.compact b{font-size:20px}
.agent-lib-list{display:grid;gap:12px}
.agent-lib{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:14px 14px;border-radius:16px;background:rgba(8,28,46,.74);border:1px solid rgba(80,170,221,.14);transition:.28s}
.agent-lib.active,.agent-lib:hover{border-color:rgba(88,241,200,.34);background:linear-gradient(90deg,rgba(16,71,62,.34),rgba(8,28,46,.78));transform:translateX(3px)}
.agent-lib>i{width:42px;height:42px;border-radius:14px;font-size:16px;font-weight:700;color:#eafcff;background:linear-gradient(135deg,rgba(51,198,255,.28),rgba(76,255,211,.16));border:1px solid rgba(90,204,255,.28)}
.agent-lib b{font-size:15px;color:#f0fbff}
.agent-lib span{font-size:11px;line-height:1.6;color:#97b6c8;margin-top:4px}
.agent-lib>em{font-size:11px;color:#76bfd7}
.orchestration-canvas{position:relative;min-height:420px;overflow:hidden;border-radius:18px;padding:20px;border:1px solid rgba(76,177,230,.14);background:
  radial-gradient(circle at 50% 20%, rgba(66,209,255,.08), transparent 30%),
  linear-gradient(180deg, rgba(3,15,28,.9), rgba(5,18,32,.82))}
.orchestration-canvas::before{content:'';position:absolute;inset:0;background:
 linear-gradient(rgba(85,171,220,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(85,171,220,.04) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}
.orch-node{position:relative;z-index:2;padding:14px 18px;border-radius:16px;border:1px solid rgba(84,184,236,.18);background:rgba(9,30,49,.9);width:max-content;max-width:100%}
.orch-node span{display:block;font-size:11px;color:#69cff3;letter-spacing:.08em}
.orch-node b{display:block;font-size:16px;color:#f1fbff;margin-top:6px}
.orch-node.input{margin:0 auto 20px}
.orch-node.output{margin:18px auto 0;border-color:rgba(79,255,193,.24);box-shadow:0 0 26px rgba(79,255,193,.08)}
.orch-lines{display:flex;justify-content:center;gap:90px;margin:12px 0 18px}
.orch-lines i{display:block;width:2px;height:48px;background:linear-gradient(180deg,rgba(84,201,255,.05),rgba(84,201,255,.9),rgba(84,201,255,.05));box-shadow:0 0 18px rgba(84,201,255,.22);animation:flowLine 1.3s infinite}
.orch-lines i:nth-child(2){animation-delay:.2s}.orch-lines i:nth-child(3){animation-delay:.4s}
@keyframes flowLine{0%{transform:scaleY(.55);opacity:.45}50%{transform:scaleY(1);opacity:1}100%{transform:scaleY(.55);opacity:.45}}
.orch-agents{position:relative;z-index:2;display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.orch-agents>div{padding:15px 10px 13px;border-radius:16px;text-align:center;border:1px solid rgba(82,170,221,.16);background:rgba(8,28,46,.7);transition:.28s}
.orch-agents>div.active{border-color:rgba(78,214,255,.38);background:linear-gradient(180deg,rgba(13,81,114,.5),rgba(8,28,46,.86));box-shadow:0 0 26px rgba(78,214,255,.14);transform:translateY(-4px)}
.orch-agents i{display:block;font-style:normal;font-size:18px;color:#9cf3ff;margin-bottom:8px}
.orch-agents b{font-size:13px;color:#edfaff}
.orch-action-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}
.orch-action-row span{padding:10px 12px;border-radius:14px;background:rgba(8,28,46,.72);border:1px solid rgba(80,170,221,.14);font-size:12px;line-height:1.6;color:#9fc1d2;animation:actionBlink 3s infinite}
.orch-action-row span:nth-child(2){animation-delay:.35s}.orch-action-row span:nth-child(3){animation-delay:.7s}.orch-action-row span:nth-child(4){animation-delay:1.05s}
@keyframes actionBlink{0%,100%{box-shadow:none;border-color:rgba(80,170,221,.14)}40%{box-shadow:0 0 22px rgba(78,214,255,.12);border-color:rgba(78,214,255,.3)}}
.trace-list{display:grid;gap:10px;margin-top:8px}
.trace-list>div{display:grid;grid-template-columns:74px 14px 94px 1fr;gap:10px;align-items:center;padding:12px 14px;border-radius:14px;background:rgba(8,28,46,.76);border:1px solid rgba(80,170,221,.12)}
.trace-list time,.trace-list span{font-size:11px;color:#99b7ca;line-height:1.6}.trace-list b{font-size:13px;color:#effbff}.trace-list i{width:10px;height:10px;border-radius:50%}.trace-list i.ok{background:#58f4c7;box-shadow:0 0 12px rgba(88,244,199,.5)}.trace-list i.run{background:#54c9ff;box-shadow:0 0 12px rgba(84,201,255,.5)}.trace-list i.wait{background:#ffb16b;box-shadow:0 0 12px rgba(255,177,107,.5)}
.replacement-section{margin-top:16px;padding:20px 22px}
.replacement-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.replacement-grid>div{padding:16px 18px;border-radius:18px;border:1px solid rgba(83,178,232,.16);background:rgba(8,28,46,.72)}
.replacement-grid span{display:block;font-size:12px;color:#66d0f4;letter-spacing:.08em}
.replacement-grid b{display:block;font-size:24px;margin:10px 0 8px;color:#fff}
.replacement-grid p{margin:0;font-size:12px;line-height:1.8;color:#98b6c8}
.dashboard-page{display:none}
.dashboard-page.active{display:grid;grid-template-rows:auto auto 1fr;gap:16px}
.dash-head{display:flex;justify-content:space-between;align-items:flex-end}
.dash-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.dash-filter button{padding:9px 16px;border-radius:12px;border:1px solid rgba(82,173,225,.16);background:rgba(8,28,46,.8);color:#b1d0df;font-size:12px;font-weight:700;cursor:pointer}
.dash-filter button.active{background:linear-gradient(180deg,rgba(12,98,145,.5),rgba(8,28,46,.82));color:#f3fcff;border-color:rgba(76,207,255,.36);box-shadow:0 0 18px rgba(76,207,255,.14)}
.dash-filter>span{font-size:11px;color:#93b0c4}
.kpi-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}
.kpi-card{position:relative;overflow:hidden;padding:16px 16px 14px;border-radius:20px;border:1px solid rgba(82,173,225,.16);background:linear-gradient(180deg,rgba(8,28,46,.86),rgba(5,16,30,.84));box-shadow:0 14px 28px rgba(0,0,0,.18)}
.kpi-card::after{content:'';position:absolute;right:-18px;top:-18px;width:92px;height:92px;border-radius:50%;background:radial-gradient(circle,rgba(84,201,255,.22),transparent 64%)}
.kpi-card span{font-size:11px;color:#92afc3}
.kpi-card b{font-size:30px;color:#f7fdff;margin:10px 0 8px}
.kpi-card em{font-size:11px;color:#64f2c8}.kpi-card small{display:block;font-size:11px;color:#7f9fb4;margin-top:7px}
.dash-grid{display:grid;grid-template-columns:1.45fr .9fr .9fr;grid-template-rows:minmax(320px,1fr) minmax(300px,1fr);gap:14px}
.dash-card{padding:18px}
.trend-chart .line-a,.trend-chart .line-b{stroke-linecap:round;stroke-linejoin:round}
.trend-chart .line-a{stroke-dasharray:1200;stroke-dashoffset:1200;animation:drawLine 2.8s ease forwards}
.trend-chart .line-b{stroke-dasharray:1200;stroke-dashoffset:1200;animation:drawLine 2.8s ease .35s forwards}
@keyframes drawLine{to{stroke-dashoffset:0}}
.chart-grid line{stroke:rgba(109,159,188,.16)}
.chart-axis{font-size:10px;color:#7e9aad;padding:0 4px}
.legend{font-size:11px;color:#99b4c4}.legend i{width:14px;height:3px;border-radius:3px}
.agent-runtime-list,.process-health,.alert-list{display:grid;gap:12px}
.agent-runtime-list>div,.process-health>div,.alert-list>div{padding:12px 14px;border-radius:14px;background:rgba(8,28,46,.72);border:1px solid rgba(80,170,221,.12)}
.agent-runtime-list span{display:flex;align-items:center;gap:8px;font-size:12px;color:#dff6ff}.agent-runtime-list span i{width:9px;height:9px;border-radius:50%;background:#58f4c7;box-shadow:0 0 12px rgba(88,244,199,.45)}
.agent-runtime-list b{font-size:20px;color:#f4fbff}.agent-runtime-list em{font-style:normal;font-size:11px;color:#92b0c4}
.process-health>div{display:grid;grid-template-columns:92px 1fr 40px;gap:12px;align-items:center}
.process-health span,.device-summary span,.defect-legend span{font-size:12px;color:#9ebdce}
.process-health i{height:10px;border-radius:999px;background:rgba(14,53,79,.9);overflow:hidden}
.process-health em{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#1ecfff,#58f4c7);box-shadow:0 0 12px rgba(78,214,255,.18);animation:barPulse 2.1s ease-in-out infinite}
@keyframes barPulse{50%{filter:brightness(1.15)}}
.process-health b{font-size:13px;color:#effbff}
.donut-wrap{display:grid;grid-template-columns:190px 1fr;gap:16px;align-items:center}
.donut{width:170px;height:170px;border-radius:50%;margin:0 auto;background:conic-gradient(#4bd7ff 0 38%, #59f4c8 38% 69%, #7ca1ff 69% 88%, #ffa96c 88% 100%);display:grid;place-items:center;box-shadow:0 0 28px rgba(77,215,255,.12);animation:spinSlow 18s linear infinite}
.donut::before{content:'';width:108px;height:108px;border-radius:50%;background:#071829;box-shadow:inset 0 0 18px rgba(77,215,255,.08)}
.donut>span{position:absolute;display:grid;place-items:center;text-align:center}.donut b{font-size:34px}.donut em{font-style:normal;font-size:12px;color:#91afc3}
@keyframes spinSlow{to{transform:rotate(360deg)}}
.defect-legend{display:grid;gap:12px}.defect-legend>div{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;font-size:12px;color:#a5c0d0}.defect-legend i{width:10px;height:10px;border-radius:50%;background:#4bd7ff}.defect-legend>div:nth-child(2) i{background:#59f4c8}.defect-legend>div:nth-child(3) i{background:#7ca1ff}.defect-legend>div:nth-child(4) i{background:#ffa96c}
.device-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.device-summary>div{padding:14px;border-radius:16px;background:rgba(8,28,46,.72);border:1px solid rgba(80,170,221,.12)}.device-summary b{display:block;font-size:28px;color:#fff;margin-bottom:5px}.device-summary .warning b{color:#ffd499}.device-summary .danger b{color:#ff948d}
.alert-list>div{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;font-size:12px;color:#edf8ff}.alert-list b{font-size:12px;color:#ffc596}.alert-list i.warn{background:#ffb16b;width:10px;height:10px;border-radius:50%;box-shadow:0 0 12px rgba(255,177,107,.4)}.alert-list i.info{background:#58d2ff;width:10px;height:10px;border-radius:50%;box-shadow:0 0 12px rgba(88,210,255,.4)}
.insight-card{background:radial-gradient(circle at 100% 0,rgba(77,242,193,.12),transparent 28%),linear-gradient(180deg,rgba(8,28,46,.86),rgba(5,16,30,.84))}
.insight-main{margin-top:14px;padding:14px 16px;border-left:3px solid #53efc4;border-radius:0 14px 14px 0;background:rgba(9,30,49,.42)}
.insight-main span{font-size:12px;color:#63f1ca}.insight-main b{font-size:22px;color:#f7fdff;margin:8px 0 10px}.insight-main p{font-size:13px;line-height:1.85;color:#9ab8ca}
.insight-action{margin-top:14px;padding:12px 14px;border:none;border-radius:14px;background:linear-gradient(90deg,#0b6f68,#13483a);color:#effcf9;font-weight:700;font-size:13px;cursor:pointer}
@media(max-width:1600px){.hero-stats{min-width:0}.module-center-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-layout-grid{grid-template-columns:1fr}.dash-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto}.trend-card{grid-column:auto}.kpi-row{grid-template-columns:repeat(3,minmax(0,1fr))}.replacement-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.arch-flow{grid-template-columns:repeat(5,minmax(0,1fr))}}

.module-card.active-module{border-color:rgba(92,219,255,.42)!important;box-shadow:0 20px 42px rgba(0,0,0,.24),0 0 36px rgba(47,190,255,.14),inset 0 0 36px rgba(43,171,255,.08)!important;transform:translateY(-3px)}
.eyebrow{font-size:11px!important;letter-spacing:.2em;color:#65cdf4!important}
.topbar .nav{font-size:15px}
.topbar .brand b{font-size:23px}.topbar .brand span{font-size:12px}

/* ===== v15 left-navigation only + Future City Agent ===== */
.topbar .clock{margin-left:auto}
.topbar nav{display:none!important}
.page-view{display:none!important}
.layout.page-view.active{display:grid!important}
.city-layout{display:none!important;grid-template-columns:208px minmax(930px,1fr) 318px;gap:12px;padding:12px;height:calc(100vh - 68px);min-height:0}
.city-layout.active{display:grid!important}

.city-main-column{display:grid;grid-template-rows:auto minmax(0,1fr) 244px;gap:10px;min-width:0;min-height:0}
.city-command{border-radius:16px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.city-command h1{font-size:24px;margin:6px 0 7px;letter-spacing:-.02em}.city-command p{margin:0;font-size:11px;line-height:1.65;color:#8eacbf;max-width:760px}.city-command-actions{display:flex;gap:8px;flex:none}.city-command-actions button{border:1px solid #3c91bd66;background:#06182a;color:#9cbcd0;border-radius:9px;padding:9px 14px;cursor:pointer;min-width:88px}.city-command-actions .primary{color:#fff;border-color:#2bcaff88;background:linear-gradient(180deg,#0b527a,#083956);box-shadow:0 0 20px rgba(43,202,255,.08)}
.city-workspace{display:grid;grid-template-columns:220px minmax(0,1fr);gap:10px;min-height:0}.city-scenario-panel{border-radius:16px;padding:14px;overflow:hidden;display:flex;flex-direction:column}.city-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.city-section-title span{font-size:9px;letter-spacing:.15em;color:#5fd4ff}.city-section-title b{font-size:15px;color:#f0fbff}.city-scenario-list{display:grid;gap:8px;overflow:auto}.city-scenario-item{width:100%;border:1px solid rgba(76,157,215,.12);background:rgba(5,16,31,.48);border-radius:11px;padding:11px 10px;text-align:left;color:#b5cad7;cursor:pointer;transition:.22s}.city-scenario-item:hover{border-color:#35c7ff55;transform:translateX(2px)}.city-scenario-item.active{border-color:#37d7ff88;background:linear-gradient(90deg,#0c5e8a55,#07304c33);box-shadow:inset 3px 0 #34dcff;color:#fff}.city-scenario-item span{display:block;font-size:8px;color:#62d5ff}.city-scenario-item b{display:block;font-size:11px;margin:5px 0 4px}.city-scenario-item p{margin:0;font-size:8px;line-height:1.45;color:#7898ab}.city-live-summary{margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}.city-live-summary span{font-size:8px;color:#5fd4ff}.city-live-summary b{display:block;font-size:11px;margin:5px 0}.city-live-summary p{margin:0;font-size:8px;line-height:1.5;color:#7998ab}
.city-globe-card{position:relative;border-radius:17px;overflow:hidden;min-height:500px;background:radial-gradient(circle at 50% 47%,rgba(28,153,255,.16),transparent 36%),radial-gradient(circle at 54% 48%,rgba(68,255,217,.06),transparent 46%),linear-gradient(180deg,#020812,#040b14);box-shadow:inset 0 0 85px rgba(27,131,194,.06)}#cityCanvas{width:100%;height:100%;display:block}.city-fallback{position:absolute;inset:0;display:grid;place-items:center;color:#78a7be;font-size:10px;letter-spacing:.15em}.city-fallback.hidden{display:none}.city-engine-badge{position:absolute;right:14px;top:13px;padding:6px 9px;border-radius:999px;border:1px solid rgba(83,191,255,.16);background:rgba(5,20,36,.58);font-size:8px;letter-spacing:.12em;color:#56f0c6;z-index:5}.city-scene-title{position:absolute;left:50%;top:18px;transform:translateX(-50%);text-align:center;width:min(660px,70%);z-index:4;text-shadow:0 2px 8px #000}.city-scene-title span{display:inline-flex;padding:5px 11px;border-radius:999px;background:linear-gradient(90deg,#28bde9,#55e5ff);color:#04111b;font-size:9px;font-weight:900;letter-spacing:.08em;box-shadow:0 0 18px rgba(78,216,255,.22)}.city-scene-title h2{font-size:30px;line-height:1.1;margin:10px 0 8px}.city-scene-title p{font-size:10px;line-height:1.6;color:#b7d0df;margin:0}
.city-agent-note{position:absolute;z-index:4;max-width:245px;text-shadow:0 2px 6px #000}.city-agent-note span{display:inline-flex;padding:5px 10px;border-radius:999px;background:linear-gradient(90deg,#44d7ff,#7aeaff);color:#04111b;font-size:9px;font-weight:900}.city-agent-note b{display:block;font-size:13px;margin:7px 0 3px}.city-agent-note p{margin:0;font-size:9px;line-height:1.55;color:#bfd5e2}.city-agent-note.left.top{left:18px;top:105px}.city-agent-note.left.bottom{left:22px;bottom:92px}.city-agent-note.right.top{right:18px;top:132px;text-align:right}.city-agent-note.right.top p{margin-left:auto}.city-agent-note.right.top span{background:linear-gradient(90deg,#57f0c4,#8affde)}
.city-orbit-legend{position:absolute;left:50%;bottom:78px;transform:translateX(-50%);display:flex;gap:14px;z-index:4;padding:7px 11px;border-radius:999px;background:rgba(4,15,27,.45);backdrop-filter:blur(7px);font-size:8px;color:#8eb1c4}.city-orbit-legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.city-orbit-legend .a{background:#58d8ff}.city-orbit-legend .b{background:#8d9dff}.city-orbit-legend .c{background:#5bf7d0}.city-kpis{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);width:calc(100% - 40px);display:grid;grid-template-columns:repeat(4,1fr);gap:8px;z-index:4}.city-kpis>div{padding:9px 11px;border:1px solid rgba(83,191,255,.14);border-radius:10px;background:rgba(4,16,28,.58);backdrop-filter:blur(8px)}.city-kpis span{display:block;font-size:7px;letter-spacing:.1em;color:#67caef}.city-kpis b{display:block;font-size:19px;margin-top:4px}
.city-bottom-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:10px;min-height:0}.city-flow-panel,.city-trend-panel{border-radius:16px;padding:13px;min-height:0}.city-flow-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.city-flow-step{position:relative;padding:10px 9px;border:1px solid rgba(77,163,210,.14);border-radius:10px;background:rgba(6,20,34,.56);min-height:150px}.city-flow-step:after{content:'';position:absolute;left:8px;right:8px;top:0;height:2px;background:linear-gradient(90deg,transparent,#58d8ff,transparent)}.city-flow-step.active{border-color:rgba(83,225,255,.38);box-shadow:0 0 20px rgba(77,202,255,.08)}.city-flow-step span{font-size:8px;color:#55d2ff}.city-flow-step b{display:block;font-size:10px;margin:7px 0 5px}.city-flow-step p{font-size:8px;line-height:1.5;color:#7898ab;margin:0}.city-trend-chart{width:100%;height:165px}.city-grid-lines line{stroke:rgba(89,157,191,.12);stroke-width:1}.city-area{fill:url(#cityAreaA)}.city-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.city-line.line-a{stroke:#4bd7ff;stroke-width:3;stroke-dasharray:1200;stroke-dashoffset:1200;animation:cityDraw 2.5s ease forwards}.city-line.line-b{stroke:#59f4c8;stroke-width:2;stroke-dasharray:1200;stroke-dashoffset:1200;animation:cityDraw 2.7s ease .3s forwards}@keyframes cityDraw{to{stroke-dashoffset:0}}.city-axis{display:flex;justify-content:space-between;font-size:8px;color:#627f91;padding:0 4px}
.city-right-panel{display:grid;grid-template-rows:auto auto 1fr;gap:10px;min-height:0}.city-right-panel section{border-radius:16px;padding:13px}.city-object-hero{display:flex;align-items:center;gap:11px;padding:11px;border:1px solid rgba(74,160,205,.14);border-radius:11px;background:rgba(6,20,34,.52)}.city-object-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#bff6ff;font-size:19px;background:linear-gradient(135deg,rgba(51,198,255,.24),rgba(76,255,211,.12));border:1px solid rgba(89,204,255,.22)}.city-object-hero b{display:block;font-size:13px}.city-object-hero span{display:block;margin-top:5px;font-size:9px;color:#7ea2b8}.city-object-meta{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}.city-object-meta>div{padding:9px;border-radius:9px;background:rgba(6,20,34,.5);border:1px solid rgba(74,160,205,.12)}.city-object-meta span{display:block;font-size:7px;color:#678ca1}.city-object-meta b{display:block;font-size:12px;margin-top:4px}.city-object-card>p,.city-decision-card>p{font-size:9px;line-height:1.6;color:#819fb2;margin:0}.city-decision-tag{display:inline-block;font-size:8px;padding:4px 7px;border-radius:5px;color:#55d6ff;border:1px solid rgba(82,195,238,.24)}.city-decision-card h3{font-size:14px;margin:8px 0 6px}.city-decision-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(77,156,209,.12);padding-top:8px;margin-top:8px}.city-decision-row span{font-size:8px;color:#6f8da0}.city-decision-row b{font-size:12px}.city-decision-row.success b{color:#58f1c5}.city-trace-list{display:grid;gap:6px}.city-trace-list>div{display:grid;grid-template-columns:48px 7px 62px 1fr;gap:6px;align-items:center;padding:7px 3px;border-bottom:1px solid rgba(68,133,168,.09)}.city-trace-list time{font-size:7px;color:#587789}.city-trace-list i{width:7px;height:7px;border-radius:50%}.city-trace-list i.ok{background:#59f4c8}.city-trace-list i.run{background:#54d8ff;box-shadow:0 0 7px #54d8ff}.city-trace-list i.wait{background:#ffb56f}.city-trace-list b{font-size:8px}.city-trace-list span{font-size:7px;line-height:1.4;color:#708fa2}

@media(max-height:860px){.city-layout{height:auto;min-height:calc(100vh - 68px)}.city-main-column{grid-template-rows:auto 620px 244px}.city-right-panel{grid-template-rows:auto auto 330px}}

/* ===== MES industrial control module ===== */
.mes-layout{display:none!important;grid-template-columns:208px minmax(960px,1fr);gap:12px;padding:12px;height:calc(100vh - 68px);min-height:0}
.mes-layout.active{display:grid!important}
.mes-main-column{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px}
.mes-command{border-radius:18px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(180deg,rgba(9,30,55,.92),rgba(6,16,29,.85));border:1px solid rgba(60,154,209,.2)}
.mes-command h1{margin:6px 0 8px;font-size:34px;letter-spacing:.01em}
.mes-command p{margin:0;color:#8eaec6;font-size:13px;max-width:820px;line-height:1.7}
.mes-command-actions{display:flex;gap:10px;align-self:flex-start}.mes-command-actions button{border:1px solid #3c91bd66;background:#06182a;color:#9cbcd0;border-radius:10px;padding:10px 14px;cursor:pointer;min-width:96px}.mes-command-actions button.primary{color:#fff;border-color:#2bcaff88;background:linear-gradient(180deg,#0b527a,#083956);box-shadow:0 0 20px rgba(43,202,255,.08)}
.mes-workspace{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;min-height:0}
.mes-core-column{display:grid;grid-template-rows:minmax(0,1fr) 238px;gap:12px;min-height:0}
.mes-os-card{padding:14px;display:grid;grid-template-rows:auto minmax(0,1fr);border-radius:22px;overflow:hidden;min-height:0;background:radial-gradient(circle at 50% 50%,rgba(16,52,94,.22),rgba(4,11,20,.96) 68%)}
.mes-os-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 8px 14px}.mes-os-head b{display:block;font-size:18px;color:#f4fbff;margin-top:8px}
.mes-os-chip{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border-radius:999px;border:1px solid rgba(69,214,255,.3);background:rgba(10,32,54,.7);font-size:10px;letter-spacing:.16em;color:#72e4ff}
.mes-os-tabs{display:flex;gap:8px;flex-wrap:wrap}.mes-os-tabs span{padding:8px 12px;border-radius:10px;border:1px solid rgba(61,127,170,.18);background:rgba(6,17,31,.6);font-size:11px;color:#7da2bc}.mes-os-tabs span.active{color:#fff;background:linear-gradient(180deg,rgba(16,79,115,.9),rgba(10,48,72,.9));border-color:rgba(74,209,255,.55);box-shadow:0 0 18px rgba(61,207,255,.08)}
.mes-os-scene{position:relative;overflow:hidden;min-height:560px;border-radius:20px;border:1px solid rgba(59,151,209,.14);background:radial-gradient(circle at 50% 48%,rgba(11,48,83,.34),rgba(3,10,18,.98) 72%)}
.mes-os-scene:before{content:"";position:absolute;inset:-10% -12%;background:radial-gradient(circle at 50% 55%,rgba(40,182,255,.13),transparent 36%),radial-gradient(circle at 62% 34%,rgba(76,239,255,.08),transparent 18%),radial-gradient(circle at 15% 80%,rgba(116,81,255,.08),transparent 18%);pointer-events:none}
.mes-grid-svg{position:absolute;inset:0;width:100%;height:100%}.mes-grid-bg line{stroke:rgba(93,159,199,.16);stroke-width:1}.mes-main-flow,.mes-secondary-flow{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.mes-main-flow{stroke:url(#mesLineGlow);stroke-dasharray:18 12;animation:mesDash 6s linear infinite}.mes-secondary-flow{stroke:rgba(96,223,255,.4);stroke-width:3;stroke-dasharray:10 9;animation:mesDashAlt 7s linear infinite}
.mes-flow-dot{fill:#aaf7ff;filter:drop-shadow(0 0 12px rgba(107,229,255,.75));animation:mesPulse 2.4s ease-in-out infinite}.mes-flow-dot.d2{animation-delay:.3s}.mes-flow-dot.d3{animation-delay:.7s}.mes-flow-dot.d4{animation-delay:1.1s}
.mes-scene-badge{position:absolute;left:22px;top:18px;padding:8px 14px;border-radius:999px;background:linear-gradient(90deg,#20d6ff,#6ef0ff);color:#042133;font-size:12px;font-weight:800;letter-spacing:.08em;box-shadow:0 10px 28px rgba(26,210,255,.16)}
.mes-os-scene h2{position:absolute;left:22px;top:58px;margin:0;font-size:28px;max-width:660px;line-height:1.2}.mes-os-scene>p{position:absolute;left:22px;top:102px;margin:0;max-width:620px;font-size:13px;line-height:1.7;color:#88a8c0}
.mes-node{position:absolute;width:176px;padding:14px 14px 12px;border-radius:16px;border:1px solid rgba(61,151,209,.16);background:linear-gradient(180deg,rgba(8,23,40,.92),rgba(4,12,20,.84));box-shadow:0 10px 32px rgba(2,10,20,.3),inset 0 0 0 1px rgba(90,170,222,.05);transition:.25s;cursor:pointer}
.mes-node span{display:inline-flex;width:30px;height:30px;border-radius:10px;align-items:center;justify-content:center;background:rgba(11,57,86,.9);border:1px solid rgba(74,206,255,.3);font-size:11px;color:#6fe4ff;font-weight:700;margin-bottom:10px}.mes-node b{display:block;font-size:16px}.mes-node p{margin:7px 0 0;font-size:11px;line-height:1.5;color:#7ea1bb}.mes-node.active{transform:translateY(-4px) scale(1.02);border-color:rgba(84,224,255,.66);background:linear-gradient(180deg,rgba(10,52,78,.94),rgba(6,24,39,.92));box-shadow:0 0 0 1px rgba(74,219,255,.16),0 16px 46px rgba(32,199,255,.18),inset 0 0 42px rgba(77,175,255,.06)}
.mes-node.active:after{content:"";position:absolute;inset:-10px;border-radius:20px;border:1px solid rgba(84,224,255,.25);animation:mesGlow 2s ease-out infinite}
.mes-node.workorder{left:72px;top:250px}.mes-node.aps{left:270px;top:132px}.mes-node.material{left:510px;top:191px}.mes-node.line{left:744px;top:140px}.mes-node.quality{left:920px;top:300px}.mes-node.equipment{left:414px;top:350px}
.mes-float-card,.mes-window{position:absolute;border-radius:16px;border:1px solid rgba(77,169,220,.16);background:linear-gradient(180deg,rgba(7,19,34,.94),rgba(5,12,22,.88));backdrop-filter:blur(14px);box-shadow:0 10px 36px rgba(0,0,0,.22)}
.mes-float-card{width:244px;padding:14px 15px 13px}.mes-float-card span{display:inline-flex;padding:5px 10px;border-radius:999px;background:rgba(12,59,88,.8);border:1px solid rgba(88,224,255,.26);color:#74e6ff;font-size:10px;letter-spacing:.05em;margin-bottom:10px}.mes-float-card b{display:block;font-size:15px;line-height:1.35}.mes-float-card p{margin:7px 0 0;font-size:11px;line-height:1.6;color:#7fa1bb}
.mes-float-card.left.top{left:26px;top:154px}.mes-float-card.left.bottom{left:38px;bottom:120px}.mes-float-card.right.top{right:28px;top:132px}
.mes-window{padding:12px 14px;min-width:220px}.mes-window span{display:block;font-size:10px;color:#65dfff;letter-spacing:.15em}.mes-window b{display:block;font-size:15px;margin-top:6px;line-height:1.35}.mes-window em{display:block;margin-top:5px;font-style:normal;color:#7d9cb4;font-size:11px}
.mes-window-a{left:250px;top:92px}.mes-window-b{right:92px;top:240px}.mes-window-c{left:760px;bottom:124px}.mes-window-d{left:514px;bottom:70px}
.mes-bottom-kpis{position:absolute;left:24px;right:24px;bottom:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mes-bottom-kpis div{padding:12px 14px;border-radius:14px;border:1px solid rgba(65,145,194,.16);background:rgba(6,18,31,.62)}.mes-bottom-kpis span{display:block;font-size:10px;color:#77b4d0;letter-spacing:.12em}.mes-bottom-kpis b{display:block;margin-top:8px;font-size:26px;color:#f7fdff}
.mes-bottom-grid{display:grid;grid-template-columns:1.28fr 1fr;gap:12px;min-height:0}.mes-flow-panel,.mes-trend-panel{padding:16px;border-radius:18px;overflow:hidden}.mes-flow-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.mes-flow-step{padding:12px 12px 10px;border-radius:14px;border:1px solid rgba(59,141,189,.16);background:rgba(6,18,31,.58);text-align:left;cursor:pointer;transition:.22s}.mes-flow-step span{display:inline-flex;width:28px;height:28px;border-radius:9px;align-items:center;justify-content:center;background:rgba(10,50,76,.82);border:1px solid rgba(71,205,255,.26);font-size:10px;color:#6edfff;font-weight:700;margin-bottom:8px}.mes-flow-step b{display:block;font-size:14px}.mes-flow-step p{margin:6px 0 0;font-size:11px;line-height:1.55;color:#7b9bb4}.mes-flow-step.active{border-color:rgba(84,224,255,.6);background:linear-gradient(180deg,rgba(9,47,71,.94),rgba(7,23,36,.9));box-shadow:0 8px 30px rgba(24,194,255,.12)}
.mes-right-panel{display:grid;grid-template-rows:auto auto auto minmax(0,1fr);gap:12px;min-height:0}.mes-kpi-card,.mes-task-card,.mes-decision-card,.mes-trace-card{padding:16px;border-radius:18px}.mes-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.mes-kpi-grid div{padding:14px;border-radius:14px;background:rgba(6,18,31,.62);border:1px solid rgba(58,143,193,.16)}.mes-kpi-grid span{display:block;font-size:10px;color:#7aa9c7}.mes-kpi-grid b{display:block;font-size:28px;margin-top:7px}
.mes-task-card .task-block p,.mes-decision-card p,.mes-trace-card .city-trace-list span{font-size:11px}
.mes-layout.paused .mes-main-flow,.mes-layout.paused .mes-secondary-flow,.mes-layout.paused .mes-flow-dot,.mes-layout.paused .mes-node.active:after{animation-play-state:paused!important}
@keyframes mesDash{from{stroke-dashoffset:0}to{stroke-dashoffset:-180}}
@keyframes mesDashAlt{from{stroke-dashoffset:0}to{stroke-dashoffset:180}}
@keyframes mesPulse{0%,100%{transform:scale(1);opacity:.75}50%{transform:scale(1.45);opacity:1}}
@keyframes mesGlow{0%{opacity:.55;transform:scale(1)}100%{opacity:0;transform:scale(1.18)}}
@media(max-height:860px){.mes-layout{height:auto;min-height:calc(100vh - 68px)}.mes-core-column{grid-template-rows:minmax(620px,1fr) 250px}.mes-os-scene{min-height:620px}}

/* ===== v17 MES redesign: digital-twin industrial control ===== */
.mes-layout{display:none!important;grid-template-columns:208px minmax(1040px,1fr);gap:12px;padding:12px;height:calc(100vh - 68px);min-height:0}
.mes-layout.active{display:grid!important}
.mes-main-column{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr) 228px;gap:12px;min-height:0}
.mes-command{border-radius:18px;padding:16px 20px;background:linear-gradient(180deg,rgba(9,29,52,.92),rgba(6,16,29,.84));border:1px solid rgba(58,146,198,.18)}
.mes-command h1{margin:6px 0 6px;font-size:32px}.mes-command p{margin:0;color:#8daac2;font-size:13px;line-height:1.75;max-width:920px}
.mes-dt-shell{background:#f6f0e7;border:1px solid rgba(189,162,129,.35);border-radius:22px;box-shadow:0 20px 60px rgba(0,0,0,.18);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;min-height:0;color:#3a3127}
.mes-dt-topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;border-bottom:1px solid rgba(146,119,90,.16);background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(244,235,221,.8))}
.mes-dt-brand b{display:block;font-size:18px;color:#392f24}.mes-dt-brand b span{color:#c26d2c}.mes-dt-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.mes-dt-tabs span{padding:7px 14px;border-radius:999px;border:1px solid rgba(112,90,64,.18);background:rgba(255,255,255,.58);font-size:11px;color:#6a5847}.mes-dt-tabs span.active{background:#2e261e;color:#fff;border-color:#2e261e}
.mes-dt-actions{display:flex;gap:10px}.mes-dt-actions button{border:1px solid rgba(112,90,64,.22);background:rgba(255,255,255,.72);color:#665446;border-radius:12px;padding:10px 15px;cursor:pointer;font-weight:700}.mes-dt-actions button.primary{background:linear-gradient(180deg,#2c261f,#473626);color:#fff;border-color:#2c261f;box-shadow:0 10px 24px rgba(91,67,41,.12)}
.mes-dt-body{display:grid;grid-template-columns:248px minmax(0,1fr) 304px;gap:0;min-height:0}
.mes-inner-nav{padding:16px;border-right:1px solid rgba(151,122,90,.14);background:linear-gradient(180deg,rgba(249,245,237,.88),rgba(241,233,221,.95));display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:12px;min-height:0}
.mes-inner-title span{display:block;font-size:11px;letter-spacing:.18em;color:#8f7357;text-transform:uppercase}.mes-inner-title b{display:block;font-size:18px;color:#2f261f;margin-top:7px}
.mes-scene-list{display:grid;gap:10px;align-content:start;overflow:auto;padding-right:4px}.mes-scene-item{padding:14px 14px 14px 16px;border:none;text-align:left;border-radius:14px;background:rgba(255,255,255,.58);border:1px solid rgba(153,124,92,.14);cursor:pointer;transition:.22s}.mes-scene-item span{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:8px;background:rgba(77,59,39,.08);color:#8a5e30;font-size:11px;font-weight:700;margin-bottom:8px}.mes-scene-item b{display:block;font-size:16px;color:#2e261f}.mes-scene-item p{margin:6px 0 0;font-size:12px;line-height:1.55;color:#7a6956}.mes-scene-item.active{background:linear-gradient(180deg,#31261c,#473426);box-shadow:inset 3px 0 #e59b56,0 10px 26px rgba(89,59,33,.14);border-color:#3b2d22}.mes-scene-item.active b,.mes-scene-item.active p,.mes-scene-item.active span{color:#fff}.mes-scene-item.active span{background:rgba(255,255,255,.12)}
.mes-layer-panel{padding:12px 12px 10px;border:1px solid rgba(153,124,92,.14);border-radius:14px;background:rgba(255,255,255,.52)}.mes-layer-head span{display:block;font-size:10px;letter-spacing:.16em;color:#9a7b5b}.mes-layer-head b{display:block;margin-top:4px;font-size:14px;color:#332920}.mes-layer-row{display:grid;grid-template-columns:28px 1fr auto;gap:9px;align-items:center;padding:9px 0;border-bottom:1px dashed rgba(154,123,91,.18)}.mes-layer-row:last-child{border-bottom:none}.mes-layer-row label{display:inline-grid;place-items:center;height:20px;border-radius:6px;background:#e9dfd2;color:#8d6c48;font-size:10px;font-weight:700}.mes-layer-row span{font-size:11px;color:#594b3c}.mes-layer-row em{font-style:normal;font-size:11px;color:#b17735}.mes-tech-tags{display:flex;flex-wrap:wrap;gap:8px}.mes-tech-tags span{padding:6px 10px;border-radius:999px;background:#eee3d6;border:1px solid rgba(146,117,85,.14);color:#715a45;font-size:10px}
.mes-twin-stage{position:relative;padding:16px 16px 12px;background:linear-gradient(180deg,rgba(251,248,242,.75),rgba(245,238,228,.95));min-height:0;overflow:hidden}
.mes-stage-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.mes-stage-crumb{padding:7px 14px;border-radius:999px;border:1px solid rgba(146,117,85,.18);background:rgba(255,255,255,.65);font-size:11px;color:#79634f}.mes-stage-crumb span{color:#c17331;font-weight:700}.mes-stage-status{padding:8px 16px;border-radius:999px;background:#2f241c;color:#fff;font-size:11px;box-shadow:0 10px 22px rgba(78,54,33,.18)}.mes-stage-status span{color:#f0b173}
.mes-twin-stage h2{margin:16px 0 6px;font-size:40px;line-height:1.1;color:#4a3a2a;font-weight:600}.mes-twin-stage>p{margin:0 0 12px;max-width:720px;font-size:14px;line-height:1.7;color:#7a6a57}
.mes-plant-canvas{position:relative;height:100%;min-height:520px;border:1px solid rgba(174,143,111,.12);border-radius:18px;overflow:hidden;background:radial-gradient(circle at 58% 50%,rgba(218,202,177,.18),transparent 28%),linear-gradient(180deg,#fbf8f2 0%,#f4ebdf 100%)}
.mes-plant-grid{position:absolute;inset:0;width:100%;height:100%}.mes-plant-grid line{stroke:rgba(179,149,116,.17);stroke-width:1}.mes-plant-grid .flow-path{fill:none;stroke:url(#mesPathFlow);stroke-width:4;stroke-dasharray:18 10;animation:mesFlow 5s linear infinite}.mes-plant-grid .flow-path.second{stroke:rgba(212,136,70,.56);stroke-dasharray:12 10;animation-duration:6.8s}
.mes-iso-block{position:absolute;display:grid;align-content:center;gap:6px;width:150px;height:92px;padding:12px 14px 12px 18px;border-radius:10px 10px 16px 16px;background:linear-gradient(180deg,#bfcfd6,#91b8c4);transform:skew(-18deg) rotate(-8deg);box-shadow:0 16px 22px rgba(88,74,57,.18),8px 10px 0 rgba(194,174,146,.38)}.mes-iso-block:before{content:"";position:absolute;left:0;right:-18px;bottom:-16px;height:16px;background:#dccdb8;transform:skew(45deg);transform-origin:left top;border-radius:0 0 9px 9px}.mes-iso-block:after{content:"";position:absolute;top:0;right:-18px;width:18px;bottom:0;background:#aac0c8;transform:skewY(45deg);transform-origin:left top;border-radius:0 10px 10px 0}.mes-iso-block i,.mes-iso-block b,.mes-iso-block span{position:relative;z-index:2;transform:skew(18deg) rotate(8deg)}.mes-iso-block i{width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.2)}.mes-iso-block b{font-size:17px;color:#233235}.mes-iso-block span{font-size:11px;color:#355359;line-height:1.4}.mes-iso-block.active{background:linear-gradient(180deg,#d88b45,#b9661c);box-shadow:0 18px 28px rgba(174,108,45,.24),10px 12px 0 rgba(224,187,145,.35)}.mes-iso-block.active:after{background:#c7732c}.mes-iso-block.active b,.mes-iso-block.active span{color:#fff}
.mes-iso-block.order-center{left:98px;top:310px}.mes-iso-block.aps-hub{left:290px;top:245px}.mes-iso-block.material-hub{left:470px;top:180px}.mes-iso-block.line-hub{left:616px;top:250px}.mes-iso-block.quality-hub{left:748px;top:332px}.mes-iso-block.device-hub{left:448px;top:364px}
.mes-agent-callout,.mes-hot-chip,.mes-time-slider{position:absolute;z-index:3}.mes-agent-callout{max-width:260px;padding:14px 16px;border-radius:16px;background:rgba(255,252,247,.78);border:1px solid rgba(153,124,92,.18);box-shadow:0 10px 26px rgba(92,67,45,.08);backdrop-filter:blur(8px)}.mes-agent-callout span{display:inline-flex;padding:5px 10px;border-radius:999px;background:#2f241c;color:#fff;font-size:11px}.mes-agent-callout b{display:block;font-size:15px;color:#392f25;margin-top:10px}.mes-agent-callout p{margin:7px 0 0;font-size:12px;line-height:1.65;color:#6e5c4c}.mes-agent-callout.left.top{left:18px;top:104px}.mes-agent-callout.left.bottom{left:34px;bottom:78px}.mes-agent-callout.right.top{right:18px;top:104px}.mes-agent-callout.right.bottom{right:30px;bottom:110px}
.mes-hot-chip{min-width:220px;max-width:260px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.7);border:1px solid rgba(160,130,98,.18);box-shadow:0 8px 24px rgba(92,67,45,.08)}.mes-hot-chip span{display:block;font-size:10px;letter-spacing:.14em;color:#9a7a56}.mes-hot-chip b{display:block;font-size:16px;color:#3c2f25;margin-top:6px;line-height:1.35}.mes-hot-chip em{display:block;margin-top:5px;font-style:normal;color:#7a6a58;font-size:12px}.mes-hot-chip.chip-a{left:260px;top:70px}.mes-hot-chip.chip-b{right:72px;top:210px}.mes-hot-chip.chip-c{right:110px;bottom:38px}.mes-hot-chip.chip-d{left:500px;bottom:34px}
.mes-time-slider{left:18px;bottom:20px;padding:12px 16px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(153,124,92,.18);display:flex;gap:18px;align-items:center}.mes-time-slider span{font-size:10px;letter-spacing:.16em;color:#9a7a56}.mes-time-slider b{font-size:13px;color:#3e3024}.mes-time-slider em{font-style:normal;color:#c97730}
.mes-right-diagnosis{padding:14px 14px 14px 12px;border-left:1px solid rgba(151,122,90,.14);background:linear-gradient(180deg,rgba(249,245,237,.92),rgba(241,233,221,.98));display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:12px;min-height:0}.mes-right-card{padding:14px;border-radius:16px;background:rgba(255,255,255,.62);border:1px solid rgba(153,124,92,.16)}.mes-card-title span{display:block;font-size:10px;letter-spacing:.16em;color:#9a7b5b}.mes-card-title b{display:block;margin-top:4px;font-size:15px;color:#32281f}.mes-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.mes-kpi-grid div{padding:12px;border-radius:12px;background:#fff;border:1px solid rgba(153,124,92,.11)}.mes-kpi-grid span{display:block;font-size:11px;color:#7f6b57}.mes-kpi-grid b{display:block;margin-top:8px;font-size:28px;color:#34291f}
.mes-relation-map{width:100%;height:120px;margin-top:12px}.mes-relation-map line{stroke:#c4a27d;stroke-width:1.4;opacity:.65}.mes-relation-map circle.n1,.mes-relation-map circle.n3,.mes-relation-map circle.n5{fill:#4f87b2}.mes-relation-map circle.n2,.mes-relation-map circle.n6{fill:#cb7a2b}.mes-relation-map circle.n4{fill:#88a348}
.mes-advice-item{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px dashed rgba(153,124,92,.18)}.mes-advice-item:last-of-type{border-bottom:none}.mes-advice-item span{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eee2d3;color:#8a602f;font-size:11px;font-weight:700}.mes-advice-item b{display:block;font-size:14px;color:#332920}.mes-advice-item p{margin:4px 0 0;font-size:12px;line-height:1.55;color:#756451}.mes-advice-item.active b{color:#b96822}.mes-action-btn{margin-top:14px;width:100%;border:none;border-radius:12px;background:linear-gradient(180deg,#2f241c,#433123);color:#fff;padding:13px 14px;font-weight:700;cursor:pointer}
.mes-agent-footer{display:grid;grid-template-columns:repeat(4,1fr) 1.2fr;gap:12px;padding:14px 16px;border-top:1px solid rgba(151,122,90,.14);background:linear-gradient(180deg,rgba(248,243,235,.82),rgba(239,230,218,.96))}.mes-footer-agent,.mes-gate-card{padding:14px;border-radius:16px;border:1px solid rgba(153,124,92,.14);background:rgba(255,255,255,.64)}.mes-footer-agent span{display:block;font-size:10px;letter-spacing:.14em;color:#9a7a56}.mes-footer-agent b{display:block;margin-top:8px;font-size:16px;color:#30261d}.mes-footer-agent p{margin:6px 0 0;font-size:12px;line-height:1.6;color:#6e5d4b}.mes-gate-card{background:linear-gradient(180deg,#35261b,#543923);border-color:#46301f;color:#fff}.mes-gate-card span{display:block;font-size:10px;letter-spacing:.16em;color:#f1bd89}.mes-gate-card b{display:block;font-size:18px;line-height:1.35;margin-top:8px}.mes-gate-card p{margin:8px 0 0;font-size:12px;line-height:1.6;color:#efdecb}.mes-gate-metrics{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.12)}.mes-gate-metrics em{font-style:normal;font-size:12px;color:#e6cfbb}.mes-gate-metrics strong{font-size:20px}.mes-gate-metrics.success strong{color:#ffcc93}
.mes-under-grid{display:grid;grid-template-columns:1.2fr .88fr;gap:12px;min-height:0}.mes-under-card{padding:16px;border-radius:18px;background:#f6f0e7;border:1px solid rgba(189,162,129,.35);box-shadow:0 12px 36px rgba(0,0,0,.12);min-height:0;overflow:hidden}.mes-under-lines line{stroke:rgba(179,149,116,.17)}.mes-under-area{fill:url(#mesAreaA)}.mes-under-line{fill:none;stroke-linecap:round;stroke-width:3}.mes-under-line.a{stroke:#ca7b31}.mes-under-line.b{stroke:#6f8e9b}.mes-under-card .city-axis{margin-top:4px;color:#8c765f}.mes-under-card.trace .city-trace-list{margin-top:14px}.mes-under-card.trace .city-trace-list div{background:rgba(255,255,255,.7);border:1px solid rgba(153,124,92,.12)}.mes-under-card.trace .city-trace-list time,.mes-under-card.trace .city-trace-list b,.mes-under-card.trace .city-trace-list span{color:#4f4236}
.mes-dt-shell[data-stage="0"] .order-center,.mes-dt-shell[data-stage="1"] .aps-hub,.mes-dt-shell[data-stage="2"] .material-hub,.mes-dt-shell[data-stage="3"] .line-hub,.mes-dt-shell[data-stage="4"] .quality-hub,.mes-dt-shell[data-stage="5"] .device-hub{background:linear-gradient(180deg,#d88b45,#b9661c);box-shadow:0 18px 28px rgba(174,108,45,.24),10px 12px 0 rgba(224,187,145,.35)}
.mes-dt-shell[data-stage="0"] .order-center b,.mes-dt-shell[data-stage="0"] .order-center span,.mes-dt-shell[data-stage="1"] .aps-hub b,.mes-dt-shell[data-stage="1"] .aps-hub span,.mes-dt-shell[data-stage="2"] .material-hub b,.mes-dt-shell[data-stage="2"] .material-hub span,.mes-dt-shell[data-stage="3"] .line-hub b,.mes-dt-shell[data-stage="3"] .line-hub span,.mes-dt-shell[data-stage="4"] .quality-hub b,.mes-dt-shell[data-stage="4"] .quality-hub span,.mes-dt-shell[data-stage="5"] .device-hub b,.mes-dt-shell[data-stage="5"] .device-hub span{color:#fff}
.mes-layout.paused .mes-plant-grid .flow-path{animation-play-state:paused!important}
@keyframes mesFlow{from{stroke-dashoffset:0}to{stroke-dashoffset:-180}}
@media(max-height:880px){.mes-layout{height:auto;min-height:calc(100vh - 68px)}.mes-main-column{grid-template-rows:auto minmax(860px,1fr) 228px}.mes-plant-canvas{min-height:560px}}

/* ===== v18 MES true-3D redesign ===== */
.mes-layout{display:none!important;grid-template-columns:208px minmax(1080px,1fr);gap:12px;padding:12px;height:calc(100vh - 68px);min-height:0}
.mes-layout.active{display:grid!important}
.mes-v3-main{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:0}
.mes-v3-command{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:16px 20px;border-radius:18px;background:linear-gradient(180deg,rgba(9,29,52,.92),rgba(6,16,29,.84));border:1px solid rgba(58,146,198,.18)}
.mes-v3-command h1{margin:6px 0 6px;font-size:32px}.mes-v3-command p{margin:0;color:#8daac2;font-size:13px;line-height:1.75;max-width:900px}
.mes-v3-command-actions{display:flex;gap:10px}.mes-v3-command-actions button{border:1px solid rgba(104,171,224,.28);background:rgba(7,20,36,.76);color:#d7f2ff;border-radius:12px;padding:10px 16px;cursor:pointer;font-weight:700;white-space:nowrap}.mes-v3-command-actions .primary{background:linear-gradient(180deg,#1479b8,#0d5a88);box-shadow:0 12px 24px rgba(17,127,187,.22)}
.mes-v3-shell{background:#f7f1e8;border:1px solid rgba(190,164,133,.36);border-radius:22px;box-shadow:0 20px 60px rgba(0,0,0,.18);display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;overflow:hidden;min-height:0;color:#382d22}
.mes-v3-topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;background:linear-gradient(180deg,rgba(255,255,255,.78),rgba(246,239,228,.95));border-bottom:1px solid rgba(166,138,108,.18)}
.mes-v3-brand strong{display:block;font-size:18px;color:#31271f}.mes-v3-brand strong span{color:#c56f2b}.mes-v3-tabline{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.mes-v3-tabline span{padding:7px 14px;border-radius:999px;border:1px solid rgba(118,95,70,.18);background:rgba(255,255,255,.66);font-size:11px;color:#735f4d}.mes-v3-tabline span.active{background:#2e261e;color:#fff;border-color:#2e261e}.mes-v3-statusline{display:grid;justify-items:end;gap:4px}.mes-v3-statusline span{font-size:11px;letter-spacing:.16em;color:#ba7338;text-transform:uppercase}.mes-v3-statusline b{font-size:14px;color:#2f251c}
.mes-v3-body{display:grid;grid-template-columns:252px minmax(0,1fr) 296px;min-height:0}
.mes-v3-leftpanel{padding:16px;border-right:1px solid rgba(166,138,108,.14);background:linear-gradient(180deg,rgba(249,245,237,.95),rgba(242,234,223,.98));display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:12px;min-height:0}
.mes-v3-paneltitle span{display:block;font-size:10px;letter-spacing:.18em;color:#94785c;text-transform:uppercase}.mes-v3-paneltitle b{display:block;margin-top:6px;font-size:18px;color:#30261e}
.mes-v3-steplist{display:grid;gap:10px;align-content:start;overflow:auto;padding-right:4px}.mes-v3-sceneitem{padding:14px 14px 14px 16px;border-radius:14px;border:1px solid rgba(153,124,92,.14);background:rgba(255,255,255,.62);text-align:left;cursor:pointer;transition:.22s}.mes-v3-sceneitem span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:8px;background:rgba(77,59,39,.08);color:#8a5e30;font-size:11px;font-weight:700;margin-bottom:8px}.mes-v3-sceneitem b{display:block;font-size:16px;color:#2f251d}.mes-v3-sceneitem p{margin:6px 0 0;font-size:12px;color:#796654;line-height:1.55}.mes-v3-sceneitem.active{background:linear-gradient(180deg,#33281f,#4a3525);border-color:#3d2d21;box-shadow:inset 3px 0 #e3a15f,0 10px 26px rgba(89,59,33,.14)}.mes-v3-sceneitem.active span{background:rgba(255,255,255,.12);color:#fff}.mes-v3-sceneitem.active b,.mes-v3-sceneitem.active p{color:#fff}
.mes-v3-layerbox{padding:12px;border:1px solid rgba(153,124,92,.14);border-radius:14px;background:rgba(255,255,255,.56)}.mes-v3-layerhead span{display:block;font-size:10px;letter-spacing:.16em;color:#9a7b5b;text-transform:uppercase}.mes-v3-layerhead b{display:block;margin-top:4px;font-size:14px;color:#332920}.mes-v3-layerrow{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:9px 0;border-bottom:1px dashed rgba(154,123,91,.18)}.mes-v3-layerrow:last-child{border-bottom:none}.mes-v3-layerrow label{display:grid;place-items:center;height:20px;border-radius:6px;background:#ebe0d2;color:#8b6945;font-size:10px;font-weight:700}.mes-v3-layerrow span{font-size:11px;color:#58493b}.mes-v3-layerrow em{font-style:normal;font-size:11px;color:#bd7937}.mes-v3-tags{display:flex;flex-wrap:wrap;gap:8px}.mes-v3-tags span{padding:6px 10px;border-radius:999px;background:#efe4d7;border:1px solid rgba(153,124,92,.14);font-size:10px;color:#6e5743}
.mes-v3-stagepanel{padding:16px;background:linear-gradient(180deg,rgba(251,248,242,.78),rgba(244,236,225,.96));min-height:0;overflow:hidden}
.mes-v3-stagehead{display:flex;justify-content:space-between;align-items:center;gap:12px}.mes-v3-crumb{padding:8px 14px;border-radius:999px;border:1px solid rgba(146,117,85,.18);background:rgba(255,255,255,.74);font-size:11px;color:#77614c}.mes-v3-crumb span{color:#c37531;font-weight:700}.mes-v3-runstatus{padding:8px 14px;border-radius:999px;background:#2f241c;color:#fff;font-size:11px;box-shadow:0 10px 24px rgba(78,54,33,.14)}.mes-v3-runstatus b{color:#f7bd81}
.mes-v3-stagepanel h2{margin:14px 0 6px;font-size:34px;color:#423327;line-height:1.18}.mes-v3-stagepanel>p{margin:0 0 12px;font-size:14px;line-height:1.7;color:#796754;max-width:760px}
.mes-v3-canvaswrap{position:relative;height:100%;min-height:580px;border-radius:20px;overflow:hidden;border:1px solid rgba(173,143,110,.12);background:linear-gradient(180deg,#fbf7f0 0%,#f3eadf 100%)}
#mesCanvas{position:absolute;inset:0;width:100%;height:100%;display:block}.mes-v3-fallback{position:absolute;inset:0;display:grid;place-items:center;color:#715b47;font-size:15px;letter-spacing:.16em;text-transform:uppercase;background:radial-gradient(circle at 50% 42%,rgba(210,170,130,.12),transparent 26%),linear-gradient(180deg,rgba(255,255,255,.38),rgba(245,236,223,.82));backdrop-filter:blur(2px);z-index:1}.mes-v3-fallback.hidden{display:none}
.mes-v3-floatcard{position:absolute;z-index:2;max-width:275px;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.76);border:1px solid rgba(160,130,98,.18);box-shadow:0 12px 32px rgba(89,65,43,.1);backdrop-filter:blur(8px)}.mes-v3-floatcard span{display:block;font-size:10px;letter-spacing:.16em;color:#9d7856;text-transform:uppercase}.mes-v3-floatcard b{display:block;margin-top:6px;font-size:16px;color:#382c22;line-height:1.34}.mes-v3-floatcard em{display:block;margin-top:5px;font-style:normal;font-size:12px;color:#786553;line-height:1.55}.mes-v3-floatcard.top-left{left:16px;top:16px}.mes-v3-floatcard.top-right{right:16px;top:16px}.mes-v3-floatcard.bottom-right{right:16px;bottom:74px}.mes-v3-floatcard.bottom-left{left:16px;bottom:74px}.mes-v3-floatcard.small{max-width:250px}
.mes-v3-bottomstrip{position:absolute;left:16px;right:16px;bottom:14px;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mes-v3-bottomstrip>div{padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.8);border:1px solid rgba(160,130,98,.16);box-shadow:0 8px 24px rgba(89,65,43,.08)}.mes-v3-bottomstrip span{display:block;font-size:11px;color:#7b6651}.mes-v3-bottomstrip b{display:block;margin-top:5px;font-size:24px;color:#34291f}
.mes-v3-rightpanel{padding:16px 14px 16px 12px;border-left:1px solid rgba(166,138,108,.14);background:linear-gradient(180deg,rgba(249,245,237,.96),rgba(242,234,223,.98));display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:12px;min-height:0}.mes-v3-card{padding:14px;border-radius:16px;background:rgba(255,255,255,.66);border:1px solid rgba(153,124,92,.16)}.mes-v3-kpigrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.mes-v3-kpigrid>div{padding:12px;border-radius:12px;background:#fff;border:1px solid rgba(153,124,92,.1)}.mes-v3-kpigrid span{display:block;font-size:11px;color:#7f6b57}.mes-v3-kpigrid b{display:block;margin-top:8px;font-size:28px;color:#34291f}
.mes-v3-advice{display:grid;grid-template-columns:28px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed rgba(153,124,92,.18)}.mes-v3-advice:last-child{border-bottom:none}.mes-v3-advice label{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eee2d3;color:#8a602f;font-size:11px;font-weight:700}.mes-v3-advice b{display:block;font-size:14px;color:#332920}.mes-v3-advice p{margin:4px 0 0;font-size:12px;line-height:1.55;color:#756451}.mes-v3-advice.active b{color:#b96822}
.mes-v3-card.trace{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}.mes-v3-card.trace .city-trace-list{margin-top:12px;overflow:auto}.mes-v3-card.trace .city-trace-list div{background:rgba(255,255,255,.76);border:1px solid rgba(153,124,92,.12)}.mes-v3-card.trace .city-trace-list time,.mes-v3-card.trace .city-trace-list b,.mes-v3-card.trace .city-trace-list span{color:#4e4136}.mes-v3-card.trace .city-trace-list i.ok{background:#2aa272}.mes-v3-card.trace .city-trace-list i.run{background:#d47f2c}.mes-v3-card.trace .city-trace-list i.wait{background:#7c8b9a}
.mes-v3-agentrow{display:grid;grid-template-columns:repeat(4,1fr) 1.2fr;gap:12px;padding:14px 16px;border-top:1px solid rgba(166,138,108,.14);background:linear-gradient(180deg,rgba(248,243,236,.86),rgba(241,232,220,.98))}.mes-v3-agentcard,.mes-v3-gatecard{padding:14px;border-radius:16px;border:1px solid rgba(153,124,92,.16);background:rgba(255,255,255,.68)}.mes-v3-agentcard span{display:inline-flex;padding:5px 10px;border-radius:999px;background:#2f241c;color:#fff;font-size:11px}.mes-v3-agentcard b{display:block;margin-top:10px;font-size:15px;color:#30261d}.mes-v3-agentcard p{margin:6px 0 0;font-size:12px;line-height:1.6;color:#6f5c4a}.mes-v3-gatecard{background:linear-gradient(180deg,#36271c,#543923);border-color:#46301f;color:#fff}.mes-v3-gatecard span{display:block;font-size:10px;letter-spacing:.16em;color:#f2be8a}.mes-v3-gatecard b{display:block;margin-top:8px;font-size:18px;line-height:1.35}.mes-v3-gatecard p{margin:8px 0 0;font-size:12px;line-height:1.6;color:#efdec9}.mes-v3-gaterow{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.12)}.mes-v3-gaterow em{font-style:normal;font-size:12px;color:#e6cfbb}.mes-v3-gaterow strong{font-size:20px}.mes-v3-gaterow.success strong{color:#ffc78c}
.mes-v3-footbar{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;gap:12px;padding:14px 16px;border-top:1px solid rgba(166,138,108,.14);background:linear-gradient(180deg,rgba(249,246,241,.9),rgba(243,236,227,.98))}.mes-v3-footitem{padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(160,130,98,.16)}.mes-v3-footitem span{display:block;font-size:10px;letter-spacing:.16em;color:#9b7756;text-transform:uppercase}.mes-v3-footitem p{margin:6px 0 0;font-size:12px;color:#6e5b48;line-height:1.6}.mes-v3-footitem.emphasis{background:rgba(52,39,28,.94);border-color:#483322}.mes-v3-footitem.emphasis span,.mes-v3-footitem.emphasis p{color:#fff}.mes-v3-footitem.highlight{background:rgba(197,111,43,.1);border-color:rgba(197,111,43,.24)}.mes-v3-arrow{display:grid;place-items:center;color:#b37237;font-size:24px;font-weight:700}
.mes-layout.paused #mesCanvas{filter:saturate(.92)}
@media (max-width:1500px){.mes-v3-body{grid-template-columns:236px minmax(0,1fr) 274px}.mes-v3-bottomstrip b{font-size:21px}.mes-v3-floatcard{max-width:235px}.mes-v3-agentrow{grid-template-columns:repeat(2,1fr) 1.2fr}.mes-v3-footbar{grid-template-columns:1fr;}.mes-v3-arrow{display:none}}
@media (max-height:920px){.mes-layout{height:auto;min-height:calc(100vh - 68px)}.mes-v3-canvaswrap{min-height:520px}}

/* ===== v19 MES focus layout: 3D first ===== */
.mes-v4-page{display:none!important;grid-template-columns:208px minmax(0,1fr);gap:12px;padding:12px;height:calc(100vh - 68px);min-height:0}
.mes-v4-page.active{display:grid!important}
.mes-v4-main{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;min-width:0;min-height:0}
.mes-v4-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-radius:18px;padding:14px 18px;background:linear-gradient(180deg,rgba(8,28,50,.94),rgba(5,16,30,.9))}.mes-v4-head h1{font-size:28px;margin:5px 0 4px}.mes-v4-head p{margin:0;color:#89a8bd;font-size:12px}.mes-v4-actions{display:flex;gap:8px}.mes-v4-actions button{border:1px solid rgba(92,184,235,.25);background:#071a2e;color:#b9d8e8;padding:9px 14px;border-radius:10px;cursor:pointer;font-weight:700}.mes-v4-actions button.primary{background:linear-gradient(180deg,#0c76ae,#0a527b);border-color:rgba(85,210,255,.44);color:#fff}
.mes-v4-stagebar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.mes-v4-stagebtn{border:1px solid rgba(69,157,209,.15);background:rgba(6,20,35,.78);border-radius:12px;padding:9px 10px;text-align:left;color:#91adbe;cursor:pointer;transition:.2s}.mes-v4-stagebtn span{font-size:9px;color:#55d4ff;display:block;letter-spacing:.12em}.mes-v4-stagebtn b{display:block;font-size:12px;margin-top:4px;color:#b9d2df}.mes-v4-stagebtn.active{border-color:rgba(75,219,255,.55);background:linear-gradient(180deg,rgba(8,75,108,.78),rgba(7,28,45,.86));box-shadow:inset 0 2px 0 #4ee0ff,0 0 22px rgba(39,199,255,.08)}.mes-v4-stagebtn.active b{color:#fff}
.mes-v4-content{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:10px;min-height:0}.mes-v4-hero{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:8px;min-width:0;min-height:0;padding:12px;border-radius:20px;background:#f5eee4;border:1px solid rgba(180,151,119,.32);box-shadow:0 16px 44px rgba(0,0,0,.16)}
.mes-v4-herohead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;color:#403124;padding:2px 4px}.mes-v4-herohead>div:first-child>span{display:inline-flex;padding:6px 10px;border-radius:999px;background:#332820;color:#fff;font-size:10px;letter-spacing:.12em}.mes-v4-herohead b{display:block;font-size:22px;margin-top:8px}.mes-v4-herohead p{margin:5px 0 0;color:#776654;font-size:12px;line-height:1.6;max-width:680px}.mes-v4-engine{padding:7px 10px;border-radius:999px;border:1px solid rgba(157,124,90,.22);background:rgba(255,255,255,.72);color:#a66933;font-size:10px;letter-spacing:.12em;white-space:nowrap}.mes-v4-engine.ok{background:#183a33;color:#8ef0d5;border-color:#2d715f}.mes-v4-engine.error{background:#4e2a24;color:#ffc2ae;border-color:#9b5548}
.mes-v4-canvaswrap{position:relative;min-height:590px;border-radius:18px;overflow:hidden;background:linear-gradient(180deg,#fbf7f0,#eee2d3);border:1px solid rgba(176,145,112,.18)}#mesCanvas{position:absolute;inset:0;width:100%;height:100%;display:block}.mes-v4-fallback{position:absolute;inset:0;z-index:1;display:grid;place-items:center;background:linear-gradient(180deg,#fbf7f0,#eee2d3);color:#8b6b4d;font-size:13px;letter-spacing:.16em}.mes-v4-fallback.hidden{display:none}.mes-v4-scenehint{position:absolute;left:14px;top:14px;z-index:2;padding:9px 11px;border-radius:12px;background:rgba(255,255,255,.72);border:1px solid rgba(159,129,95,.16);backdrop-filter:blur(8px);color:#46372a}.mes-v4-scenehint span{display:block;font-size:9px;color:#b06c34;letter-spacing:.15em}.mes-v4-scenehint b{display:block;margin-top:4px;font-size:13px}.mes-v4-kpis{position:absolute;left:14px;right:14px;bottom:12px;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.mes-v4-kpis>div{padding:9px 11px;border-radius:12px;background:rgba(255,255,255,.82);border:1px solid rgba(158,129,96,.14);box-shadow:0 8px 20px rgba(90,64,40,.07)}.mes-v4-kpis span{display:block;font-size:10px;color:#79634f}.mes-v4-kpis b{display:block;margin-top:4px;font-size:20px;color:#32271d}
.mes-v4-agentline{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.mes-v4-agentline>div{padding:9px 11px;border-radius:12px;background:#fff;border:1px solid rgba(166,138,106,.15);min-width:0}.mes-v4-agentline span{display:block;font-size:9px;color:#bd7537;letter-spacing:.12em}.mes-v4-agentline b{display:block;margin-top:4px;font-size:12px;color:#43352a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mes-v4-side{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;min-height:0}.mes-v4-sidecard{border-radius:18px;padding:14px;background:linear-gradient(180deg,rgba(8,28,48,.94),rgba(5,17,31,.92));border:1px solid rgba(72,157,207,.16);color:#eaf8ff}.mes-v4-sidecard>span{display:inline-flex;padding:5px 8px;border-radius:999px;background:rgba(10,76,104,.56);border:1px solid rgba(83,208,248,.26);font-size:9px;letter-spacing:.12em;color:#68d8ff}.mes-v4-sidecard h3{font-size:17px;line-height:1.35;margin:10px 0 7px}.mes-v4-sidecard>p{margin:0;color:#8da9bc;font-size:11px;line-height:1.65}.mes-v4-compare{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid rgba(86,164,208,.12)}.mes-v4-compare em{font-style:normal;font-size:11px;color:#88a5b8}.mes-v4-compare b{font-size:18px}.mes-v4-compare.good b{color:#5bf0c7}
.mes-v4-side-title span{display:block;font-size:9px;color:#58d8ff;letter-spacing:.15em}.mes-v4-side-title b{display:block;margin-top:4px;font-size:16px}.mes-v4-advice{display:grid;grid-template-columns:28px 1fr;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(86,164,208,.1)}.mes-v4-advice:last-child{border-bottom:none}.mes-v4-advice i{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:rgba(25,81,111,.62);color:#67d9ff;font-style:normal;font-size:10px}.mes-v4-advice b{font-size:12px;line-height:1.5}.mes-v4-sidecard.trace{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0}.mes-v4-sidecard.trace .city-trace-list{overflow:auto;margin-top:10px}.mes-v4-sidecard.trace .city-trace-list div{padding:9px 8px;background:rgba(7,24,40,.66);border-color:rgba(84,165,208,.1);grid-template-columns:60px 10px 76px 1fr;gap:7px}.mes-v4-sidecard.trace .city-trace-list time,.mes-v4-sidecard.trace .city-trace-list span{font-size:10px}.mes-v4-sidecard.trace .city-trace-list b{font-size:11px}
@media(max-width:1500px){.mes-v4-content{grid-template-columns:minmax(0,1fr) 270px}.mes-v4-canvaswrap{min-height:520px}.mes-v4-stagebar{grid-template-columns:repeat(3,1fr)}}
@media(max-height:900px){.mes-v4-page{height:auto;min-height:calc(100vh - 68px)}.mes-v4-canvaswrap{min-height:520px}}

/* ===== v20 MES focus layout: 3D first ===== */
.mes-v3-shell{grid-template-rows:auto minmax(0,1fr)!important}
.mes-v3-body{grid-template-columns:minmax(0,1fr) 268px!important;min-height:0!important}
.mes-v3-stagepanel{padding:12px 14px 14px!important;display:grid!important;grid-template-rows:auto auto auto minmax(0,1fr)!important;gap:8px!important}
.mes-v3-stagebar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:2px}
.mes-v3-stagebtn,.mes-v3-stagebar .mes-flow-step{min-width:0;padding:9px 10px;border-radius:11px;border:1px solid rgba(148,116,83,.16);background:rgba(255,255,255,.72);color:#604d3b;text-align:left;cursor:pointer;transition:.2s}
.mes-v3-stagebtn span,.mes-v3-stagebar .mes-flow-step span{display:block;font-size:9px;letter-spacing:.12em;color:#b97535}.mes-v3-stagebtn b,.mes-v3-stagebar .mes-flow-step b{display:block;font-size:12px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mes-v3-stagebtn p,.mes-v3-stagebar .mes-flow-step p{display:none}
.mes-v3-stagebtn.active,.mes-v3-stagebar .mes-flow-step.active{background:linear-gradient(180deg,#3a2c21,#513a28);color:#fff;border-color:#4a3424;box-shadow:inset 0 2px #e6a45f,0 8px 18px rgba(93,60,34,.12)}
.mes-v3-stagepanel h2{font-size:28px!important;margin:2px 0 0!important}.mes-v3-stagepanel>p{font-size:12px!important;line-height:1.55!important;margin:0 0 2px!important;max-width:760px!important}
.mes-v3-canvaswrap{min-height:650px!important;height:100%!important}
.mes-v3-rightpanel{grid-template-rows:auto minmax(0,1fr)!important;padding:12px!important}.mes-v3-card{padding:12px!important}.mes-v3-card.trace{min-height:0!important}
.mes-v3-kpigrid{gap:8px!important}.mes-v3-kpigrid>div{padding:10px!important}.mes-v3-kpigrid b{font-size:23px!important;margin-top:5px!important}
.mes-v3-floatcard.top-left{max-width:250px!important;padding:10px 12px!important}.mes-v3-floatcard.top-left b{font-size:14px!important}.mes-v3-floatcard.top-left em{font-size:10px!important}
.mes-v3-bottomstrip{left:12px!important;right:12px!important;bottom:10px!important;gap:7px!important}.mes-v3-bottomstrip>div{padding:8px 10px!important;border-radius:10px!important}.mes-v3-bottomstrip span{font-size:9px!important}.mes-v3-bottomstrip b{font-size:19px!important;margin-top:3px!important}
.mes-engine-status{position:absolute;right:12px;top:12px;z-index:3;padding:6px 9px;border-radius:999px;background:rgba(43,34,27,.82);border:1px solid rgba(222,160,94,.32);color:#ffd09d;font-size:9px;letter-spacing:.12em;box-shadow:0 6px 18px rgba(71,48,30,.14)}
.mes-v3-fallback{z-index:8!important}
@media(max-width:1500px){.mes-v3-body{grid-template-columns:minmax(0,1fr) 248px!important}.mes-v3-stagebar{gap:6px}.mes-v3-stagebtn,.mes-v3-stagebar .mes-flow-step{padding:8px}.mes-v3-canvaswrap{min-height:600px!important}}

/* ===== v21 统一左侧折叠菜单与页面样式收敛 ===== */
/* 顶部导航已从页面结构移除，所有页面直接占满视口 */
.layout,
.city-layout,
.mes-layout{
  height:100vh!important;
  min-height:100vh!important;
  transition:grid-template-columns .24s ease;
}
.layout{grid-template-columns:220px minmax(930px,1fr) 318px!important}
.city-layout{grid-template-columns:220px minmax(930px,1fr) 318px!important}
.mes-layout{grid-template-columns:220px minmax(1080px,1fr)!important}

/* 左侧品牌区 */
.module-sidebar{
  padding:14px!important;
  display:flex;
  flex-direction:column;
  min-width:0;
  overflow:hidden;
  transition:padding .24s ease;
}
.sidebar-brand{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:2px 0 14px;
  margin-bottom:14px;
  border-bottom:1px solid rgba(92,180,255,.16);
  flex:none;
}
.sidebar-brand-main{display:flex;align-items:center;gap:11px;min-width:0}
.sidebar-brand-mark{
  width:38px;height:38px;flex:0 0 38px;
  display:grid;place-items:center;
  border-radius:12px;
  border:1px solid rgba(40,191,255,.8);
  background:linear-gradient(145deg,rgba(17,93,139,.42),rgba(5,25,43,.8));
  box-shadow:inset 0 0 20px rgba(26,169,255,.14),0 0 18px rgba(26,169,255,.08);
  color:#fff;font-size:18px;font-weight:900;
}
.sidebar-brand-copy{min-width:0;white-space:nowrap;overflow:hidden;transition:opacity .18s ease,width .24s ease}
.sidebar-brand-copy b{display:block;font-size:17px;color:#f5fbff;letter-spacing:.01em}
.sidebar-brand-copy span{display:block;margin-top:3px;font-size:9px;color:#7799ae;white-space:nowrap}
.sidebar-toggle{
  width:28px;height:28px;flex:0 0 28px;
  display:grid;place-items:center;
  padding:0;border-radius:9px;
  border:1px solid rgba(78,166,220,.18);
  background:rgba(6,20,36,.7);
  color:#8fcce8;font-size:19px;line-height:1;
  cursor:pointer;transition:.2s ease;
}
.sidebar-toggle:hover{border-color:rgba(79,211,255,.42);color:#fff;background:rgba(10,49,73,.88)}
.side-head{flex:none}.side-head .eyebrow{font-size:9px!important;letter-spacing:.12em!important}.side-head h2{font-size:16px!important;margin:5px 0 12px!important}
.module-list{flex:none}
.module-copy b{font-size:12px}.module-copy em{font-size:9px}

/* 折叠态：保留品牌图标、菜单图标和展开按钮 */
.sidebar-collapsed .layout{grid-template-columns:68px minmax(930px,1fr) 318px!important}
.sidebar-collapsed .city-layout{grid-template-columns:68px minmax(930px,1fr) 318px!important}
.sidebar-collapsed .mes-layout{grid-template-columns:68px minmax(1080px,1fr)!important}
.sidebar-collapsed .module-sidebar{padding:10px 8px!important}
.sidebar-collapsed .sidebar-brand{flex-direction:column;gap:9px;padding-bottom:10px;margin-bottom:10px}
.sidebar-collapsed .sidebar-brand-main{justify-content:center}
.sidebar-collapsed .sidebar-brand-copy{display:none}
.sidebar-collapsed .side-head{display:none}
.sidebar-collapsed .module-list{gap:9px}
.sidebar-collapsed .module-item{
  display:grid!important;
  grid-template-columns:1fr!important;
  place-items:center;
  padding:10px 7px!important;
  min-height:48px;
  border-radius:12px;
}
.sidebar-collapsed .module-item:hover{transform:none}
.sidebar-collapsed .module-copy{display:none}
.sidebar-collapsed .module-icon{width:32px;height:32px;margin:0 auto}

/* 各模块顶部介绍统一参考飞机模块，避免标题过大抢占主场景 */
.city-command,
.mes-v3-command{padding:12px 16px!important;min-height:auto!important}
.city-command h1,
.mes-v3-command h1{
  font-size:19px!important;
  line-height:1.25!important;
  margin:4px 0 5px!important;
  letter-spacing:0!important;
}
.city-command p,
.mes-v3-command p{
  font-size:10px!important;
  line-height:1.55!important;
  max-width:820px!important;
}
.city-command .eyebrow,
.mes-v3-command .eyebrow{font-size:9px!important;letter-spacing:.12em!important}
.city-command-actions button,
.mes-v3-command-actions button{padding:8px 13px!important;min-width:82px!important;font-size:11px!important}

/* 顶部空间释放后，主场景获得更多高度 */
.scene-card{min-height:640px}
.city-workspace{min-height:0}
.mes-v3-shell{min-height:0}

@media(max-height:850px){
  .layout,.city-layout,.mes-layout{height:auto!important;min-height:100vh!important}
}

/* ===== v22：未来城市场景横排 + MES 3D 主场景强化 ===== */
/* 未来城市：将智能推演场景移动到标题下方，并改为横向布局 */
.city-main-column{grid-template-rows:auto auto minmax(0,1fr) 244px!important}
.city-scenario-horizontal{
  border-radius:16px!important;
  padding:10px 12px!important;
  display:block!important;
  overflow:visible!important;
}
.city-scenario-horizontal .city-section-title{
  margin-bottom:8px!important;
  justify-content:flex-start!important;
  gap:10px!important;
}
.city-scenario-horizontal-body{
  display:grid;
  grid-template-columns:minmax(0,1fr) 265px;
  gap:10px;
  align-items:stretch;
}
.city-scenario-horizontal .city-scenario-list{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px!important;
  overflow:visible!important;
}
.city-scenario-horizontal .city-scenario-item{
  min-width:0;
  padding:9px 10px!important;
  border-radius:10px!important;
  transform:none!important;
}
.city-scenario-horizontal .city-scenario-item span{font-size:8px!important}
.city-scenario-horizontal .city-scenario-item b{font-size:11px!important;margin:4px 0 3px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.city-scenario-horizontal .city-scenario-item p{font-size:8px!important;line-height:1.4!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.city-scenario-horizontal .city-live-summary{
  margin:0!important;
  padding:9px 11px!important;
  border-top:none!important;
  border-left:1px solid rgba(92,180,255,.14);
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:0;
}
.city-scenario-horizontal .city-live-summary span{font-size:8px!important}
.city-scenario-horizontal .city-live-summary b{font-size:10px!important;margin:4px 0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.city-scenario-horizontal .city-live-summary p{font-size:8px!important;line-height:1.4!important;margin:0!important}
.city-workspace{grid-template-columns:minmax(0,1fr)!important;min-height:0!important}

/* MES：删掉冗余标题区后，把更多空间还给 3D 主场景 */
.mes-v3-shell{grid-template-rows:minmax(0,1fr)!important}
.mes-v3-body{grid-template-columns:minmax(0,1fr) 238px!important;min-height:0!important;height:100%!important}
.mes-v3-stagepanel{
  padding:10px 10px 10px!important;
  display:grid!important;
  grid-template-rows:auto minmax(0,1fr)!important;
  gap:8px!important;
  min-height:0!important;
}
.mes-v3-stagebar{margin:0!important;gap:7px!important}
.mes-v3-stagebtn{padding:8px 9px!important}
.mes-v3-canvaswrap{
  min-height:660px!important;
  height:100%!important;
  border-radius:18px!important;
  box-shadow:inset 0 0 0 1px rgba(173,143,110,.06),0 18px 38px rgba(83,59,38,.08);
}
.mes-v3-rightpanel{padding:10px!important;grid-template-rows:auto minmax(0,1fr)!important;gap:9px!important}
.mes-v3-card{padding:10px!important;border-radius:14px!important}
.mes-v3-kpigrid{gap:7px!important}
.mes-v3-kpigrid>div{padding:8px!important}
.mes-v3-kpigrid b{font-size:21px!important}
.mes-v3-floatcard.top-left{
  max-width:215px!important;
  padding:8px 10px!important;
  background:rgba(255,255,255,.68)!important;
  backdrop-filter:blur(6px)!important;
}
.mes-v3-floatcard.top-left span{font-size:8px!important}
.mes-v3-floatcard.top-left b{font-size:12px!important}
.mes-v3-floatcard.top-left em{font-size:9px!important}
.mes-v3-bottomstrip{left:10px!important;right:10px!important;bottom:9px!important;gap:6px!important}
.mes-v3-bottomstrip>div{padding:7px 9px!important;background:rgba(255,255,255,.72)!important}
.mes-v3-bottomstrip span{font-size:8px!important}.mes-v3-bottomstrip b{font-size:17px!important}
.mes-engine-status{top:9px!important;right:9px!important}
@media(max-width:1500px){
  .city-scenario-horizontal-body{grid-template-columns:minmax(0,1fr) 230px}
  .city-scenario-horizontal .city-scenario-list{gap:6px!important}
  .mes-v3-body{grid-template-columns:minmax(0,1fr) 220px!important}
  .mes-v3-canvaswrap{min-height:610px!important}
}

/* ===== v23 requested refinements: smaller city globe + MES agent annotations ===== */
.mes-v3-canvaswrap .mes-agent-overlay{
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
}
.mes-v3-canvaswrap .mes-agent-lines{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
}
.mes-v3-canvaswrap .mes-agent-lines line{
  stroke:#c77a35;
  stroke-width:1.4;
  stroke-dasharray:7 5;
  opacity:.8;
  vector-effect:non-scaling-stroke;
}
.mes-v3-canvaswrap .mes-agent-lines circle{
  fill:#fff7ec;
  stroke:#c77a35;
  stroke-width:1.5;
  filter:drop-shadow(0 0 5px rgba(199,122,53,.5));
}
.mes-v3-canvaswrap .mes-agent-lines text{
  fill:#8a5526;
  font-size:10px;
  font-weight:700;
  letter-spacing:.02em;
  paint-order:stroke;
  stroke:rgba(250,244,235,.96);
  stroke-width:4px;
  stroke-linejoin:round;
}
.mes-v3-canvaswrap .mes-agent-callout{
  position:absolute;
  width:178px;
  padding:9px 11px;
  border-radius:12px;
  background:rgba(255,252,247,.86);
  border:1px solid rgba(190,132,74,.28);
  box-shadow:0 8px 22px rgba(84,58,36,.09);
  backdrop-filter:blur(7px);
  pointer-events:none;
}
.mes-v3-canvaswrap .mes-agent-callout span{
  display:inline-flex;
  padding:4px 8px;
  border-radius:999px;
  background:#3a2b1f;
  color:#fff;
  font-size:9px;
  font-weight:700;
}
.mes-v3-canvaswrap .mes-agent-callout b{
  display:block;
  margin-top:6px;
  font-size:12px;
  line-height:1.35;
  color:#382b20;
}
.mes-v3-canvaswrap .mes-agent-callout p{
  margin:4px 0 0;
  font-size:9px;
  line-height:1.45;
  color:#725e4b;
}
.mes-v3-canvaswrap .mes-agent-callout.left.a1{left:14px;top:118px}
.mes-v3-canvaswrap .mes-agent-callout.left.a2{left:18px;top:286px}
.mes-v3-canvaswrap .mes-agent-callout.right.a3{right:14px;top:128px}
.mes-v3-canvaswrap .mes-agent-callout.right.a4{right:18px;top:304px}

/* KPI strip moves slightly lower, keeping 3D as the visual center */
.mes-v3-bottomstrip{bottom:2px!important}

@media(max-width:1500px){
  .mes-v3-canvaswrap .mes-agent-callout{width:156px;padding:8px 9px}
  .mes-v3-canvaswrap .mes-agent-callout b{font-size:11px}
  .mes-v3-canvaswrap .mes-agent-callout p{font-size:8px}
  .mes-v3-canvaswrap .mes-agent-lines text{font-size:9px}
}


/* ===== v24 future city refinements ===== */
.city-globe-card{min-height:500px!important}
.city-agent-overlay{position:absolute;inset:0;z-index:4;pointer-events:none}
.city-agent-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.city-agent-lines line{stroke:#58d8ff;stroke-width:1.5;stroke-dasharray:8 6;opacity:.84;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 6px rgba(88,216,255,.34))}
.city-agent-lines circle{fill:#071521;stroke:#74e4ff;stroke-width:1.4;filter:drop-shadow(0 0 6px rgba(88,216,255,.38))}
.city-agent-lines text{fill:#7ee9ff;font-size:10px;font-weight:700;letter-spacing:.02em;paint-order:stroke;stroke:rgba(2,10,17,.95);stroke-width:4px;stroke-linejoin:round}
.city-agent-callout{position:absolute;width:210px;padding:10px 12px;border-radius:14px;background:rgba(4,17,29,.72);border:1px solid rgba(83,191,255,.22);box-shadow:0 8px 26px rgba(0,0,0,.2);backdrop-filter:blur(10px)}
.city-agent-callout span{display:inline-flex;padding:4px 9px;border-radius:999px;background:linear-gradient(90deg,#3ed4ff,#76e9ff);color:#04111b;font-size:9px;font-weight:900}
.city-agent-callout b{display:block;font-size:13px;line-height:1.35;margin:7px 0 4px;color:#f0fbff}
.city-agent-callout p{margin:0;font-size:9px;line-height:1.55;color:#b8d5e5}
.city-agent-callout.left.c1{left:18px;top:114px}
.city-agent-callout.left.c2{left:22px;bottom:124px}
.city-agent-callout.right.c3{right:18px;top:128px;text-align:right}.city-agent-callout.right.c3 p{margin-left:auto}
.city-agent-callout.right.c4{right:20px;bottom:126px;text-align:right}.city-agent-callout.right.c4 p{margin-left:auto}
.city-orbit-legend{bottom:84px!important}
.city-kpis{bottom:14px!important}
@media(max-width:1500px){
  .city-agent-callout{width:184px;padding:9px 10px}
  .city-agent-callout b{font-size:12px}
  .city-agent-callout p{font-size:8px}
  .city-agent-lines text{font-size:9px}
}


/* ===== v25 future city layout compact merge ===== */
.city-main-column{grid-template-rows:auto minmax(0,1fr) 228px!important;gap:10px!important}
.city-hero-panel{padding:12px 14px;border-radius:16px;display:grid;gap:10px;overflow:hidden;background:linear-gradient(180deg,rgba(8,21,36,.9),rgba(5,15,27,.82));border:1px solid rgba(72,157,214,.16)}
.city-command-merged{padding:0!important;background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}
.city-command-merged .eyebrow{margin-bottom:2px}
.city-command-merged h1{font-size:22px!important;margin:6px 0 6px!important}
.city-command-merged p{font-size:11px!important;line-height:1.62!important;max-width:900px!important;color:#90b0c5!important}
.city-scenario-merged{padding:0!important;background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}
.city-scenario-merged .city-section-title{margin-bottom:8px!important}
.city-scenario-merged .city-scenario-horizontal-body{grid-template-columns:minmax(0,1fr) 248px!important;gap:10px!important}
.city-scenario-merged .city-scenario-list{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:8px!important}
.city-scenario-merged .city-scenario-item{padding:10px 10px!important;border-radius:11px!important;background:rgba(7,23,39,.62)!important;border:1px solid rgba(76,157,215,.14)!important}
.city-scenario-merged .city-scenario-item.active{background:linear-gradient(90deg,#0c5e8a55,#07304c33)!important}
.city-scenario-merged .city-live-summary{padding:10px 12px!important;border-left:1px solid rgba(92,180,255,.14)!important;background:rgba(6,20,34,.42);border-radius:12px}
.city-workspace{min-height:0!important}
.city-globe-card{min-height:430px!important;height:100%!important}
.city-scene-title{top:14px!important;width:min(620px,68%)!important}
.city-scene-title h2{font-size:26px!important;margin:8px 0 7px!important}
.city-scene-title p{font-size:10px!important;line-height:1.55!important}
.city-agent-callout{width:188px!important;padding:9px 10px!important}
.city-agent-callout b{font-size:12px!important}.city-agent-callout p{font-size:8px!important;line-height:1.5!important}
.city-agent-callout.left.c1{left:14px!important;top:104px!important}
.city-agent-callout.left.c2{left:18px!important;bottom:110px!important}
.city-agent-callout.right.c3{right:14px!important;top:116px!important}
.city-agent-callout.right.c4{right:16px!important;bottom:112px!important}
.city-orbit-legend{bottom:72px!important}
.city-kpis{bottom:10px!important;width:calc(100% - 28px)!important;gap:7px!important}
.city-kpis>div{padding:8px 10px!important}
.city-kpis b{font-size:18px!important}
@media(max-height:900px){.city-globe-card{min-height:406px!important}.city-main-column{grid-template-rows:auto minmax(0,1fr) 214px!important}}


/* ===== v26 future city compact simplification ===== */
.city-main-column{grid-template-rows:auto minmax(0,1fr) 212px!important;gap:8px!important}
.city-hero-panel{padding:10px 12px!important;gap:8px!important;border-radius:14px!important}
.city-command-merged{display:flex!important;justify-content:space-between!important;align-items:flex-start!important;gap:12px!important}
.city-command-merged .eyebrow{font-size:10px!important;line-height:1.2!important;margin-bottom:0!important}
.city-command-merged h1{font-size:20px!important;line-height:1.2!important;margin:4px 0 4px!important}
.city-command-merged p{font-size:10px!important;line-height:1.45!important;max-width:780px!important;display:-webkit-box!important;-webkit-line-clamp:1!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.city-command-actions{gap:8px!important}.city-command-actions button{padding:8px 12px!important;border-radius:10px!important;font-size:12px!important}
.city-scenario-merged .city-section-title{display:flex!important;align-items:center!important;gap:10px!important;margin-bottom:6px!important}.city-scenario-merged .city-section-title span{margin:0!important}.city-scenario-merged .city-section-title b{font-size:15px!important}
.city-scenario-merged .city-scenario-horizontal-body{grid-template-columns:minmax(0,1fr) 228px!important;gap:8px!important;align-items:stretch!important}
.city-scenario-merged .city-scenario-list{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:7px!important}
.city-scenario-merged .city-scenario-item{display:flex!important;flex-direction:column!important;justify-content:center!important;min-height:58px!important;padding:8px 10px!important;border-radius:10px!important}
.city-scenario-merged .city-scenario-item span{margin-bottom:3px!important;font-size:10px!important}
.city-scenario-merged .city-scenario-item b{font-size:12px!important;line-height:1.28!important}
.city-scenario-merged .city-scenario-item p{display:none!important}
.city-scenario-merged .city-live-summary{padding:8px 10px!important;border-left:1px solid rgba(92,180,255,.12)!important;background:rgba(6,20,34,.34)!important}
.city-scenario-merged .city-live-summary span{font-size:10px!important}.city-scenario-merged .city-live-summary b{font-size:12px!important;line-height:1.35!important;margin-top:4px!important}.city-scenario-merged .city-live-summary p{font-size:9px!important;line-height:1.45!important;margin-top:4px!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.city-globe-card{min-height:446px!important}
.city-scene-title{top:10px!important;left:12px!important;width:min(350px,46%)!important;padding:10px 12px!important;border-radius:12px!important;background:rgba(4,16,28,.52)!important;border:1px solid rgba(86,186,255,.14)!important;backdrop-filter:blur(6px)}
.city-scene-title span{font-size:10px!important;padding:4px 8px!important}
.city-scene-title h2{font-size:18px!important;line-height:1.22!important;margin:7px 0 5px!important}
.city-scene-title p{font-size:9px!important;line-height:1.45!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important;max-width:100%!important}
.city-agent-callout{width:180px!important}.city-agent-lines text{font-size:9px!important}
.city-bottom-grid{grid-template-columns:1fr 1fr!important;gap:10px!important}
@media(max-height:900px){.city-main-column{grid-template-rows:auto minmax(0,1fr) 198px!important}.city-globe-card{min-height:420px!important}}


/* ===== v27 future city: scenario-only header + compact globe stage ===== */
.city-main-column{grid-template-rows:auto 372px minmax(170px,1fr)!important;gap:8px!important}
.city-scenario-only{padding:9px 11px!important;border-radius:14px!important;display:block!important;overflow:hidden!important}
.city-scenario-only .city-scenario-panel{padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important}
.city-scenario-only .city-section-title{margin-bottom:7px!important}
.city-scenario-only .city-scenario-list{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:7px!important;overflow:visible!important}
.city-scenario-only .city-scenario-item{min-height:50px!important;padding:7px 9px!important;border-radius:10px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;background:rgba(6,20,34,.56)!important;border:1px solid rgba(76,157,215,.14)!important}
.city-scenario-only .city-scenario-item span{font-size:9px!important;margin-bottom:2px!important}
.city-scenario-only .city-scenario-item b{font-size:11px!important;line-height:1.25!important;margin:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.city-scenario-only .city-scenario-item p{display:none!important}
.city-scenario-only .city-scenario-item.active{background:linear-gradient(90deg,#0c5e8a55,#07304c33)!important;border-color:#37d7ff88!important;box-shadow:inset 3px 0 #34dcff!important}
.city-hidden-controls{display:none!important}
.city-workspace{display:flex!important;justify-content:center!important;align-items:flex-start!important;min-height:0!important;overflow:visible!important}
.city-globe-card{width:min(100%,760px)!important;height:364px!important;min-height:364px!important;max-height:364px!important;flex:none!important;border-radius:16px!important}
.city-engine-badge{right:10px!important;top:9px!important;padding:5px 8px!important;font-size:7px!important}
.city-scene-title{left:10px!important;top:9px!important;transform:none!important;width:248px!important;padding:8px 9px!important;border-radius:10px!important}
.city-scene-title span{font-size:8px!important;padding:3px 7px!important}
.city-scene-title h2{font-size:15px!important;margin:5px 0 3px!important;line-height:1.2!important}
.city-scene-title p{font-size:8px!important;line-height:1.38!important;-webkit-line-clamp:2!important}
.city-agent-callout{width:146px!important;padding:7px 8px!important;border-radius:10px!important}
.city-agent-callout span{font-size:7px!important;padding:3px 6px!important}
.city-agent-callout b{font-size:9px!important;line-height:1.3!important;margin:4px 0 2px!important}
.city-agent-callout p{font-size:7px!important;line-height:1.38!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.city-agent-callout.left.c1{left:10px!important;top:88px!important}
.city-agent-callout.left.c2{left:12px!important;bottom:76px!important}
.city-agent-callout.right.c3{right:10px!important;top:88px!important}
.city-agent-callout.right.c4{right:12px!important;bottom:76px!important}
.city-agent-lines text{font-size:7px!important;stroke-width:3px!important}
.city-agent-lines line{stroke-width:1.2!important;stroke-dasharray:6 5!important}
.city-agent-lines circle{stroke-width:1.2!important}
.city-orbit-legend{bottom:55px!important;padding:5px 8px!important;gap:10px!important;font-size:7px!important}
.city-kpis{left:10px!important;right:10px!important;bottom:8px!important;transform:none!important;width:auto!important;gap:6px!important}
.city-kpis>div{padding:6px 8px!important;border-radius:8px!important}
.city-kpis span{font-size:6px!important}.city-kpis b{font-size:14px!important;margin-top:2px!important}
.city-bottom-grid{min-height:0!important;height:100%!important;grid-template-columns:1fr 1fr!important;gap:8px!important}
.city-flow-panel,.city-trend-panel{padding:10px!important;border-radius:14px!important}
.city-flow-steps{gap:5px!important}.city-flow-step{min-height:118px!important;padding:8px 7px!important}.city-flow-step b{font-size:9px!important}.city-flow-step p{font-size:7px!important;line-height:1.4!important}
.city-trend-chart{height:128px!important}
@media(max-height:850px){
  .city-main-column{grid-template-rows:auto 344px minmax(154px,1fr)!important}
  .city-globe-card{height:336px!important;min-height:336px!important;max-height:336px!important}
  .city-agent-callout.left.c2,.city-agent-callout.right.c4{bottom:70px!important}
}


/* ===== v28 future city fixed stage size: 1332 × 727 ===== */
.city-main-column{grid-template-rows:auto 727px minmax(170px,1fr)!important;gap:10px!important}
.city-workspace{display:flex!important;justify-content:center!important;align-items:flex-start!important;min-height:0!important;overflow:visible!important}
.city-globe-card{
  width:min(1332px,100%)!important;
  height:727px!important;
  min-height:727px!important;
  max-height:727px!important;
  flex:none!important;
  border-radius:18px!important;
}
.city-scene-title{left:18px!important;top:16px!important;width:300px!important;padding:10px 12px!important}
.city-agent-callout{width:180px!important;padding:9px 10px!important}
.city-agent-callout.left.c1{left:18px!important;top:150px!important}
.city-agent-callout.left.c2{left:20px!important;bottom:150px!important}
.city-agent-callout.right.c3{right:18px!important;top:154px!important}
.city-agent-callout.right.c4{right:20px!important;bottom:150px!important}
.city-agent-lines text{font-size:9px!important}
.city-orbit-legend{bottom:82px!important}
.city-kpis{left:18px!important;right:18px!important;bottom:14px!important;gap:8px!important}
.city-kpis>div{padding:8px 10px!important}.city-kpis b{font-size:18px!important}
@media(max-width:1700px){
  .city-globe-card{width:100%!important}
}


/* ===== v29 city: globe -10% + clearer Agent annotations ===== */
.city-agent-callout{
  width:218px!important;
  padding:12px 14px!important;
  border-radius:14px!important;
  background:linear-gradient(180deg,rgba(7,25,42,.94),rgba(4,16,29,.92))!important;
  border:1px solid rgba(91,211,255,.46)!important;
  box-shadow:0 12px 30px rgba(0,0,0,.34),inset 0 0 18px rgba(55,179,232,.06)!important;
  backdrop-filter:blur(12px)!important;
  text-align:left!important;
}
.city-agent-callout span{
  display:inline-flex!important;
  padding:5px 9px!important;
  border-radius:999px!important;
  background:linear-gradient(90deg,#41d8ff,#86f1ff)!important;
  color:#03111b!important;
  font-size:10px!important;
  line-height:1!important;
  font-weight:900!important;
  letter-spacing:.03em!important;
}
.city-agent-callout b{
  display:block!important;
  margin:8px 0 5px!important;
  font-size:14px!important;
  line-height:1.38!important;
  color:#ffffff!important;
  font-weight:800!important;
  letter-spacing:.01em!important;
  text-shadow:0 1px 8px rgba(0,0,0,.7)!important;
}
.city-agent-callout p{
  display:block!important;
  margin:0!important;
  font-size:10px!important;
  line-height:1.58!important;
  color:#c8e4f2!important;
  opacity:1!important;
  -webkit-line-clamp:unset!important;
  overflow:visible!important;
}
.city-agent-callout.right.c3,.city-agent-callout.right.c4{
  text-align:left!important;
}
.city-agent-callout.right.c3 p,.city-agent-callout.right.c4 p{margin-left:0!important}
.city-agent-callout.left.c1{left:22px!important;top:146px!important}
.city-agent-callout.left.c2{left:24px!important;bottom:142px!important}
.city-agent-callout.right.c3{right:22px!important;top:150px!important}
.city-agent-callout.right.c4{right:24px!important;bottom:142px!important}
.city-agent-lines line{
  stroke:#5de0ff!important;
  stroke-width:1.8!important;
  stroke-dasharray:9 6!important;
  opacity:.96!important;
  filter:drop-shadow(0 0 5px rgba(93,224,255,.55))!important;
}
.city-agent-lines circle{
  r:5.5;
  fill:#071521!important;
  stroke:#8af0ff!important;
  stroke-width:2!important;
  filter:drop-shadow(0 0 7px rgba(93,224,255,.72))!important;
}
.city-agent-lines text{
  fill:#d9f8ff!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.02em!important;
  paint-order:stroke!important;
  stroke:rgba(1,9,17,.98)!important;
  stroke-width:5.5px!important;
  stroke-linejoin:round!important;
}
@media(max-width:1500px){
  .city-agent-callout{width:198px!important;padding:11px 12px!important}
  .city-agent-callout b{font-size:13px!important}
  .city-agent-callout p{font-size:9.5px!important}
  .city-agent-lines text{font-size:10px!important}
}


/* ===== v30 future city agent clarity ===== */
#page-city .city-kpis{display:none!important}
#page-city .city-orbit-legend{bottom:20px!important}
#page-city .city-section-title span{font-size:11px!important;letter-spacing:.12em!important}
#page-city .city-section-title b{font-size:18px!important}
#page-city .city-scenario-item{min-height:66px!important;padding:10px 12px!important}
#page-city .city-scenario-item span{font-size:11px!important}
#page-city .city-scenario-item b{font-size:14px!important;line-height:1.3!important}
#page-city .city-scene-title{width:min(390px,48%)!important;padding:12px 14px!important}
#page-city .city-scene-title span{font-size:11px!important}
#page-city .city-scene-title h2{font-size:22px!important;line-height:1.22!important}
#page-city .city-scene-title p{font-size:11px!important;line-height:1.52!important;-webkit-line-clamp:2!important}
#page-city .city-agent-lines line{stroke-width:2!important;stroke-dasharray:10 7!important;opacity:.92!important}
#page-city .city-agent-lines circle{r:5.5}
#page-city .city-agent-lines text{font-size:12px!important;font-weight:800!important;fill:#9af6ff!important;stroke-width:5px!important}
#page-city .city-agent-callout{width:228px!important;padding:0!important;background:transparent!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important}
#page-city .city-agent-callout span{display:inline-flex!important;align-self:flex-start!important;padding:7px 16px!important;border-radius:999px!important;color:#051019!important;font-size:13px!important;font-weight:900!important;letter-spacing:0!important;box-shadow:0 8px 24px rgba(63,209,255,.22)!important}
#page-city .city-agent-callout b{display:block!important;margin:10px 0 8px!important;font-size:28px!important;line-height:1.08!important;color:#f7fcff!important;text-shadow:0 2px 10px rgba(0,0,0,.42)!important}
#page-city .city-agent-callout p{display:block!important;margin:0!important;font-size:14px!important;line-height:1.45!important;color:#d7ebf6!important;text-shadow:0 2px 8px rgba(0,0,0,.35)!important}
#page-city .city-agent-callout.left.c1{left:26px!important;top:112px!important}
#page-city .city-agent-callout.left.c2{left:34px!important;bottom:128px!important}
#page-city .city-agent-callout.right.c3{right:26px!important;top:118px!important;text-align:right!important}
#page-city .city-agent-callout.right.c4{right:34px!important;bottom:130px!important;text-align:right!important}
#page-city .city-agent-callout.right span{align-self:flex-end!important}
#page-city .city-agent-callout.right p{margin-left:auto!important}
#page-city .city-agent-callout.c1 span{background:linear-gradient(135deg,#56ddff,#6bf2ff)!important}
#page-city .city-agent-callout.c2 span{background:linear-gradient(135deg,#5fd2ff,#63e0ff)!important}
#page-city .city-agent-callout.c3 span{background:linear-gradient(135deg,#62f1cf,#7bf6d6)!important}
#page-city .city-agent-callout.c4 span{background:linear-gradient(135deg,#9c89ff,#ccb8ff)!important}
#page-city .city-bottom-grid{grid-template-columns:1.05fr .95fr!important;gap:12px!important}
#page-city .city-flow-step{min-height:134px!important;padding:10px 10px!important}
#page-city .city-flow-step span{font-size:10px!important}
#page-city .city-flow-step b{font-size:13px!important;line-height:1.35!important;margin:8px 0 6px!important}
#page-city .city-flow-step p{font-size:10px!important;line-height:1.45!important}
#page-city .city-object-hero b{font-size:15px!important}
#page-city .city-object-hero span{font-size:11px!important}
#page-city .city-object-meta span{font-size:10px!important}
#page-city .city-object-meta b{font-size:14px!important}
#page-city .city-object-card>p,#page-city .city-decision-card>p{font-size:11px!important;line-height:1.6!important}
#page-city .city-decision-tag{font-size:10px!important;padding:5px 9px!important;border-radius:7px!important}
#page-city .city-decision-card h3{font-size:18px!important;margin:10px 0 8px!important}
#page-city .city-decision-row span{font-size:11px!important}
#page-city .city-decision-row b{font-size:14px!important}
#page-city .city-trace-list>div{grid-template-columns:62px 8px 86px 1fr!important;gap:8px!important;padding:8px 4px!important}
#page-city .city-trace-list time{font-size:10px!important}
#page-city .city-trace-list b{font-size:11px!important}
#page-city .city-trace-list span{font-size:10px!important;line-height:1.45!important}


/* ===== v30.2 future city agent title simplification ===== */
#page-city .city-agent-callout b{display:none!important}
#page-city .city-agent-callout p{margin-top:10px!important}
