@font-face{font-family:HarmonyOS Sans SC;src:url(/assets/HARMONYOS_SANS_SC_REGULAR-DxfxEhUl.TTF)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:HarmonyOS Sans SC;src:url(/assets/HARMONYOS_SANS_SC_MEDIUM-DdiiD5b4.TTF)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:HarmonyOS Sans SC;src:url(/assets/HARMONYOS_SANS_SC_BOLD-Dw5cT-k3.TTF)format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#f3f5f8;--bg-elev:#fff;--bg-card:#fff;--bg-sider:#fff;--bg-sider-hover:#1677ff17;--bg-topbar:#fff;--border-soft:#edf1f8;--text:#1f2937;--text-dim:#667085;--text-mute:#98a2b3;--text-on-dark:#ffffffd9;--text-on-dark-mute:#ffffff73;--accent:#1677ff;--accent-soft:#1677ff17;--brand-primary:#1677ff;--success:#389e0d;--warning:#d48806;--danger:#cf1322;--border:#e2e7ef;--radius:8px;--radius-lg:12px;--font:"HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-cn:"HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-en:"Montserrat", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--shadow:0 1px 2px #00000008, 0 4px 12px #0015290a;--shadow-card:0 1px 2px #00000008, 0 6px 16px #0015290f;--sider-width:220px;--sider-collapsed:56px;color:var(--text);background:var(--bg);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}button,input,select,textarea{font:inherit}.num{font-family:var(--font-cn);font-variant-numeric:tabular-nums}.font-en{font-family:var(--font-en)}.gate{min-height:100dvh;color:var(--text);--font-en:"Montserrat", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--gate-content-max:1360px;--gate-content-pad-x:clamp(32px, 5vw, 72px);background:#e8ecf2;flex-direction:column;display:flex;position:relative;overflow:hidden auto}.gate-page{z-index:3;width:100%;max-width:min(var(--gate-content-max), 94vw);padding:clamp(96px, 16vh, 168px) var(--gate-content-pad-x) clamp(28px, 4vh, 48px);box-sizing:border-box;flex-direction:column;flex:1;margin:0 auto;display:flex;position:relative}.gate-bg{object-fit:cover;object-position:center 52%;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;width:100%;height:100%;animation:28s ease-in-out infinite alternate gate-bg-drift;position:absolute;inset:0}@keyframes gate-bg-drift{0%{transform:scale(1)}to{transform:scale(1.045)}}@keyframes gate-fade-up{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes gate-swap-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes gate-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}.gate--motion .gate-brand-corner{animation:.72s cubic-bezier(.22,1,.36,1) both gate-fade-up}.gate--motion .gate-hero{animation:.78s cubic-bezier(.22,1,.36,1) 80ms both gate-fade-up}.gate--motion .gate-login-stack{animation:.82s cubic-bezier(.22,1,.36,1) .16s both gate-fade-up}.gate--motion .gate-foot-panel{animation:.86s cubic-bezier(.22,1,.36,1) .22s both gate-fade-up}.gate-swap-in{animation:.4s cubic-bezier(.22,1,.36,1) both gate-swap-in}.gate-3d-layer{display:none}.gate-login-stack{isolation:isolate;align-self:stretch;min-height:100%;position:relative}.gate-login-stack:before{content:"";z-index:0;-webkit-backdrop-filter:blur(40px)saturate(1.08);pointer-events:none;background:#ffffff94;border-radius:24px;position:absolute;inset:-20px -16px;box-shadow:0 16px 48px #0f1b2d0f}.gate-login-stack .gate-card--glass{z-index:1;min-height:100%;transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;position:relative}.gate--motion .gate-login-stack .gate-card--glass:hover{transform:translateY(-4px);box-shadow:0 28px 56px #0f1b2d1f,0 0 0 1px #1677ff14}.gate-scrim{z-index:2;pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff14 48%,#ffffff6b 72%,#ffffffad 100%),linear-gradient(118deg,#ffffffe6 0%,#ffffffb8 36%,#f8fafc52 52%,#ffffff0f 70%,#0000 86%),linear-gradient(#0000 0%,#ffffff0f 88%,#ffffff2e 100%);position:absolute;inset:0}.gate-grid{background-image:linear-gradient(#1677ff0f 1px,#0000 1px),linear-gradient(90deg,#1677ff0f 1px,#0000 1px);background-size:52px 52px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(at 30% 40%,#000,#0000 70%);mask-image:radial-gradient(at 30% 40%,#000,#0000 70%)}.gate-glow{pointer-events:none;background:radial-gradient(at 20% 30%,#1677ff29,#0000 55%);position:absolute;inset:0}.gate-main{grid-template-columns:1.15fr .85fr;align-items:start;gap:40px;width:100%;min-height:0;margin:0;padding:0;display:grid;position:relative}.gate-main--portal{grid-template-columns:minmax(0,1.38fr) minmax(340px,.62fr);align-items:stretch;gap:clamp(48px,5vw,72px)}.gate-foot{z-index:3;flex-shrink:0;width:100%;margin-top:auto;padding-top:clamp(20px,3vh,36px);position:relative}.gate-foot-panel{-webkit-backdrop-filter:blur(32px)saturate(1.12);background:#ffffff42;border:none;border-top:1px solid #ffffff8c;border-radius:0;width:100%;padding:0;box-shadow:0 -8px 32px #0f1b2d0a}.gate-foot-inner{max-width:min(var(--gate-content-max), 94vw);padding:28px var(--gate-content-pad-x) calc(22px + env(safe-area-inset-bottom,0px));box-sizing:border-box;margin:0 auto}.gate-foot-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:20px clamp(24px,4vw,48px);display:grid}.gate-foot-lead{text-align:left;place-self:end start}.gate-foot-trail{text-align:right;flex-direction:column;place-self:end;align-items:flex-end;gap:10px;display:flex}.gate-foot-accent{font-family:var(--font-en);letter-spacing:.12em;color:#475569;text-align:left;text-transform:uppercase;margin:0;font-size:clamp(15px,1.75vw,20px);font-weight:500}.gate-foot-accent-cn{color:var(--text-mute);letter-spacing:.04em;text-align:left;margin:10px 0 0;font-size:12px;line-height:1.5}.gate-foot-spec{color:#64748b;letter-spacing:.03em;text-align:right;border-top:none;margin:0;padding-top:0;font-size:12px;line-height:1.6}.gate-foot-spec-sep{opacity:.35;margin:0 .65em;font-weight:400}.gate-foot-panel .gate-meta{color:#94a3b8;text-align:right;margin:0;font-size:11px}.gate-notes{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.gate-notes li{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffb8;border:1px solid #0f1b2d12;border-radius:14px;padding:16px 18px;box-shadow:0 10px 28px #0f1b2d0d}.gate-notes strong{color:#0f1b2d;margin-bottom:6px;font-size:14px;display:block}.gate-notes p{color:var(--text-dim);margin:0;font-size:13px;line-height:1.55}.gate-notes .gate-en-inline{font-family:var(--font-en);letter-spacing:.02em;font-size:.92em;font-weight:600}.gate-meta{text-align:center;color:var(--text-mute);margin:20px 0 0;font-size:12px}.gate-meta-dot{opacity:.5;margin:0 8px}.gate-hero{flex-direction:column;align-self:stretch;min-width:0;display:flex;overflow:visible}.gate-hero-panel{min-height:0;box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:none;flex-direction:column;flex:1;padding:0;display:flex;position:relative;overflow:visible}.gate-hero-eyebrow{display:none}.gate-hero-stage{z-index:1;flex:1;grid-template-columns:minmax(0,1fr) minmax(160px,36%);align-items:center;gap:clamp(8px,2vw,20px);margin-top:clamp(28px,4vh,40px);display:grid;position:relative}.gate-hero-stage-main{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.gate-hero-action{flex-direction:column;gap:18px;width:100%;max-width:22rem;display:flex}.gate-hero-entry{flex-direction:column;align-items:stretch;gap:0;width:100%;display:flex}.gate-hero-stage .gate-segment--switch{margin-top:0}.gate-segment--hero.gate-segment--switch{-webkit-backdrop-filter:blur(12px);background:#ffffff9e;border:1px solid #ffffffc7;gap:6px;width:100%;max-width:300px;padding:5px;display:flex;box-shadow:0 10px 32px #0f1b2d12}.gate-segment--hero button{letter-spacing:.08em;flex:1 1 0;min-width:0;padding:13px 20px;font-size:17px}.gate-segment--hero.gate-segment--switch:after{width:calc(50% - 8px);top:5px;bottom:5px;left:5px}.gate-segment--hero.gate-segment--switch[data-active=infrastructure]:after{transform:translate(calc(100% + 6px))}.gate-hero-stage-copy{box-sizing:border-box;border:none;flex-direction:column;gap:5px;width:100%;margin:0;padding:0 0 0 14px;display:flex}.gate-hero-slogan{letter-spacing:.08em;color:#0f1b2d;margin:0;padding:0;font-size:clamp(14px,1.6vw,16px);font-weight:600;line-height:1.55}.gate-hero-capline{letter-spacing:.05em;color:#64748b;margin:0;font-size:12px;font-weight:400;line-height:1.65}.gate-title-row{z-index:1;display:block;position:relative;overflow:visible}.gate-title-copy{min-width:0}.gate--motion .gate-hero-panel:hover .gate-hero-3d{opacity:1;transition:opacity .35s}.gate-hero-stage .gate-hero-3d{pointer-events:none;opacity:.92;flex:none;place-self:center end;width:100%;max-width:none;height:clamp(152px,18vw,220px);margin:0;transition:opacity .35s;position:relative;overflow:visible}.gate-hero-3d-inner{width:132%;height:132%;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.gate-hero-3d-inner canvas{display:block;width:100%!important;height:100%!important}.gate-title{color:#0f1b2d;flex-direction:column;align-items:flex-start;gap:12px;margin:0;display:flex}.gate-title-en{font-family:var(--font-en);letter-spacing:-.04em;flex-direction:column;align-items:flex-start;gap:0;font-size:clamp(44px,5.8vw,80px);line-height:.92;display:flex}.gate-title-en-line{line-height:.9;display:block}.gate-title-en .gate-en-heavy{letter-spacing:-.045em;font-weight:700}.gate-title-en .gate-en-light{letter-spacing:-.02em;color:#334155;margin-top:-.06em;font-weight:600}.gate-title-cn-block{font-family:"HarmonyOS Sans SC", var(--font-cn);flex-flow:wrap;align-items:baseline;gap:0 8px;margin-top:2px;display:flex}.gate-title-cn-sep{color:#94a3b8;-webkit-user-select:none;user-select:none;font-size:14px;font-weight:400;line-height:1}.gate-title-cn-main{letter-spacing:.2em;color:#0f1b2d;white-space:nowrap;font-size:clamp(22px,2.8vw,32px);font-weight:600;line-height:1.2}.gate-title-cn-sub{letter-spacing:.04em;color:var(--text-mute);white-space:nowrap;font-size:12px;font-weight:400;line-height:1.5}.gate-title-cn{font-family:var(--font-cn);letter-spacing:.16em;color:#475569;text-transform:none;font-size:clamp(20px,2.4vw,28px);font-weight:600}.gate-title-sep{display:none}.gate-en-heavy{font-family:var(--font-en);font-weight:700}.gate-en-light{font-family:var(--font-en);font-weight:400}.gate-brand-en{font-family:var(--font-en);letter-spacing:-.02em;font-size:18px;line-height:1.25;display:block}.gate-brand-en .gate-en-heavy{color:#0f1b2d;font-weight:700}.gate-brand-en .gate-en-light{color:#64748b;font-weight:500}.gate-meta-ver{letter-spacing:.04em;font-variant-numeric:tabular-nums;font-weight:600}.gate-lead{color:var(--text-dim);max-width:34em;margin:12px 0 0;font-size:15px;line-height:1.65}.gate-3d-ribbon{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.gate-3d-pill{letter-spacing:.06em;text-transform:uppercase;color:#0958d9;background:#1677ff1a;border:1px solid #1677ff38;border-radius:999px;padding:5px 11px;font-size:11px;font-weight:650}.gate-agent--3d{background:linear-gradient(90deg,#1677ff14,#ffffff73);border-left-color:#1677ff;align-items:flex-start;gap:10px;display:flex}.gate-agent-badge{color:#fff;background:linear-gradient(155deg,#4d9dff,#0958d9);border-radius:6px;flex-shrink:0;padding:4px 8px;font-size:11px;font-weight:700;box-shadow:0 4px 12px #1677ff59}.gate-segment{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffb8;border:1px solid #0f1b2d14;border-radius:14px;margin-top:28px;padding:4px;display:inline-flex;box-shadow:0 8px 32px #0f1b2d0f}.gate-segment--switch{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);isolation:isolate;background:#ffffff6b;border:1px solid #0f1b2d1f;border-radius:22px;gap:8px;margin-top:36px;padding:7px;position:relative;box-shadow:inset 0 1px #ffffffa6,0 16px 48px #0f1b2d1a}.gate-segment--switch:after{content:"";z-index:0;will-change:transform;background:linear-gradient(155deg,#4d9dff 0%,#1677ff 52%,#0958d9 100%);border-radius:16px;width:calc(50% - 11px);transition:transform .42s cubic-bezier(.34,1.25,.64,1);position:absolute;top:7px;bottom:7px;left:7px;box-shadow:0 10px 28px #1677ff61,inset 0 1px #ffffff47}.gate-segment--switch[data-active=infrastructure]:after{transform:translate(calc(100% + 8px))}.gate-segment button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:10px 28px;font-size:15px;font-weight:600;transition:background .22s,color .22s,box-shadow .22s,transform .18s}.gate-segment--switch button{min-width:148px;font-size:19px;font-weight:650;font-family:var(--font-cn);letter-spacing:.06em;color:#3d4f66;z-index:1;border-radius:16px;padding:17px 44px;position:relative}.gate-segment--switch button:hover:not(.is-active){color:#1a2f4d;background:#ffffff59}.gate-segment button.is-active{color:#0958d9;background:linear-gradient(#fff,#f3f7ff);box-shadow:0 4px 14px #1677ff2e}.gate-segment--switch button.is-active{color:#fff;box-shadow:none;background:0 0;transform:none}.gate-segment--switch button:active:not(.is-active){transform:scale(.97)}.gate-tags{flex-wrap:wrap;gap:8px;max-width:36em;margin-top:18px;display:flex}.gate-tags span{color:#1f3a5f;background:#ffffffd9;border:1px solid #1677ff24;border-radius:999px;padding:6px 12px;font-size:13px;box-shadow:0 2px 8px #0f1b2d0a}.gate-tags span:not(:last-child):after{content:none}.gate-agent{max-width:36em;color:var(--text-mute);background:#ffffff80;border-left:3px solid #1677ff73;border-radius:0 10px 10px 0;margin:20px 0 0;padding:12px 14px;font-size:13px;line-height:1.55}.gate-brand-corner{z-index:4;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:none;align-items:center;gap:12px;padding:0;display:flex;position:fixed;top:clamp(18px,2.8vh,28px);left:clamp(20px,3.5vw,40px)}.gate-brand-corner em{color:var(--text-mute);letter-spacing:.04em;font-size:11px;font-style:normal;display:block}.gate-brand-corner .gate-brand-en{font-size:15px}.gate-brand-corner .gate-logo{border-radius:10px;width:40px;height:40px}.gate-brand{align-items:center;gap:12px;margin-bottom:28px;display:flex}.gate-logo{object-fit:cover;border-radius:12px;width:48px;height:48px;display:block;box-shadow:0 10px 28px #1677ff47}.gate-brand strong{font-size:18px;display:block}.gate-brand em{color:var(--text-mute);font-size:12px;font-style:normal;display:block}.gate-copy h1{color:#0f1b2d;max-width:16em;margin:0;font-size:clamp(28px,4vw,42px);font-weight:650;line-height:1.25}.gate-copy>p{color:var(--text-dim);max-width:36em;margin:18px 0 0;line-height:1.7}.gate-points{color:var(--text-dim);gap:10px;margin:28px 0 0;padding:0;font-size:14px;list-style:none;display:grid}.gate-points li:before{content:"";background:#1677ff;border-radius:50%;width:7px;height:7px;margin-right:10px;display:inline-block}.gate-roadmap{background:#1677ff0f;border:1px solid #1677ff38;border-radius:12px;flex-direction:column;gap:4px;max-width:36em;margin:22px 0 0;padding:12px 14px;display:flex}.gate-roadmap strong{color:#0958d9;letter-spacing:.02em;font-size:12px}.gate-roadmap span{color:var(--text-dim);font-size:13px;line-height:1.5}.gate-card{border:1px solid var(--border);box-shadow:var(--shadow);background:#fff;border-radius:18px;padding:28px 24px}.gate-card--glass{-webkit-backdrop-filter:blur(18px)saturate(1.06);background:#ffffffc7;border:1px solid #fffffff2;flex-direction:column;min-height:100%;padding:0;display:flex;overflow:hidden;box-shadow:0 24px 48px #0f1b2d1f,inset 0 1px #ffffffd9}.gate-card-body{background:#fffffff0;flex-direction:column;flex:1;min-height:100%;padding:28px 24px;display:flex}.gate-card--glass h2{color:#0f1b2d;font-weight:650}.gate-card--glass label{color:#1e293b;font-weight:500}.gate-card--glass input{background:#fff;border-color:#0f1b2d24;box-shadow:inset 0 1px 2px #0f1b2d0a}.gate-card--glass input:focus{background:#fff}.gate-card--glass input::placeholder{color:#94a3b8}.gate-card--glass .gate-hint{color:#64748b}.gate-card-body .gate-card-form{flex:1}.gate-card-form{flex-direction:column;display:flex}.gate-card-form button[type=submit]{margin-top:12px}.gate-alt-login{opacity:.92;border-top:1px dashed #0f1b2d24;margin-top:auto;padding-top:20px}.gate-alt-login-label{color:var(--text-mute);letter-spacing:.04em;margin:0 0 10px;font-size:11px;font-weight:600}.gate-alt-login-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gate-alt-fake{color:#64748b;cursor:default;-webkit-user-select:none;user-select:none;background:#ffffffeb;border:1px dashed #94a3b8bf;border-radius:8px;padding:9px 10px;font-size:11px;font-weight:500;line-height:1.3;display:block}.gate-main--portal .gate-card--glass{margin-top:0}.gate-card h2{margin:0 0 18px;font-size:20px}.gate-steps{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px;display:grid}.gate-steps div{border:1px solid var(--border-soft);text-align:center;background:#f5f8fc;border-radius:12px;padding:12px 10px}.gate-steps b{background:var(--accent-soft);width:22px;height:22px;color:var(--accent);border-radius:50%;place-items:center;margin:0 auto 8px;font-size:12px;display:grid}.gate-steps span{font-size:13px;font-weight:600;display:block}.gate-steps small{color:var(--text-mute);margin-top:4px;font-size:11px;display:block}.gate-card label{color:var(--text-dim);margin-bottom:8px;font-size:13px;display:block}.gate-card input{border:1px solid var(--border);width:100%;height:46px;color:var(--text);background:#f8fafc;border-radius:10px;outline:none;padding:0 14px;transition:border-color .22s,box-shadow .22s,transform .22s,background .22s}.gate-card input:focus{border-color:var(--accent);background:#fff;transform:translateY(-1px);box-shadow:0 8px 24px #1677ff1f}.gate-card button[type=submit]{color:#fff;cursor:pointer;background:linear-gradient(#4c9aff,#1677ff);border:none;border-radius:10px;width:100%;height:46px;margin-top:12px;font-weight:700;transition:transform .2s,box-shadow .2s,filter .2s}.gate-card button[type=submit]:hover{filter:brightness(1.06);transform:translateY(-2px);box-shadow:0 12px 28px #1677ff59}.gate-card button[type=submit]:active{transform:translateY(0)scale(.98);box-shadow:0 6px 16px #1677ff47}.gate-err{color:#ff8b8b;margin:8px 0 0;font-size:13px;animation:.45s gate-shake}.gate-hint{color:var(--text-mute);margin:12px 0 0;font-size:12px;line-height:1.55}.gate-hint--login{color:#64748b}@media (prefers-reduced-motion:reduce){.gate-bg,.gate--motion .gate-brand-corner,.gate--motion .gate-hero,.gate--motion .gate-login-stack,.gate--motion .gate-foot-panel,.gate-swap-in,.gate-err{animation:none!important}.gate-segment--switch:after{transition:none}.gate-3d-slot,.gate-hero-3d{display:none}.gate-login-stack .gate-card--glass:hover,.gate-card input:focus,.gate-card button[type=submit]:hover{transform:none}}.app-shell{background:var(--bg);flex-direction:row;height:100%;display:flex;overflow:hidden}.app-sider,.product-sider{width:var(--sider-width);background:var(--bg-sider);color:var(--text);z-index:20;flex-direction:column;flex-shrink:0;transition:width .2s;display:flex}.sider-collapsed .app-sider,.product-sider.collapsed{width:var(--sider-collapsed)}.sider-brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 16px 12px;display:flex}.sider-logo{object-fit:cover;border-radius:8px;flex-shrink:0;width:36px;height:36px}.sider-brand-text strong{letter-spacing:.02em;color:var(--text);font-size:15px;font-weight:700;line-height:1.25;display:block}.sider-brand-text em{color:var(--text-mute);white-space:nowrap;text-overflow:ellipsis;max-width:140px;margin-top:2px;font-size:11px;font-style:normal;display:block;overflow:hidden}.sider-nav{flex-direction:column;flex:1;gap:2px;min-height:0;padding:8px 0;display:flex;overflow:auto}.sider-group{flex-direction:column;gap:4px;display:flex}.sider-group-label{letter-spacing:.08em;color:#ffffff73;text-transform:none;padding:6px 12px 4px;font-size:11px;font-weight:700}.sider-link{color:#fffc;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:13px;font-weight:500;text-decoration:none;display:flex}.sider-link:hover{color:#fff;background:#ffffff1f}.sider-link.on{color:#fff;background:#fff3;font-weight:700}.product-sider.collapsed .nav-item-label,.product-sider.collapsed .sider-brand-text{display:none}.sider-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sider-foot{border-top:1px solid #ffffff14;padding:10px}.sider-collapse{color:#fff9;cursor:pointer;background:#ffffff1a;border:none;border-radius:8px;justify-content:center;align-items:center;gap:6px;height:36px;margin:8px;font-size:12px;font-weight:500;transition:background .12s,color .12s;display:flex}.sider-collapse:hover{color:#fff;background:#ffffff2e;background:var(--bg-sider-hover)}.app-body{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.app-workbench{flex:1;min-height:0;display:flex;position:relative}.app-workbench>.app-main{flex:1;min-width:0}.agent-panel{border-left:1px solid var(--border);z-index:20;background:#f7f9fc;flex-direction:column;flex-shrink:0;gap:8px;width:360px;max-width:min(360px,92vw);padding:10px 12px 12px;display:flex}.agent-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.agent-head strong{font-size:14px;display:block}.agent-head em{color:var(--text-mute);margin-top:2px;font-size:11px;font-style:normal;display:block}.agent-head-actions{gap:4px;display:flex}.ghost-btn.sm.on-agent{background:var(--accent-soft);color:#0958d9;border-color:#1677ff8c}.agent-context-chip{flex-wrap:wrap;gap:6px;display:flex}.agent-context-chip span{border:1px solid var(--border);color:var(--text-dim);background:#fff;border-radius:999px;padding:3px 8px;font-size:11px}.agent-modes,.agent-quick{flex-wrap:wrap;gap:6px;display:flex}.agent-messages{flex-direction:column;flex:1;gap:8px;min-height:160px;padding-right:2px;display:flex;overflow:auto}.agent-msg{border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 10px}.agent-msg.user{background:#e8f3ff;border-color:#1677ff40}.agent-msg pre{white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;font-size:12px;line-height:1.5}.agent-tools{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.agent-tools span{color:#0958d9;background:#f0f5ff;border-radius:999px;padding:1px 6px;font-size:10px}.agent-tools span.bad{color:#cf1322;background:#fff1f0}.agent-src{color:var(--text-mute);margin-top:4px;font-size:10px;font-style:normal;display:block}.agent-input-row{flex-direction:column;gap:6px;display:flex}.agent-input-row textarea{resize:vertical;border:1px solid var(--border);width:100%;min-height:56px;font:inherit;border-radius:8px;padding:8px;font-size:12px}.agent-settings{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;gap:8px;padding:8px 10px;display:flex}.agent-field{flex-direction:column;gap:4px;font-size:12px;display:flex}.agent-field span{color:var(--text-mute)}.agent-field input,.agent-field select{border:1px solid var(--border);height:32px;font:inherit;border-radius:6px;padding:0 8px}.agent-diff-card{background:#fff;border:1px solid #1677ff59;border-radius:10px;flex-direction:column;gap:6px;padding:8px 10px;display:flex}.agent-diff-title{flex-direction:column;gap:2px;display:flex}.agent-diff-title em{color:#0958d9;font-size:12px;font-style:normal}.agent-diff-table{border-collapse:collapse;width:100%;font-size:11px}.agent-diff-table th,.agent-diff-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:4px 2px}.agent-diff-table .muted{color:var(--text-mute);margin-top:2px;font-size:10px}.agent-diff-actions{justify-content:flex-end;gap:6px;display:flex}.agent-diff-banner{color:var(--text-dim);background:#f5f5f5;border-radius:8px;padding:6px 8px;font-size:11px}.agent-diff-banner.ok{color:#389e0d;background:#f6ffed}.admin-page{border:1px solid var(--border);background:#f5f7fb;border-radius:12px;grid-column:1/-1;gap:0;min-height:calc(100vh - 160px);display:flex;overflow:hidden}.admin-nav{background:var(--bg-sider);color:#ffffffbf;flex-direction:column;flex-shrink:0;gap:4px;width:180px;padding:14px 10px;display:flex}.admin-nav-head{padding:4px 8px 12px}.admin-nav-head strong{color:#fff;font-size:14px;display:block}.admin-nav-head em{opacity:.65;margin-top:2px;font-size:11px;font-style:normal;display:block}.admin-nav-item{text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 10px;font-size:13px}.admin-nav-item:hover{color:#fff;background:#ffffff14}.admin-nav-item.on{color:#fff;background:#1677ff}.admin-body{flex:1;min-width:0;padding:16px 18px;overflow:auto}.admin-panel h2{margin:0 0 6px;font-size:18px}.admin-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0;display:grid}.admin-kpi{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 12px}.admin-kpi em{color:var(--text-mute);font-size:11px;font-style:normal;display:block}.admin-kpi strong{font-size:20px}.admin-card{border:1px solid var(--border);background:#fff;border-radius:10px;margin-top:10px;padding:12px}.admin-card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:10px;display:grid}.admin-list{color:var(--text-dim);margin:8px 0;padding-left:18px;font-size:12px}.admin-list b{color:var(--text)}.admin-split{grid-template-columns:1fr 1fr;gap:10px;display:grid}.admin-pre,.admin-json{color:#e2e8f0;background:#0f172a;border:0;border-radius:8px;width:100%;max-height:320px;margin-top:8px;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;overflow:auto}.admin-json{resize:vertical;min-height:220px}.admin-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.admin-chip-row{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.admin-search{border:1px solid var(--border);border-radius:8px;width:100%;max-width:360px;height:34px;margin:8px 0;padding:0 10px}.admin-rule-list{flex-direction:column;gap:6px;max-height:60vh;display:flex;overflow:auto}.admin-rule{border:1px solid var(--border);background:#fff;border-radius:8px;align-items:flex-start;gap:8px;padding:8px 10px;font-size:12px;display:flex}.admin-rule.off{opacity:.55}.admin-rule code{color:#0958d9}.admin-rule em{color:var(--text-mute);margin-top:2px;font-style:normal;display:block}.admin-table{border-collapse:collapse;border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;font-size:12px;overflow:hidden}.admin-table th,.admin-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px}.admin-callout{color:#0958d9;background:#f0f5ff;border-radius:10px;margin-top:12px;padding:10px 12px;font-size:12px}.admin-step{margin-top:8px;font-size:12px}@media (width<=960px){.admin-page{flex-direction:column}.admin-nav{flex-flow:wrap;width:100%}.admin-split,.admin-kpi-grid{grid-template-columns:1fr 1fr}.app-workbench.agent-open{flex-direction:column}.agent-panel{border-left:none;border-top:1px solid var(--border);width:100%;max-width:none;max-height:42vh}}.app-topbar{height:56px;box-shadow:none;background:#fff;border-bottom:1px solid #e2e8f0;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 20px;display:flex}.topbar-left{align-items:center;gap:12px;min-width:0;display:flex}.topbar-title strong{color:var(--text);font-size:16px;font-weight:700;line-height:1.25;display:block}.topbar-title em{color:var(--text-mute);margin-top:1px;font-size:11px;font-style:normal;display:block}.topbar-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.topbar-exit{color:var(--text-dim)!important}.topbar-btn{color:#4e5969;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;height:32px;padding:0 14px;font-family:HarmonyOS Sans SC,PingFang SC,Microsoft YaHei,sans-serif;font-size:12px;font-weight:500;transition:background .12s}.topbar-btn:hover{background:#f8fafc}.topbar-btn.on{color:#2572e5;background:#eff6ff;border-color:#2572e5}.topbar-acts{flex-shrink:0;align-items:center;gap:8px;display:flex}.save-state{color:#8391a4;margin-right:8px;font-size:11px}.app-header{display:none}.brand{align-items:center;gap:14px;min-width:220px;display:flex}.brand-mark{object-fit:cover;border-radius:11px;width:44px;height:44px;display:block;box-shadow:0 3px 12px #1677ff3d}.brand strong{letter-spacing:.01em;font-size:17px;font-weight:700;line-height:1.25;display:block}.brand em{color:var(--text-mute);margin-top:2px;font-size:12px;font-style:normal;display:block}.header-meta{flex-shrink:0;align-items:center;gap:12px;display:flex}.pill{height:28px;font-size:12px;font-weight:600;font-family:var(--font-cn);background:var(--accent-soft);color:var(--accent);cursor:default;border:1px solid #1677ff2e;border-radius:6px;align-items:center;padding:0 10px;display:inline-flex}button.pill{cursor:pointer;font:inherit}.pill.soft{color:var(--text-dim);border-color:var(--border);background:#f5f5f5}.text-btn{color:var(--text-mute);cursor:pointer;background:0 0;border:none;font-size:13px}.text-btn:hover{color:var(--text)}.header-fit{height:32px!important}.workspace-status{border-bottom:1px solid var(--border-soft);min-height:32px;color:var(--text-dim);background:#fff;flex-shrink:0;align-items:center;gap:8px;padding:4px 20px;font-size:12px;display:flex}.workspace-status .ws-project{color:var(--accent);font-weight:600;font-family:var(--font-cn)}.workspace-status .ws-sep{color:var(--border)}.workspace-status .ws-sel.muted{color:var(--text-mute)}.library-work-bar{border:1px solid var(--border-soft);box-shadow:var(--shadow);background:linear-gradient(90deg,#fff 0%,#f7fafc 100%);border-radius:10px;grid-column:1/-1;justify-content:space-between;align-items:stretch;gap:12px;padding:10px 14px;display:flex}.lwb-main{flex-wrap:wrap;flex:1;gap:8px 18px;min-width:0;display:flex}.lwb-block{flex-direction:column;gap:2px;min-width:140px;display:flex}.lwb-block em{color:var(--text-mute);font-size:11px;font-style:normal}.lwb-block strong{color:var(--text);font-size:14px;font-weight:700;line-height:1.3}.lwb-block strong.num{font-family:var(--font-cn);font-size:13px}.lwb-block span{color:var(--text-dim);font-size:12px;line-height:1.35}.lwb-block.accent strong{color:#0958d9}.lwb-actions{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.lwb-link{color:#0958d9;white-space:nowrap;background:#1677ff14;border:1px solid #1677ff59;border-radius:7px;align-items:center;padding:6px 10px;font-size:12px;font-weight:600;text-decoration:none;display:inline-flex}.lwb-link:hover{background:#1677ff24}.lwb-link.soft{border-color:var(--border);color:var(--text-dim);background:#f8fafc;font-weight:500}.bridge-slot-row{border:1px solid var(--border-soft);background:#f8fafc;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;padding:8px 10px;display:flex}.bridge-slot-row strong{font-size:13px;display:block}.bridge-slot-row em{color:var(--text-mute);margin-top:2px;font-size:11px;font-style:normal;display:block}.bridge-slot-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}@media (width<=900px){.library-work-bar{flex-direction:column}}.app-main{background:var(--bg);flex:1;grid-template-columns:300px minmax(0,1fr) 300px;gap:12px;min-height:0;padding:12px;display:grid}.panel,.data-tabs{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border-soft);overflow:auto}.panel{border-right:none;flex-direction:column;gap:12px;padding:14px 14px 20px;display:flex}.panel-head h2{margin:0 0 4px;font-size:16px;font-weight:700}.panel-head p{color:var(--text-mute);margin:0;font-size:12px;line-height:1.5}.member-tabs{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.member-tabs button{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:#f5f8fc;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;font-size:15px;font-weight:600;display:flex}.member-tabs button span{color:var(--text-mute);font-size:11px;font-weight:500}.member-tabs button.active{background:var(--accent-soft);color:var(--text);border-color:#5b9cff80}.demo-title{color:var(--text-dim);margin-bottom:8px;font-size:13px;font-weight:600}.demo-list{flex-direction:column;gap:6px;display:flex}.demo-item{text-align:left;border:1px solid var(--border);background:var(--surface-panel);border-radius:var(--radius-control);cursor:pointer;color:inherit;flex-direction:column;gap:2px;padding:8px 10px;transition:border-color .12s,background .12s,box-shadow .12s;display:flex}.demo-item strong{font-size:12px;font-weight:650}.demo-item em{color:var(--text-secondary);font-size:11px;font-style:normal}.demo-item.active,.demo-item:hover{border-color:var(--brand-primary);background:var(--brand-soft);box-shadow:inset 3px 0 0 var(--brand-primary)}.field-list{flex-direction:column;display:flex}.chip-field{border-bottom:1px solid var(--border-soft);flex-direction:column;gap:8px;padding:10px 0;display:flex}.chip-field.active{background:#5b9cff14;border-radius:10px;padding:10px 8px;box-shadow:inset 0 0 0 1px #5b9cff59}.chip-label{color:var(--text-dim);font-size:13px;font-weight:600}.chip-label em{color:var(--text-mute);margin-left:6px;font-size:11px;font-style:normal}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:#f5f8fc;border-radius:999px;padding:6px 10px;font-size:12px;transition:border-color .12s,background .12s,color .12s}.chip:hover{border-color:color-mix(in srgb, var(--brand-primary) 40%, var(--border))}.chip:focus-visible{outline:2px solid color-mix(in srgb, var(--brand-primary) 55%, transparent);outline-offset:1px}.chip.on{background:var(--accent-soft);color:#0958d9;border-color:#1677ff8c;font-weight:600}.panel-actions{justify-content:space-between;align-items:center;gap:10px;padding-top:8px;display:flex}.check-row{color:var(--text-dim);align-items:center;gap:8px;font-size:13px;display:flex}.ghost-btn{border:1px solid var(--border);height:34px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:0 12px;font-size:13px}.viewport{background:var(--bg-card);border-radius:var(--radius-lg);min-width:0;min-height:0;box-shadow:var(--shadow-card);border:1px solid var(--border-soft);flex-direction:column;display:flex;overflow:hidden}.viewer{flex:1;grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.viewer-toolbar{border-bottom:1px solid var(--border-soft);background:linear-gradient(#fafbfc 0%,#f5f7fa 100%);flex-wrap:wrap;align-items:center;gap:10px 14px;padding:8px 12px;display:flex}.tb-group{align-items:center;gap:6px;display:flex}.tb-group.grow{flex:1;min-width:180px}.tb-group.grow input[type=range]{flex:1}.tb-label{color:var(--text-mute);font-size:12px}.tb{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:#fff;border-radius:8px;padding:5px 9px;font-size:12px}.tb.on{background:var(--accent-soft);color:#0958d9;border-color:#1677ff80}.tb-check{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:flex}.tb-group em{color:var(--accent);white-space:nowrap;font-size:12px;font-style:normal}.tb-hint{color:var(--text-mute)!important;font-size:11px!important}.viewer-stage{background:#dce6f0;height:100%;min-height:0;position:relative}.viewer-stage canvas{display:block;width:100%!important;height:100%!important}.viewer-hint{display:none}.viewport-status-bar{z-index:4;border:1px solid var(--border);max-width:calc(100% - 120px);color:var(--text-dim);pointer-events:auto;background:#fffffff0;border-radius:6px;align-items:center;gap:6px;padding:4px 8px 4px 4px;font-size:12px;display:inline-flex;position:absolute;bottom:12px;left:12px;box-shadow:0 2px 8px #1f2a3d0f}.viewport-status-bar .vsb-chip{max-width:220px;color:var(--text-muted);text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:default;background:0 0;border:none;border-radius:4px;padding:2px 8px;font-size:12px;overflow:hidden}.viewport-status-bar .vsb-chip.has{color:var(--brand-primary);cursor:pointer;font-weight:600}.viewport-status-bar .vsb-chip.has:hover{background:var(--brand-soft)}.viewport-status-bar .vsb-clear{width:20px;height:20px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0;font-size:14px;line-height:1}.viewport-status-bar .vsb-clear:hover{background:var(--surface-subtle);color:var(--text-primary)}.viewport-status-bar .vsb-meta{color:var(--text-muted);white-space:nowrap}.viewport-status-bar .vsb-sep{color:var(--border)}.viewer-help{z-index:20;background:#0f172a47;place-items:center;display:grid;position:absolute;inset:0}.viewer-help-card{border:1px solid var(--border);background:#fff;border-radius:8px;width:min(420px,100% - 32px);padding:14px 16px;box-shadow:0 12px 32px #0f172a29}.viewer-help-card header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.viewer-help-card ul{color:var(--text-dim);margin:0;padding-left:18px;font-size:13px;line-height:1.6}.viewer-stage.empty-stage{place-items:center;display:grid}.viewer-hint span{display:none}.data-tabs{border-left:none;flex-direction:column;min-height:0;padding:0;display:flex}.tabs-bar{border-bottom:1px solid var(--border-soft);background:#fafbfc;flex-shrink:0;grid-template-columns:repeat(4,1fr);display:grid}.tabs-bar button{height:40px;color:var(--text-mute);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;font-size:13px}.tabs-bar button.on{color:var(--text);border-bottom-color:var(--accent);background:#5b9cff0f}.tabs-body{flex:1;padding:12px;overflow:auto}.sel-banner{background:#5b9cff1f;border:1px solid #5b9cff4d;border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.sel-banner.mute{border-color:var(--border);color:var(--text-mute);background:#f5f8fc}.layer-list{flex-direction:column;gap:6px;display:flex}.layer-row label{color:var(--text-dim);align-items:center;gap:8px;font-size:13px;display:flex}.layer-row.active{background:#ffb46414;border-radius:8px;padding:4px 6px}.linkish{color:inherit;cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.legend-row{color:var(--text-mute);flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;font-size:12px;display:flex}.legend-row i{border-radius:50%;width:10px;height:10px;margin-right:4px;display:inline-block}.applied-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.applied-list li{color:var(--text-dim);flex-direction:column;gap:3px;font-size:12px;line-height:1.45;display:flex}.applied-list code{color:var(--accent);font-size:11px}.warn-line{margin:8px 0 0;font-size:12px}.warn-line.warn{color:#d48806}.rule-scroll.compact{max-height:240px;margin-top:12px;overflow:auto}.note-card{border:1px solid var(--border);background:#f7f9fc;border-radius:10px;margin-bottom:8px;padding:10px}.note-card strong{margin-bottom:4px;font-size:13px;display:block}.note-card p{color:var(--text-mute);margin:0;font-size:12px;line-height:1.5}.qty-summary{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;display:grid}.qty-summary div{border:1px solid var(--border-soft);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f7faff 100%);border-radius:8px;padding:12px;position:relative;overflow:hidden}.qty-summary div:before{content:"";background:var(--accent);width:3px;position:absolute;top:0;bottom:0;left:0}.qty-summary em{color:var(--text-mute);margin-bottom:4px;font-size:11px;font-style:normal;display:block}.qty-summary strong{font-size:22px;font-weight:700;font-family:var(--font-cn);color:var(--text);letter-spacing:-.02em}.qty-table{border-collapse:collapse;width:100%;font-size:12px}.qty-table th,.qty-table td{border-bottom:1px solid var(--border-soft);text-align:left;color:var(--text-dim);padding:8px 4px}.qty-table th.num,.qty-table td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-cn)}.qty-table tfoot td{color:var(--text);border-bottom:none;padding-top:10px;font-weight:700}.qty-table tfoot td.num{color:#0958d9;font-size:14px}.boq-panel{flex-direction:column;gap:10px;display:flex}.boq-head{border-bottom:1px solid var(--border-soft);flex-direction:column;gap:4px;padding-bottom:8px;display:flex}.boq-code{color:#0958d9;font-size:11px;font-weight:700;font-family:var(--font-cn);letter-spacing:.02em;vertical-align:middle;background:#e8f3ff;border-radius:4px;margin-right:6px;padding:1px 6px;display:inline-block}.boq-title{color:var(--text);font-size:15px;font-weight:700}.boq-cat{color:var(--text-mute);font-size:11px;font-style:normal}.boq-sub{color:var(--text-dim);margin:2px 0 0;font-size:12px}.boq-sub b{color:#0958d9;font-weight:600}.boq-summary{grid-template-columns:1fr 1fr}.boq-summary .boq-unit{color:var(--text-mute);margin-left:4px;font-size:12px;font-weight:500}.boq-summary .boq-line-cost{color:var(--text-dim);font-size:12px;font-family:var(--font-cn);margin-top:4px;display:block}.boq-summary .boq-total-card{background:linear-gradient(#f0f7ff 0%,#e6f0ff 100%);grid-column:1/-1}.boq-summary .boq-total-card strong{color:#0958d9;font-size:20px}.part-code{color:#0958d9;font-family:var(--font-cn);margin-right:4px;font-size:11px;font-weight:700;display:inline-block}.scheme-compare{flex-direction:column;gap:10px;display:flex}.scheme-actions{flex-wrap:wrap;gap:6px;display:flex}.scheme-slots{grid-template-columns:1fr 1fr;gap:8px;display:grid}.scheme-slot{border:1px dashed var(--border);background:#fafbfc;border-radius:8px;min-height:64px;padding:8px 10px}.scheme-slot.on{background:var(--accent-soft);border-style:solid;border-color:#1677ff73}.scheme-slot em{color:var(--text-mute);margin-bottom:2px;font-size:11px;font-style:normal;display:block}.scheme-slot strong{margin-bottom:2px;font-size:13px;display:block}.scheme-slot span{color:var(--text-mute);font-size:11px}.scheme-summary{color:#0958d9;background:#f0f5ff;border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.4}.scheme-metrics{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.scheme-metric{border:1px solid var(--border);background:#fff;border-radius:8px;padding:6px 8px}.scheme-metric em{color:var(--text-mute);margin-bottom:2px;font-size:10px;font-style:normal;display:block}.scheme-metric strong{font-size:12px}.scheme-metric.up strong{color:#cf1322}.scheme-metric.down strong{color:#389e0d}.scheme-table{border-collapse:collapse;width:100%;font-size:12px}.scheme-table th,.scheme-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 4px}.scheme-table th{color:var(--text-mute);font-weight:600}.section-card{border:1px solid var(--border);background:var(--bg-card);border-radius:12px;margin:0;padding:10px}.section-title{color:var(--text-dim);flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}.section-cut-tag{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 8px;font-size:11px;font-style:normal;font-weight:600}.notation-block{border:1px solid var(--border-soft);background:linear-gradient(#f7faff 0%,#fafbfc 100%);border-radius:8px;margin:0;padding:10px 12px}.notation-input{box-sizing:border-box;border:1px solid var(--border);width:100%;font-family:var(--font-cn), var(--font-cn), monospace;resize:vertical;background:#fff;border-radius:8px;margin-top:6px;padding:8px 10px;font-size:13px;line-height:1.45}.notation-input.err{background:#fff2f0;border-color:#ff4d4f}.notation-error{color:#cf1322;margin-top:6px;font-size:12px}.notation-error code{white-space:pre-wrap;word-break:break-all;color:var(--text-dim);background:#fff;border-radius:6px;margin-top:4px;padding:6px 8px;font-size:12px;display:block}.notation-error mark{color:#a8071a;background:#ffccc7;padding:0 2px}.section-body{flex-direction:column;gap:8px;display:flex}.section-meta{color:var(--text-dim);font-size:12px}.section-meta p{margin:0 0 4px}.section-meta .muted{color:var(--text-mute)}.scene-label-wrap{max-width:148px;display:inline-flex;transform:translateZ(0)}.dim-tag{white-space:nowrap;color:#0958d9;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;background:#fffffff5;border:1px solid #0958d973;border-radius:3px;max-width:130px;padding:2px 6px;font-size:11px;font-weight:700;line-height:1.2;overflow:hidden;box-shadow:0 1px 3px #0f285024}.spec-tag{white-space:nowrap;color:#0f172a;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;background:#fffffff5;border:1px solid #64748b;border-radius:4px;max-width:150px;margin:0;padding:3px 7px;font-family:inherit;font-size:12px;font-weight:650;line-height:1.25;display:inline-block;overflow:hidden;box-shadow:0 1px 4px #1f2a3d29}button.spec-tag{appearance:none}.spec-tag.clickable{cursor:pointer;pointer-events:auto}.spec-tag.clickable:hover{opacity:1;filter:brightness(1.02);box-shadow:0 2px 8px #1677ff33}.spec-long{color:#a61b1b;border-color:#cf1322}.spec-stirrup{color:#237804;border-color:#389e0d}.spec-side{color:#0958d9;border-color:#1677ff}.spec-support{color:#531dab;border-color:#722ed1}.spec-mid{color:#d46b08;border-color:#fa8c16}.spec-title{color:#0958d9;border-color:#1677ff;font-size:11px;font-weight:650}.spec-tag.soft{opacity:.88;background:#fffffff0;border-color:#94a3b8}.spec-tag.muted{opacity:.42;pointer-events:none;box-shadow:none}.spec-tag.on{opacity:1;z-index:2;border-width:1.5px;max-width:180px;font-weight:700;box-shadow:0 2px 10px #1677ff47}.viewer-hud{border:1px solid var(--border);max-width:min(320px,100% - 24px);box-shadow:var(--shadow);pointer-events:none;z-index:2;background:#fffffff5;border-radius:10px;padding:10px 12px;position:absolute;top:12px;left:12px}.viewer-hud strong{color:#0958d9;margin-bottom:4px;font-size:13px;display:block}.viewer-hud p{color:var(--text-dim);margin:0;font-size:12px;line-height:1.45}.viewer-hud .hud-meta{color:var(--text-mute);margin-top:6px;font-size:11px}.selection-float{z-index:90;border:1px solid var(--border);pointer-events:none;opacity:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff7;border-radius:12px;width:min(280px,100vw - 24px);padding:10px 12px;transition:opacity .12s,transform .12s;position:fixed;transform:translateY(4px);box-shadow:0 10px 28px #1f2a3d2e}.selection-float.show{opacity:1;transform:translateY(0)}.selection-float.tone-rebar{border-color:#a61b1b59}.selection-float.tone-concrete{border-color:#6d768466}.selection-float.tone-form{border-color:#ad680059}.selection-float.tone-floor{border-color:#fa8c1673}.sf-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.sf-head strong{color:var(--text);font-size:14px;font-weight:700;line-height:1.3}.sf-badge{background:var(--accent-soft);color:#0958d9;border-radius:999px;flex:none;padding:2px 7px;font-size:10px;font-weight:650}.tone-rebar .sf-badge{color:#a61b1b;background:#a61b1b1a}.tone-floor .sf-badge{color:#d46b08;background:#fa8c1624}.sf-spec{background:#f4f8ff;border-radius:8px;align-items:baseline;gap:8px;margin-bottom:8px;padding:6px 8px;display:flex}.sf-spec em{color:var(--text-mute);font-size:11px;font-style:normal}.sf-spec b{font-family:var(--font-cn);color:#0958d9;font-size:15px;font-weight:700}.sf-rows{flex-direction:column;gap:6px;margin:0;display:flex}.sf-rows>div{grid-template-columns:36px 1fr;align-items:start;gap:8px;display:grid}.sf-rows dt{color:var(--text-mute);margin:0;font-size:11px}.sf-rows dd{color:var(--text-dim);margin:0;font-size:12px;line-height:1.4}.sf-hint{color:var(--text-mute);margin:8px 0 0;font-size:11px}@media (width<=1200px){.app-main{grid-template-columns:260px minmax(0,1fr) minmax(220px,280px);gap:10px;padding:10px}.data-tabs{font-size:12px}.tabs-bar button{padding:6px 8px;font-size:11px}}.modal-backdrop{z-index:80;background:#0f1b2d59;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-card{border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;gap:12px;width:min(640px,100%);max-height:min(88vh,720px);padding:18px 18px 16px;display:flex;box-shadow:0 24px 64px #1f2a3d2e}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.modal-head h2{margin:0 0 6px;font-size:18px}.modal-head p{color:var(--text-mute);margin:0;font-size:13px;line-height:1.5}.modal-tools{flex-wrap:wrap;gap:8px;display:flex}.modal-textarea{resize:vertical;border:1px solid var(--border);min-height:220px;color:var(--text);background:#f7f9fc;border-radius:10px;outline:none;flex:1;padding:12px;font-family:ui-monospace,Consolas,Courier New,monospace;font-size:12px;line-height:1.45}.modal-textarea:focus{border-color:var(--accent)}.modal-info{color:#0958d9;margin:0;font-size:12px}.modal-err{color:#cf1322;margin:0;font-size:13px}.modal-foot{justify-content:flex-end;gap:10px;display:flex}.primary-btn{color:#fff;cursor:pointer;background:linear-gradient(#4c9aff,#1677ff);border:none;border-radius:8px;height:34px;padding:0 14px;font-size:13px;font-weight:650}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.primary-btn.sm{border-radius:6px;height:28px;padding:0 12px;font-size:12px}.import-banner{color:#0958d9;background:#1677ff14;border:1px solid #1677ff38;border-radius:8px;margin:0 0 4px;padding:8px 10px;font-size:12px;line-height:1.4}.object-tree .layer-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.type-tag{color:var(--text-mute);background:#eef3f9;border-radius:999px;padding:2px 6px;font-size:10px}.type-rebar{color:#a61b1b;background:#a61b1b14}.type-concrete{color:#5a6b84}.type-formwork{color:#ad6800}.tree-block{margin-bottom:14px}.tree-cat{color:var(--text-dim);margin-bottom:4px;font-size:13px;font-weight:700}.tree-cat-desc{color:var(--text-mute);margin:0 0 8px;font-size:12px;line-height:1.45}.tree-nodes{flex-direction:column;gap:6px;display:flex}.tree-node{text-align:left;border:1px solid var(--border);cursor:pointer;color:inherit;background:#f8fafc;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.tree-node strong{font-size:13px;font-weight:650}.tree-node em{color:var(--text-mute);font-size:11px;font-style:normal;font-weight:400;line-height:1.35}.tree-node.active,.tree-node:hover{background:var(--accent-soft);border-color:#1677ff73}.pbs-tree{border:1px solid var(--border-soft);background:#fbfcfe;border-radius:10px;overflow:hidden}.pbs-row{border-bottom:1px solid var(--border-soft);align-items:center;gap:6px;min-height:32px;padding:4px 8px 4px 0;font-size:12px;display:flex}.pbs-row:last-child{border-bottom:none}.pbs-row.pbs-group{background:#1677ff08}.pbs-row.active{background:var(--accent-soft)}.pbs-caret{cursor:pointer;background:0 0;border:none;flex:0 0 16px;width:16px;height:16px;padding:0;position:relative}.pbs-caret:before{content:"";border-right:1.5px solid var(--text-mute);border-bottom:1.5px solid var(--text-mute);transition:transform .15s;position:absolute;inset:4px;transform:rotate(-45deg)}.pbs-caret.open:before{inset:3px 4px 5px;transform:rotate(45deg)}.pbs-caret.spacer{cursor:default;pointer-events:none}.pbs-caret.spacer:before{display:none}.pbs-check{flex:none;margin:0;display:inline-flex}.pbs-label{cursor:pointer;text-align:left;min-width:0;color:inherit;font:inherit;background:0 0;border:none;flex:1;align-items:baseline;gap:6px;padding:0;display:inline-flex}.pbs-code{font-family:var(--font-cn);color:#0958d9;flex:none;font-size:11px;font-weight:600}.pbs-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.pbs-hint{color:var(--text-mute);font-size:10px;font-style:normal;font-family:var(--font-cn)}.pbs-kind{color:var(--text-mute);flex:none;font-size:10px}.kind-member{color:#0958d9}.kind-zone{color:#531dab}.kind-system{color:#ad6800}.kind-part{color:var(--text-mute)}.kind-node{color:#1f2a3d;font-weight:600}.tree-mode-tabs{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px;display:grid}.tree-mode-tabs button{border:1px solid var(--border);cursor:pointer;color:var(--text-dim);background:#f8fafc;border-radius:10px;padding:8px 6px;font-size:12px;font-weight:650}.tree-mode-tabs .wbs-tab.on{color:#d46b08;background:#fa8c161f;border-color:#fa8c168c}.tree-mode-tabs .pbs-tab.on{background:var(--accent-soft);color:#0958d9;border-color:#1677ff80}.wbs-cat{color:#d46b08!important}.pbs-cat{color:#0958d9!important}.floor-chip-row{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.floor-chip{border:1px solid var(--border);font-size:11px;font-family:var(--font-cn);cursor:pointer;color:var(--text-dim);background:#fff;border-radius:999px;padding:4px 10px;font-weight:650}.floor-chip.on{border-color:var(--floor-c,#1677ff);color:var(--floor-c,#1677ff);background:color-mix(in srgb, var(--floor-c,#1677ff) 12%, white)}.wbs-tree{background:#fffaf5;border:1px solid #fa8c1647;border-radius:10px;overflow:hidden}.wbs-row{border-bottom:1px solid #fa8c161f;align-items:center;gap:6px;min-height:32px;padding:4px 8px 4px 0;font-size:12px;display:flex}.wbs-row.wbs-group{background:#fa8c160f}.wbs-row.active{background:#fa8c1629}.wbs-label{cursor:pointer;text-align:left;min-width:0;color:inherit;font:inherit;background:0 0;border:none;flex:1;align-items:baseline;gap:6px;padding:0;display:inline-flex}.wbs-code{font-family:var(--font-cn);color:#d46b08;flex:none;font-size:11px;font-weight:700}.wbs-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.wbs-floor-tag{font-size:10px;font-style:normal;font-family:var(--font-cn);color:#ad6800;background:#fa8c161f;border-radius:4px;padding:1px 5px;font-weight:700}.wbs-jump-hint{color:#0958d9;background:#1677ff1a;border-radius:4px;padding:1px 5px;font-size:10px;font-style:normal;font-weight:600}.wbs-kind{color:#ad6800;flex:none;font-size:10px}.kind-project{color:#ad4e00;font-weight:700}.kind-phase{color:#d46b08}.kind-floor{color:#1677ff}.kind-work{color:#8c8c8c}.tree-cat-mini{color:var(--text-mute);margin:8px 0 4px;font-size:11px;font-weight:650}.tree-cat-group+.tree-cat-group{margin-top:4px}.floor-badge{white-space:nowrap;color:#4a5a72;opacity:.55;background:#ffffffeb;border:1.5px solid #d0dae8;border-radius:6px;padding:3px 7px;font-size:10px;line-height:1.2;transform:scale(.9);box-shadow:0 2px 6px #1f2a3d14}.floor-badge.on{opacity:1;font-weight:650;transform:scale(1)}.floor-badge strong{font-size:11px;display:block}.floor-badge em{color:var(--text-mute);margin-top:1px;font-size:9px;font-style:normal;display:block}.property-panel .tabs-bar{grid-template-columns:1fr}.node-intro h3{margin:0 0 8px;font-size:16px}.node-intro p{color:var(--text-dim);margin:0 0 12px;font-size:13px;line-height:1.55}.knowledge-card{border:1px solid var(--border);background:#f7f9fc;border-radius:12px;padding:12px}.knowledge-card h4{color:#0958d9;margin:0 0 10px}.knowledge-dl{margin:0}.knowledge-dl>div{margin-bottom:10px}.knowledge-dl dt{color:var(--text-mute);margin-bottom:4px;font-size:12px}.knowledge-dl dd{color:var(--text-dim);margin:0;font-size:13px;line-height:1.5}.knowledge-dl code{color:#0958d9;font-size:12px}.anim-timeline{border-top:1px solid var(--border-soft);background:#f7f9fc;padding:8px 12px 12px}.anim-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.anim-head strong{font-size:13px}.ghost-btn.sm{height:28px;padding:0 10px;font-size:12px}.anim-timeline input[type=range]{width:100%;margin-bottom:8px}.anim-steps{flex-wrap:wrap;gap:6px;display:flex}.anim-step{border:1px solid var(--border);cursor:pointer;color:var(--text-dim);background:#fff;border-radius:8px;padding:5px 8px;font-size:11px}.anim-step.on{background:var(--accent-soft);color:#0958d9;border-color:#1677ff80}.module-nav{flex-wrap:wrap;flex:1;justify-content:center;gap:8px;min-width:0;padding:0 16px;display:flex}.mod-link{color:var(--text-dim);white-space:nowrap;border-radius:10px;padding:8px 14px;font-size:15px;font-weight:500;line-height:1.2;text-decoration:none;transition:background .15s,color .15s}.mod-link:hover{color:#0958d9;background:#1677ff0f}.mod-link.on{color:#0958d9;background:var(--accent-soft);font-weight:700}.mod-link sup{color:#faad14;margin-left:3px;font-size:10px}.header-meta .text-btn,.header-meta .ghost-btn{height:36px;padding:0 12px;font-size:14px}.link-btn{align-items:center;margin-top:16px;text-decoration:none;display:inline-flex}.module-list{gap:8px;margin:24px 0 0;padding:0;list-style:none;display:grid}.module-list a{border:1px solid var(--border);color:inherit;background:#fff;border-radius:10px;justify-content:space-between;padding:10px 12px;text-decoration:none;display:flex}.module-list em{color:var(--text-mute);font-size:12px;font-style:normal}.model-viewer{flex:1;min-height:0}.viewer{flex-direction:column;min-height:0;display:flex}.tabs-bar-wrap{flex-wrap:wrap;grid-template-columns:none!important;display:flex!important}.tabs-bar-wrap button{flex:auto;min-width:52px;height:36px;font-size:12px}.explain-section{border:1px solid var(--border-soft);background:#f7f9fc;border-radius:10px;margin-bottom:8px;padding:8px 10px}.explain-section summary{cursor:pointer;color:#0958d9;font-size:13px;font-weight:650}.explain-section p{color:var(--text-dim);margin:8px 0 0;font-size:12px;line-height:1.55}.explain-live{color:#a61b1b;background:#a61b1b0f;border-radius:4px;margin-top:6px;padding:2px 6px;font-size:11px;display:inline-block}.bbs-grid{flex-direction:column;gap:8px;display:flex}.bbs-card{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px}button.bbs-card.clickable{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;transition:border-color .15s,box-shadow .15s;display:block}button.bbs-card.clickable:hover{border-color:#1677ff73}button.bbs-card.clickable.on{border-color:var(--accent);box-shadow:0 0 0 2px #1677ff1f}.bbs-status{text-transform:uppercase;border-radius:4px;margin-left:auto;padding:2px 6px;font-size:11px;font-weight:700}.bbs-status.ok{color:#389e0d;background:#f6ffed}.bbs-status.warn{color:#d48806;background:#fffbe6}.bbs-status.error{color:#cf1322;background:#fff2f0}.bbs-status.unknown{color:var(--text-mute)}.layer-dot{border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.layer-dot.ok{background:#52c41a}.layer-dot.warn{background:#faad14}.layer-dot.error{background:#ff4d4f}.rebar-status-list{margin:0 0 12px;padding:0;list-style:none}.rebar-status-list li{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 0;display:flex}.rebar-status-list li.on{background:var(--accent-soft);border-radius:6px;margin:0 -8px;padding-left:8px;padding-right:8px}.rebar-status-list em{color:var(--text-mute);flex:100%;font-size:11px;font-style:normal}.bbs-card-top{align-items:center;gap:10px;display:flex}.bbs-card-top strong{font-size:13px;display:block}.bbs-card-top em{color:var(--text-mute);font-size:11px;font-style:normal}.bbs-shape{background:#f5f8fc;border-radius:6px;flex-shrink:0;width:56px;height:34px}.bbs-meta{color:var(--text-dim);justify-content:space-between;margin-top:8px;font-size:12px;display:flex}.bbs-cut{color:var(--text);margin-top:6px;font-size:12px}.bbs-cut b{color:#0958d9;font-size:14px}.bbs-dims{color:var(--text-mute);margin:6px 0 0;padding-left:16px;font-size:11px}.bbs-formula{color:#389e0d;white-space:normal;margin-top:6px;font-size:10px;display:block}.module-canvas{flex:1;min-height:min(62vh,720px)}:is(.center-pane-body:has(>.bridge-viewport),.center-pane-body:has(>.model-fill-viewport),.center-pane-body:has(>.building-viewport)){flex-direction:column;height:100%;min-height:0;padding:0;overflow:hidden;display:flex!important}.center-pane-body>.bridge-viewport,.center-pane-body>.model-fill-viewport,.center-pane-body>.building-viewport{flex:1;height:100%;min-height:0}.center-viewport>.viewer,.building-viewport>.viewer{flex:1;min-height:0}:is(.center-pane-body:has(>.module-center),.center-pane-body:has(>.viewport.module-center)){grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(180px,220px) minmax(0,1fr) minmax(200px,260px);height:100%;min-height:0;padding:0;overflow:hidden;display:grid!important}:is(.center-pane-body:has(>.module-center)>.panel,.center-pane-body:has(>.module-center)>.data-tabs,.center-pane-body:has(>.viewport.module-center)>.panel,.center-pane-body:has(>.viewport.module-center)>.data-tabs){border:none;border-right:1px solid var(--border,#e2e7ef);border-radius:0;min-height:0;overflow:auto}:is(.center-pane-body:has(>.module-center)>.data-tabs,.center-pane-body:has(>.viewport.module-center)>.data-tabs){border-right:none;border-left:1px solid var(--border,#e2e7ef)}:is(.center-pane-body:has(>.module-center)>.viewport,.center-pane-body:has(>.viewport.module-center)>.viewport),:is(.center-pane-body:has(>.module-center) .module-canvas,.center-pane-body:has(>.viewport.module-center) .module-canvas){height:100%;min-height:0}.bridge-viewport,.building-viewport,.model-fill-viewport{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.bridge-canvas-fill,.model-canvas-fill{flex:1;height:100%;min-height:0;position:relative}.bridge-canvas-fill canvas,.model-canvas-fill canvas{display:block;width:100%!important;height:100%!important}.scene-scope-bar{border-bottom:1px solid var(--border-soft);flex-shrink:0}.scene-scope-bar .tiny-note{margin:0;font-style:normal}.geo-tag{pointer-events:none;color:#f8fafc;letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172ad1;border:1px solid #ffffff1f;border-radius:6px;max-width:140px;padding:3px 9px;font-size:11px;font-weight:500;line-height:1.35;overflow:hidden;box-shadow:0 4px 14px #0f172a47}.geo-tag.on{background:#0e7490f0;border-color:#7dd3fc73;font-weight:650}.side-h3{margin:0 0 10px;font-size:14px}.risk-list{color:#d48806;margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.55}.risk-list.ok{color:#389e0d}.risk-list li{margin-bottom:4px}.mod-link sup,.menu-btn{display:none}.toast-host{z-index:120;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{color:#fff;background:#1f2a3d;border-radius:10px;min-width:200px;max-width:min(360px,100vw - 32px);padding:10px 14px;font-size:13px;box-shadow:0 10px 28px #0f1b2d38}.toast-success{background:#237804}.toast-error{background:#cf1322}.toast-warn{background:#d48806}@media (width<=900px){.app-sider{display:none}.menu-btn{display:inline-flex}.topbar-title em{display:none}.gate-brand-corner{max-width:calc(100% - 32px);position:absolute;top:16px;left:16px;right:16px}.gate-page{padding-top:88px;padding-bottom:28px}.gate-main{grid-template-columns:1fr;padding-top:0}.gate-main--portal{gap:28px}.gate-main--portal .gate-card--glass{margin-top:0}.gate-notes{grid-template-columns:1fr}.gate-foot{padding-top:20px}.gate-foot-inner{padding:22px 16px calc(18px + env(safe-area-inset-bottom,0px))}.gate-foot-grid{grid-template-columns:1fr;gap:16px}.gate-foot-trail{align-items:flex-end;width:100%}.gate-foot-accent{font-size:15px}.gate-title{font-size:inherit}.gate-title-row{display:block}.gate-segment--hero{max-width:100%}.gate-hero-action{max-width:none}.gate-hero-stage{grid-template-columns:1fr;gap:12px}.gate-hero-stage .gate-hero-3d{align-self:flex-end;width:min(220px,62vw);height:168px}.gate-title-cn-main,.gate-title-cn-sub{white-space:normal}.gate-title-en{font-size:clamp(34px,9vw,48px)}.gate-foot-spec{font-size:11px}.gate-alt-login-grid{grid-template-columns:1fr}.gate-segment{width:100%;max-width:360px;display:flex}.gate-segment--switch button{flex:1;min-width:0;padding:15px 20px;font-size:17px}.gate-steps{grid-template-columns:1fr}.app-main{grid-template-rows:auto minmax(420px,1fr) auto;grid-template-columns:1fr;gap:10px;padding:10px}.panel{border-right:none;max-height:32vh}.data-tabs{border-left:none;max-height:36vh}}.mep-kpi-row{flex-shrink:0;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px;padding:0 0 8px;display:grid}.mep-kpi{border:1px solid var(--border-soft);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f7faff 100%);border-radius:8px;padding:8px 10px}.mep-kpi em{color:var(--text-mute);margin-bottom:2px;font-size:11px;font-style:normal;display:block}.mep-kpi strong{font-size:15px;font-family:var(--font-cn);color:var(--text);letter-spacing:-.02em;display:block}.mep-kpi.hero{background:linear-gradient(#eef5ff 0%,#e3efff 100%);border-color:#c6ddff}.mep-kpi.hero strong{color:#0958d9;font-size:22px}.mep-kpi.hero span{color:#389e0d;margin-top:2px;font-size:11px;display:block}.mep-flow{flex-shrink:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:8px;display:grid}.mep-flow-step{text-align:left;border:1px solid var(--border-soft);cursor:pointer;color:inherit;background:#fff;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.mep-flow-step em{color:var(--text-mute);font-size:10px;font-style:normal;font-family:var(--font-cn)}.mep-flow-step strong{font-size:13px}.mep-flow-step span{color:var(--text-mute);font-size:11px}.mep-flow-step.on{background:linear-gradient(#f0f7ff 0%,#e6f0ff 100%);border-color:#91caff;box-shadow:inset 0 0 0 1px #bae0ff}.mep-coil-bar{background:#e8eef5;border-radius:999px;height:8px;margin:8px 0 6px;overflow:hidden}.mep-coil-fill{border-radius:inherit;background:linear-gradient(90deg,#69b1ff,#1677ff);height:100%}.mep-coil-fill.warn{background:linear-gradient(90deg,#ffc069,#d48806)}.mep-coil-fill.hot{background:linear-gradient(90deg,#ff9c6e,#cf1322)}.mep-reel-label.warn{background:#fff7e6f2;border-color:#ffd591}.mep-reel-label.critical{background:#fff1f0f2;border-color:#ffa39e}.mep-analytic{border:1px solid var(--border-soft);background:#fff;border-radius:8px;flex-shrink:0;max-height:200px;margin-bottom:4px;padding:8px 10px;overflow:auto}.mep-analytic-split{grid-template-columns:minmax(180px,1fr) minmax(160px,.9fr);align-items:start;gap:12px;display:grid}.mep-bars{flex-direction:column;gap:6px;display:flex}.mep-bar-row{grid-template-columns:minmax(72px,110px) 1fr 64px;align-items:center;gap:6px;font-size:11px;display:grid}.mep-bar-row span{text-overflow:ellipsis;white-space:nowrap;color:var(--text-mute);overflow:hidden}.mep-bar-row em{text-align:right;font-style:normal;font-family:var(--font-cn)}.mep-bar-track{background:#e8eef5;border-radius:999px;height:8px;overflow:hidden}.mep-bar-fill{border-radius:inherit;background:linear-gradient(90deg,#69b1ff,#1677ff);min-width:2px;height:100%}.mep-bar-fill.teal{background:linear-gradient(90deg,#5cdbd3,#08979c)}.mep-cap-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.app-main:has(.mep-shell){grid-template-columns:250px minmax(0,1fr) 270px}@media (width<=1280px){.app-main:has(.mep-shell){grid-template-columns:220px minmax(0,1fr) 240px}.mep-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.mep-analytic-split{grid-template-columns:1fr}}@media (width<=980px){.app-main:has(.mep-shell){grid-template-columns:1fr}}.mep-doc-head{z-index:2;background:linear-gradient(#f7f9fc 0% 85%,#0000);flex-direction:column;flex-shrink:0;gap:8px;margin-bottom:8px;padding-bottom:4px;display:flex;position:sticky;top:0}.mep-filter-bar{flex-wrap:wrap;gap:8px;display:flex}.mep-search{border:1px solid var(--border-soft);border-radius:6px;flex:1;min-width:180px;padding:6px 10px;font-size:12px}.mep-status-filter{border:1px solid var(--border-soft);background:#fff;border-radius:6px;padding:6px 8px;font-size:12px}.mep-actions{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.mep-act-sep{background:var(--border-soft);width:1px;height:18px;margin:0 4px}.mep-actions .tb.primary{color:#fff;background:#1677ff;border-color:#1677ff}.mep-actions .tb.danger{color:#cf1322;border-color:#ffa39e}.mep-actions .tb.danger:hover{background:#fff1f0}.mep-doc-title{margin:0;font-size:14px;font-weight:700}.mep-doc-title-row{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.mep-doc-meta{color:var(--text-mute);font-size:11px}.mep-table-wrap{border:1px solid var(--border-soft);background:#fff;border-radius:8px;flex:1;min-height:240px;padding:8px 10px 12px;overflow:auto}.mep-table{white-space:nowrap;font-size:11px}.mep-table thead th{z-index:1;box-shadow:inset 0 -1px 0 var(--border-soft);background:#fafbfc;position:sticky;top:0}.mep-table th,.mep-table td{padding:6px}.mep-table td[title]{text-overflow:ellipsis;max-width:160px;overflow:hidden}.mep-row-on{background:#e8f3ff!important}.mep-status{border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600;display:inline-block}.mep-status.ok{color:#389e0d;background:#f6ffed}.mep-status.warn{color:#d46b08;background:#fff7e6}.mep-status.mute{color:#8c8c8c;background:#f5f5f5}.mep-canvas{border:1px solid var(--border-soft);border-radius:8px;height:320px;min-height:260px;overflow:hidden}.mep-canvas-dark{background:#070b14;border-color:#1e293b}.mep-canvas-hint{color:var(--text-secondary);margin:0 0 8px}.mep-node-tip{color:#e2e8f0;pointer-events:none;background:#0f172af0;border:1px solid #38bdf873;border-radius:8px;flex-direction:column;gap:3px;min-width:148px;max-width:220px;padding:8px 10px;display:flex;box-shadow:0 8px 24px #00000059}.mep-node-tip.light{color:#334155;background:#fffffff5;border:1px solid #91caff;box-shadow:0 6px 18px #0f172a1f}.mep-node-tip.light strong{color:#0f172a}.mep-node-tip.light span{color:#0958d9}.mep-node-tip.light em{color:#64748b}.mep-node-tip strong{color:#f8fafc;font-size:12px;font-weight:650}.mep-node-tip span{color:#67e8f9;font-variant-numeric:tabular-nums;font-size:11px}.mep-node-tip em{color:#94a3b8;font-size:10px;font-style:normal}.mep-end-tag{color:#ecfeff;pointer-events:none;white-space:nowrap;background:#0891b2eb;border:1px solid #67e8f980;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:3px 8px;display:flex}.mep-end-tag.light{color:#0958d9;background:#fff;border:1px solid #91caff;box-shadow:0 2px 8px #0f172a1a}.mep-lane-label{pointer-events:none;white-space:nowrap;background:#fff;border:1px solid #c9d4e4;border-radius:6px;flex-direction:column;gap:2px;min-width:112px;padding:6px 10px;display:flex;box-shadow:0 2px 10px #0f172a1a}.mep-lane-label.on{background:#f0f7ff;border-color:#1677ff;box-shadow:0 2px 12px #1677ff2e}.mep-lane-label strong{color:#0f172a;font-size:13px;font-weight:700;line-height:1.2}.mep-lane-label em{color:#475569;font-variant-numeric:tabular-nums;font-size:12px;font-style:normal}.mep-end-tag.light{color:#0958d9;background:#fff;border:1px solid #91caff;padding:4px 9px;box-shadow:0 2px 8px #0f172a1a}.mep-end-tag.light strong{font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.mep-end-tag em{opacity:.85;font-size:10px;font-style:normal}.mep-node-tip.light{color:#334155;background:#fff;border:1px solid #91caff;min-width:160px;box-shadow:0 6px 18px #0f172a1f}.mep-node-tip.light strong{color:#0f172a;font-size:13px}.mep-node-tip.light span{color:#0958d9;font-size:12px}.mep-node-tip.light em{color:#64748b;font-size:11px}.mep-modal-mask{z-index:80;background:#0f172a73;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.mep-modal{background:#fff;border-radius:12px;width:min(520px,100%);max-height:85vh;padding:16px 18px;overflow:auto;box-shadow:0 16px 48px #0f172a33}.mep-modal h3{margin:0 0 12px;font-size:16px}.mep-form{grid-template-columns:1fr 1fr;gap:8px 10px;display:grid}.mep-form label{color:var(--text-mute);flex-direction:column;gap:4px;font-size:11px;display:flex}.mep-form input{border:1px solid var(--border-soft);color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.mep-modal-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}:is(.module-center:has(.mep-kpi-row),.module-center:has(.mep-center-body),.module-center:has(.mep-scene-stage),.module-center:has(.mep-doc-pane)){flex-direction:column;min-height:0;display:flex;overflow:hidden}.mep-center-body{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 12px 12px;display:flex;overflow:auto}.mep-toolbar-top{flex-shrink:0}.mep-month-input{border:1px solid var(--border-soft);border-radius:6px;padding:4px 8px;font-size:12px}.mep-empty{color:var(--text-mute);text-align:center!important;white-space:normal!important;padding:24px 8px!important}.mep-empty p{margin:0 0 10px}.mep-sort-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.mep-sort-th i{color:#94a3b8;margin-left:2px;font-size:10px;font-style:normal}.mep-sort-th i.on{color:#1677ff}.mep-row-acts{white-space:nowrap}.mep-row-acts .text-btn{margin-right:6px}.mep-row-acts .text-btn.mute{color:#8c8c8c}.mep-cap-panel{border:1px solid var(--border-soft);background:#fff;border-radius:8px;margin-bottom:4px;padding:8px 10px;font-size:12px;line-height:1.45}.mep-cap-panel p{margin:0 0 6px}.mep-cap-meter{background:#e8eef5;border-radius:999px;height:8px;margin-bottom:8px;overflow:hidden}.mep-cap-fill{border-radius:inherit;background:linear-gradient(90deg,#69b1ff,#1677ff);height:100%}.mep-cap-fill.hot{background:linear-gradient(90deg,#ff9c6e,#cf1322)}.mep-cap-list{flex-direction:column;gap:6px;max-height:160px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.mep-cap-list li{border-bottom:1px dashed #e8eef5;flex-direction:column;gap:2px;padding:4px 0;display:flex}.mep-cap-list li:last-child{border-bottom:0}.mep-cap-list span{color:var(--text-mute);font-size:11px}.mep-cap-warn{font-size:12px;color:#cf1322!important}.mep-chip-badge{color:#cf1322;vertical-align:middle;background:#fff1f0;border-radius:999px;margin-left:4px;padding:0 5px;font-size:10px;font-weight:700;line-height:16px;display:inline-block}.mep-chip-badge.hot{color:#fff;background:#cf1322}.mep-chip-badge.soft{color:#d46b08;background:#fff7e6}.tree-cat .mep-chip-badge{margin-left:6px}.mep-reel-label{text-align:center;background:#ffffffeb;border:1px solid #d6e4ff;border-radius:6px;min-width:88px;padding:4px 8px;box-shadow:0 2px 8px #0f172a14}.mep-reel-label strong{color:#334155;white-space:nowrap;font-size:11px;display:block}.mep-reel-label em{color:#64748b;text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:9px;font-style:normal;display:block;overflow:hidden}.mep-reel-label.on{background:#e8f3ff;border-color:#91caff}.mep-reel-label.on strong{color:#0958d9}.mep-form select{border:1px solid var(--border-soft);color:var(--text);background:#fff;border-radius:6px;padding:6px 8px;font-size:13px}.tb.on{color:#0958d9;background:#e8f3ff;border-color:#91caff}.bridge-param-layout{pointer-events:auto;flex:1;grid-template-columns:minmax(260px,300px) 1fr;height:calc(100% - 40px);min-height:0;display:grid;position:relative}.bridge-param-layout.three-col{grid-template-columns:minmax(240px,280px) minmax(0,1fr) minmax(280px,320px)}.bridge-param-layout.three-col.no-left{grid-template-columns:minmax(0,1fr) minmax(280px,320px)}.bridge-param-layout.three-col.no-right{grid-template-columns:minmax(240px,280px) minmax(0,1fr)}.bridge-param-layout.three-col.no-left.no-right,.bridge-param-layout.side-collapsed{grid-template-columns:1fr}.bridge-param-right{border-left:1px solid var(--border-soft,#e5e7eb);background:#f7f9fc;min-height:0;overflow:auto}.infra-palette,.infra-right-inspector,.infra-instance-panel,.infra-left-tabs-panel{flex-direction:column;height:100%;min-height:0;display:flex}.infra-left-tabs-panel{background:#f7f9fc}.infra-left-tabs{flex-shrink:0;margin:10px 10px 0}.infra-left-tabs button{position:relative}.infra-tab-badge{color:#1d4ed8;vertical-align:middle;background:#dbeafe;border-radius:999px;margin-left:5px;padding:1px 5px;font-size:10px;font-style:normal;font-weight:700}.infra-left-tab-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.infra-setup-panel,.infra-setup-scroll{flex-direction:column;height:100%;min-height:0;display:flex}.infra-setup-scroll{flex:1;padding:10px 12px 16px;overflow:auto}.infra-setup-kpi{color:#334155;background:#e8f3ff;border:1px solid #c7dffc;border-radius:8px;justify-content:space-between;align-items:baseline;margin:8px 0;padding:8px 10px;font-size:12px;display:flex}.infra-setup-kpi b{color:#0f4db8;font-size:14px}.infra-setup-import-standard{color:#fff;cursor:pointer;background:linear-gradient(#2563eb,#1d4ed8);border:0;border-radius:12px;width:100%;margin-top:4px;margin-bottom:10px;padding:14px 12px;font-size:14px;font-weight:700;line-height:1.4;box-shadow:0 8px 20px #2563eb40}.infra-setup-import-standard:hover{filter:brightness(1.06)}.infra-setup-empty-callout{color:#334155;background:linear-gradient(#eff6ff,#f8fafc);border:1px solid #bfdbfe;border-radius:10px;margin-bottom:10px;padding:12px;font-size:12px;line-height:1.55}.infra-setup-empty-callout p{margin:0 0 6px}.infra-setup-advanced{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;margin-top:12px;padding:10px 12px}.infra-setup-advanced summary{cursor:pointer;color:#64748b;font-size:12px;font-weight:600}.infra-setup-confirm.secondary{color:#2563eb;box-shadow:none;background:#fff;border:1px solid #93c5fd}.infra-setup-confirm{color:#fff;cursor:pointer;background:linear-gradient(#3b82f6,#2563eb);border:0;border-radius:10px;width:100%;margin-top:12px;padding:10px 12px;font-size:13px;font-weight:700}.infra-setup-confirm:hover{filter:brightness(1.05)}.infra-setup-demo-pack{color:#047857;cursor:pointer;background:linear-gradient(#ecfdf5,#d1fae5);border:1px solid #86efac;border-radius:10px;width:100%;margin-top:8px;padding:10px 12px;font-size:13px;font-weight:700}.infra-setup-demo-pack:hover{filter:brightness(1.03)}.infra-loss-dashboard.empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.infra-workspace-root .infra-geo-graph-toolbar .tb.primary{background:var(--accent,#2572e5);color:#fff;border-color:#0000}.infra-setup-import-ledger{cursor:pointer;background:#f8fafce6;border:1px dashed #64748b8c;border-radius:10px;flex-direction:column;gap:6px;margin-top:10px;padding:10px;font-size:12px;display:flex}.infra-setup-import-ledger input[type=file]{font-size:11px}.infra-setup-import-label{color:#0f172a;font-weight:700}.infra-setup-import-ledger em{color:#64748b;font-size:11px;font-style:normal}.infra-side-tabs button.locked{opacity:.45;cursor:not-allowed}.infra-instance-panel .infra-instance-list{flex:1;min-height:0;padding:4px 8px 8px;overflow:auto}.infra-instance-panel .member-row.on{color:#0f4db8;background:#eef6ff;border-color:#5b9cff}.infra-palette-head{background:#fff;border-bottom:1px solid #e5e7eb;flex-direction:column;flex-shrink:0;gap:2px;padding:10px 12px 8px;display:flex}.infra-palette-head strong{color:#0f172a;font-size:13px}.infra-palette-head em{color:#94a3b8;font-size:11px;font-style:normal}.infra-palette-scroll{flex:1;min-height:0;padding:8px 10px 16px;overflow:auto}.infra-type-tile.on{color:#0f4db8;background:#eef6ff;border-color:#5b9cff}.infra-right-inspector{padding-bottom:16px;overflow:auto}.infra-right-inspector .infra-param-group,.infra-right-inspector .infra-param-boq{margin:0 10px 10px}.infra-side-tabs{background:#fff;border:1px solid #d8dee8;border-radius:10px;flex-shrink:0;gap:0;margin:0 10px 8px;display:flex;overflow:hidden}.infra-side-tabs button+button{border-left:1px solid #e5e7eb}.infra-tab-panel{padding-bottom:8px}.infra-slider-field{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.infra-slider-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.infra-slider-head em{color:#334155;font-size:12px;font-style:normal;font-weight:600}.infra-slider-head em i{color:#94a3b8;margin-left:4px;font-size:11px;font-style:normal;font-weight:500}.infra-slider-head input[type=number]{text-align:right;color:#0f172a;background:#fff;border:1px solid #d8dee8;border-radius:6px;width:72px;padding:3px 6px;font-size:12px}.infra-slider-field input[type=range]{accent-color:#3b82f6;cursor:pointer;width:100%}.infra-type-badge{color:#64748b;margin-left:6px;font-size:11px;font-style:normal;font-weight:500}.infra-super-mini{border-top:1px dashed #e5e7eb;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}.infra-super-mini select{background:#fff;border:1px solid #d8dee8;border-radius:6px;padding:4px 8px;font-size:12px}.infra-kpi-list{flex-direction:column;gap:6px;margin:0 0 10px;padding:0;list-style:none;display:flex}.infra-kpi-list li{background:#fff;border:1px solid #e8edf5;border-radius:8px;justify-content:space-between;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.infra-kpi-list li em{color:#64748b;font-size:12px;font-style:normal}.infra-kpi-list li b{color:#0f172a;font-size:13px}.infra-kpi-list li b i{color:#94a3b8;margin-left:2px;font-size:11px;font-style:normal;font-weight:500}.infra-kpi-list li.total{background:#e8f3ff;border-color:#c7dffc}.infra-kpi-list li.total b{color:#0f4db8}.tb.danger{color:#b42318;border-color:#f3c1c1}.tb.danger:hover:not(:disabled){background:#fff1f0}.tb:disabled{opacity:.45;cursor:not-allowed}.bridge-viewport.canvas-first .bridge-param-layout{height:calc(100% - 36px)}.bridge-param-side{border-right:1px solid var(--border-soft,#e5e7eb);background:#f7f9fc;min-height:0;overflow:auto}.infra-stage{min-width:0;min-height:0;position:relative}.infra-nav-toolbar{gap:8px}.infra-nav-title{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:13px;font-weight:700;overflow:hidden}.app-main.workspace-main>.infra-workspace-root{flex:1;min-height:0}.infra-workspace-root{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(180px,220px) minmax(0,1fr) minmax(200px,260px);height:100%;min-height:0;display:grid;overflow:hidden}.infra-workspace-root>aside.panel.module-side,.infra-workspace-root>aside.data-tabs.module-side{border-radius:0;min-height:0;overflow:hidden}.infra-workspace-root>aside.panel.module-side{border-right:1px solid var(--border,#e2e7ef);background:#f7f9fc}.infra-workspace-root>aside.data-tabs.module-side{border-left:1px solid var(--border,#e2e7ef)}.infra-workspace-root>.viewport.module-center{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.infra-workspace-root .viewport.viewer.module-center{grid-template-rows:unset;flex-direction:column;display:flex}.infra-workspace-root .module-center .module-canvas.infra-stage{flex:1;height:auto;min-height:0}.infra-workflow-bar{border-bottom:1px solid var(--border-soft,#e5e7eb);box-sizing:border-box;background:linear-gradient(#fff 0%,#f8fafc 100%);flex-shrink:0;grid-template-rows:auto auto;grid-template-columns:minmax(0,max-content) minmax(420px,1fr) minmax(0,max-content);align-items:center;gap:10px 16px;width:100%;padding:8px 12px;display:grid}.infra-workflow-kpi{color:#64748b;white-space:nowrap;background:#eef2f7;border-radius:999px;padding:3px 8px;font-size:11px}.infra-workflow-steps{flex-wrap:nowrap;grid-area:1/2;justify-content:center;gap:6px;width:100%;min-width:0;display:flex;overflow-x:auto}.infra-workflow-steps .iws:hover{border-color:#94a3b8}.infra-workflow-steps .iws.on{color:#1d4ed8;background:#eff6ff;border-color:#2563eb;box-shadow:0 0 0 1px #2563eb26}.infra-workflow-steps .iws.on .iws-idx{color:#fff;background:#2563eb}.infra-workflow-sub{background:#eef2f7;border-radius:10px;grid-area:2/2;justify-self:center;gap:4px;padding:3px;display:flex}.iws-act{color:#475569;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:8px;padding:5px 10px;font-size:12px}.iws-act.on{color:#1d4ed8;background:#eff6ff;border-color:#2563eb}.infra-manual-lay summary{cursor:pointer;color:#64748b;font-weight:600}.ivt-sep{background:#d8dee8;align-self:stretch;width:1px;min-height:18px;margin:0 2px}.ivt-sep.nav{align-self:center;height:18px;margin:0 4px}.infra-view-tools{z-index:5;pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex;position:absolute;top:12px;left:12px;right:12px}.infra-view-tools-main,.infra-view-tools-meta{pointer-events:auto;background:#ffffffeb;border:1px solid #d8dee8;border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;display:flex;box-shadow:0 6px 18px #0f172a14}.ivt{color:#334155;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;line-height:1.2}.ivt:hover:not(:disabled){color:#0f4db8;background:#f0f7ff;border-color:#5b9cff}.ivt:disabled{opacity:.4;cursor:not-allowed}.ivt.danger{color:#b42318;border-color:#f3c1c1}.ivt.danger:hover:not(:disabled){background:#fff1f0;border-color:#f3a5a5}.ivt.ghost{color:#64748b;background:0 0;border-color:#0000;font-weight:500}.ivt.ghost:hover:not(:disabled){color:#334155;background:#f1f5f9;border-color:#0000}.ivt-chip{color:#64748b;background:#f1f5f9;border-radius:999px;align-items:baseline;gap:6px;padding:4px 8px;font-size:11px;display:inline-flex}.ivt-chip.on{color:#0f4db8;background:#e8f3ff;font-weight:600}.ivt-chip em{color:#94a3b8;font-style:normal;font-weight:500}.infra-float-dock{z-index:4;pointer-events:none;flex-direction:column;align-items:stretch;width:min(300px,38vw);max-width:320px;display:flex;position:absolute;inset:0 0 0 auto}.infra-float-dock.compact{width:auto;max-width:min(280px,100% - 24px);top:auto;bottom:12px;right:12px}.infra-float-card{pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f8fafcf0;border:1px solid #94a3b873;border-radius:12px;width:100%;max-height:none;padding:10px 12px;overflow:hidden;box-shadow:0 10px 28px #0f172a1f}.infra-float-card.flush{background:#f8fafcf7;border:none;border-left:1px solid #94a3b873;border-radius:0;flex-direction:column;flex:1;height:100%;min-height:0;padding:0;display:flex;box-shadow:-6px 0 20px #0f172a14}.infra-float-card.flush .infra-float-head{border-bottom:1px solid #e2e8f0;flex-shrink:0;margin:0;padding:10px 12px}.infra-icon-row{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.infra-icon-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;display:inline-flex}.infra-icon-btn:hover{color:#0958d9;background:#e6f4ff;border-color:#91caff}.infra-icon-btn.danger{color:#cf1322}.infra-icon-btn.danger:hover{color:#a8071a;background:#fff1f0;border-color:#ffa39e}.infra-float-boq-detail{border-top:1px solid #e2e8f0;margin-top:12px;padding-top:10px}.infra-float-boq-detail strong{color:#1e293b;margin-bottom:6px;font-size:12px;display:block}.infra-float-boq-detail ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.infra-float-boq-detail li{color:#475569;justify-content:space-between;gap:8px;font-size:11px;display:flex}.infra-float-boq-detail li em{font-variant-numeric:tabular-nums;color:#0f172a;font-style:normal}.infra-float-boq-detail p{color:#94a3b8;margin:6px 0 0;font-size:10px;line-height:1.4}.infra-float-scroll{flex:1;min-height:0;padding:10px 12px 12px;overflow:auto}.infra-float-card.flush .infra-float-boq{background:#f1f5f9;border-top:1px solid #e2e8f0;flex-shrink:0;margin:0;padding:10px 12px}.infra-float-chip{pointer-events:auto;cursor:pointer;text-align:left;background:#f8fafcf0;border:1px solid #94a3b873;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;display:flex;box-shadow:0 6px 16px #0f172a1a}.infra-float-chip strong{color:#0f172a;font-size:12px}.infra-float-chip em{color:#64748b;font-size:11px;font-style:normal}.infra-float-card.mute{width:auto;max-width:220px}.infra-float-card.mute strong{font-size:12px;display:block}.infra-float-card.mute em{color:#64748b;margin-top:2px;font-size:11px;font-style:normal;display:block}.infra-float-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.infra-float-head strong{font-size:13px;display:block}.infra-float-head em{color:#64748b;margin-top:2px;font-size:11px;font-style:normal;display:block}.infra-float-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;display:grid}.infra-float-boq{color:#475569;border-top:1px solid #e2e8f0;flex-wrap:wrap;gap:10px 14px;margin-top:8px;padding-top:8px;font-size:12px;display:flex}.infra-float-boq b{color:#0f172a;font-variant-numeric:tabular-nums}@media (width<=720px){.infra-float-fields{grid-template-columns:1fr}.infra-float-dock:not(.compact){width:min(280px,46vw)}}.infra-param-panel{padding:10px 12px 16px;font-size:12px}.infra-param-panel.compact{padding:8px 10px 14px}.infra-param-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.infra-param-head strong{font-size:13px;display:block}.infra-param-head em{color:var(--text-mute,#64748b);margin-top:2px;font-size:11px;font-style:normal;line-height:1.4;display:block}.infra-param-summary{color:#334155;background:#eef3f9;border-radius:8px;gap:3px;margin-bottom:10px;padding:8px 10px;font-size:11px;line-height:1.45;display:grid}.infra-param-group{margin-bottom:10px}.infra-param-group h4,.infra-param-boq h4{color:#1e293b;margin:0 0 6px;font-size:12px;font-weight:650}.infra-param-fields{grid-template-columns:1fr 1fr;gap:6px 8px;display:grid}.infra-param-field{flex-direction:column;gap:3px;min-width:0;display:flex}.infra-param-field span{color:#64748b;font-size:11px}.infra-param-field span i{color:#94a3b8;margin-left:4px;font-style:normal}.infra-param-field input,.infra-param-field select{border:1px solid var(--border-soft,#d8dee8);color:#0f172a;background:#fff;border-radius:6px;width:100%;height:28px;padding:0 8px;font-size:12px}.infra-param-field input:focus,.infra-param-field select:focus{border-color:#91caff;outline:none;box-shadow:0 0 0 2px #1677ff1f}.infra-param-field.toggle{flex-direction:row;justify-content:space-between;align-items:center;gap:8px;min-height:28px}.infra-param-field.toggle input[type=checkbox]{border-radius:3px;width:16px;height:16px;padding:0}.infra-param-boq{border-top:1px solid var(--border-soft,#e5e7eb);margin-top:8px;padding-top:8px}.infra-param-boq ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.infra-param-boq li b{font-variant-numeric:tabular-nums}.infra-check-list{color:#475569;margin:0;padding-left:16px;font-size:12px;line-height:1.55}.infra-check-list .warn{color:#d48806}@media (width<=1100px){.bridge-param-layout{grid-template-columns:1fr}.bridge-param-side:not(.drawer){border-right:none;border-bottom:1px solid var(--border-soft,#e5e7eb);max-height:220px}}.infra-param-templates,.infra-param-presets .chip-row,.infra-param-viewmode{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.infra-param-label{color:#64748b;margin-bottom:4px;font-size:11px;display:block}.infra-param-presets{margin-bottom:8px}.infra-station-table-wrap{border:1px solid var(--border-soft,#e5e7eb);background:#fff;border-radius:8px;max-height:220px;overflow:auto}.infra-station-table{border-collapse:collapse;width:100%;font-size:11px}.infra-station-table th,.infra-station-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #eef2f7;padding:4px 6px}.infra-station-table th{z-index:1;background:#f1f5f9;font-weight:650;position:sticky;top:0}.infra-station-table tr{cursor:pointer}.infra-station-table tr.on{background:#e8f3ff}.infra-station-table input{border:1px solid #d8dee8;border-radius:4px;width:64px;height:24px;padding:0 4px;font-size:11px}.infra-add-group{margin-bottom:10px}.infra-add-group .chip-row{flex-wrap:wrap;gap:6px;display:flex}.infra-add-group .infra-param-label em{color:#94a3b8;margin-left:6px;font-size:10px;font-style:normal}.infra-palette-section{max-height:min(52vh,520px);padding-right:2px;overflow:auto}.infra-type-icon-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:6px;display:grid}.infra-type-tile{color:#334155;cursor:pointer;background:linear-gradient(#f8fafc 0%,#eef3f8 100%);border:1px solid #d8dee8;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:8px 6px 7px;transition:border-color .12s,background .12s,transform .1s;display:flex}.infra-type-tile:hover{color:#0f4db8;background:#f0f7ff;border-color:#5b9cff;transform:translateY(-1px)}.infra-type-tile:active{transform:translateY(0)}.infra-type-tile-icon{color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:10px;place-items:center;width:44px;height:44px;display:grid}.infra-type-tile:hover .infra-type-tile-icon{color:#1677ff;border-color:#93c5fd}.infra-type-tile-name{text-align:center;font-size:11px;font-weight:600;line-height:1.25}.infra-type-icon-svg{display:block}.infra-instance-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.infra-instance-list>li{min-height:0;margin:0;padding:0}.infra-instance-list .infra-member-row,.infra-instance-list .member-row{text-align:left;cursor:pointer;width:100%;min-height:0;font:inherit;color:#334155;background:#fff;border:1px solid #e5e7eb;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:1px 6px;padding:4px 6px;font-size:12px;display:grid}.infra-instance-list .infra-member-row .infra-idx,.infra-instance-list .member-row .infra-idx{grid-row:1/span 2;align-self:center}.infra-instance-list .infra-member-name,.infra-instance-list .member-row>span:not(.infra-idx){text-overflow:ellipsis;white-space:nowrap;grid-column:2;min-width:0;font-weight:600;line-height:1.25;overflow:hidden}.infra-instance-list .infra-member-meta,.infra-instance-list .member-row em{text-overflow:ellipsis;white-space:nowrap;color:#94a3b8;grid-column:2;min-width:0;font-size:10px;font-style:normal;line-height:1.2;overflow:hidden}.infra-instance-list .infra-member-row:hover,.infra-instance-list .member-row:hover{background:#f8fafc;border-color:#b6c9e8}.infra-instance-panel .infra-member-row.on,.infra-instance-panel .member-row.on{color:#0f4db8;background:#eef6ff;border-color:#5b9cff}.infra-idx{color:#334155;font-variant-numeric:tabular-nums;text-align:center;background:#e8eef6;border-radius:6px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:300;line-height:1;display:inline-flex}.infra-project-boq{background:#eef3f9;border-top:none;border-radius:8px;margin-top:12px;padding:10px}.explorer-project .member-row{text-align:left;grid-template-rows:auto auto;grid-template-columns:28px 1fr;align-items:center;column-gap:8px;width:100%;display:grid}.explorer-project .member-row .infra-idx{grid-row:1/span 2}.explorer-project .member-row em{color:#94a3b8;grid-column:2;font-size:10px;font-style:normal}.infra-station-table .ta-c{text-align:center}.infra-project-name{color:#0f172a;background:0 0;border:none;width:100%;margin:0 0 2px;padding:0;font-size:13px;font-weight:650}.infra-project-name:focus{outline:none;box-shadow:inset 0 -1px #91caff}.infra-toolbar-row{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.infra-toolbar-row.tight{margin-bottom:0}.infra-toolbar-row .topbar-btn.danger,.topbar-btn.danger{color:#b42318;background:#fef3f2;border-color:#fecdca}.infra-section-toggle{cursor:pointer;width:100%;color:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;margin-bottom:6px;padding:0;display:flex}.infra-section-toggle span{color:#94a3b8;font-size:11px}.infra-type-badge{color:#0958d9;background:#e8f3ff;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px;font-style:normal;font-weight:500;display:inline-block}.infra-item-note{color:#94a3b8;font-size:10px;font-style:normal}.geo-tag.soft{opacity:.9;color:#334155;background:#f8fafce6;border:1px solid #94a3b873;font-size:10px}.infra-track{width:100%;height:100%;position:absolute;inset:0}.infra-track.on{visibility:visible;pointer-events:auto;z-index:1}.infra-track.on .bim-viewer-root{flex:1;min-height:0}.infra-track.off{visibility:hidden;pointer-events:none;z-index:0}.bim-viewer-root{background:#dce6f0;width:100%;height:100%;min-height:320px;position:relative}.bim-viewer-canvas{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.bim-viewer-overlay{z-index:3;color:#0f172a;text-align:center;pointer-events:none;background:#ffffffeb;border:1px solid #d8dee8;border-radius:10px;padding:12px 16px;font-size:13px;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.bim-viewer-overlay.soft{color:#475569;font-size:12px;top:auto;bottom:56px;transform:translate(-50%)}.bim-viewer-overlay.error{color:#a8071a;max-width:min(420px,90%)}.bim-viewer-overlay.empty{pointer-events:none;max-width:min(420px,92%)}.bim-viewer-overlay.empty em{color:#334155;margin-top:8px;font-size:12px;font-style:normal;display:block}.bim-viewer-overlay.empty em.mute{color:#64748b;font-size:11px}.bim-viewer-overlay.error em{color:#cf1322;word-break:break-all;margin-top:6px;font-size:12px;font-style:normal;display:block}.bim-viewer-hint{z-index:2;color:#f8fafc;pointer-events:none;background:#0f172a9e;border-radius:8px;padding:6px 10px;font-size:11px;position:absolute;bottom:12px;left:12px}.bim-pick-card .bim-meta-grid{grid-template-columns:72px 1fr;gap:4px 8px;margin-bottom:10px;font-size:12px;display:grid}.bim-pick-card .bim-meta-grid span{color:#64748b}.bim-pick-card .bim-meta-grid em{color:#0f172a;word-break:break-all;font-style:normal}.bim-pick-card .bim-meta-grid em.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.bim-map-hit,.bim-map-miss{border-radius:8px;margin-bottom:10px;padding:8px 10px;font-size:12px}.bim-map-hit{background:#f0f9ff;border:1px solid #bae0ff}.bim-map-hit p{color:#0958d9;margin:4px 0;font-weight:600}.bim-map-hit p i{color:#64748b;margin-left:8px;font-size:11px;font-style:normal;font-weight:400}.bim-map-hit em,.bim-map-miss em{color:#64748b;margin-top:4px;font-size:11px;font-style:normal;display:block}.bim-map-miss{background:#fff7e6;border:1px solid #ffd591}.bim-pick-actions{gap:8px;margin-top:10px;display:flex}.infra-geo-graph{background:linear-gradient(#eef2f7 0%,#e2e8f0 100%);flex-direction:column;width:100%;height:100%;min-height:320px;display:flex}.infra-geo-graph-body{flex:1;min-height:0;display:flex}.infra-geo-palette,.infra-geo-inspector{background:#fffffff0;border-right:1px solid #94a3b873;flex-direction:column;flex:0 0 220px;gap:8px;padding:10px;font-size:12px;display:flex;overflow:auto}.infra-geo-inspector{border-left:1px solid #94a3b873;border-right:0;flex:0 0 280px}.infra-geo-inspector-slot{background:0 0;padding:0}.infra-geo-inspector-slot .infra-geo-inspector{border-left:none;flex:1;width:100%;max-width:none;height:100%}.infra-geo-palette header,.infra-geo-inspector header{color:#0f172a;font-size:13px;font-weight:700}.infra-geo-palette-hint{color:#64748b;margin:0;font-size:11px;line-height:1.4}.infra-geo-palette-group h4{color:#475569;text-transform:uppercase;letter-spacing:.04em;border-left:3px solid #64748b;margin:8px 0 4px;padding-left:6px;font-size:11px}.infra-geo-palette-group ul{margin:0;padding:0;list-style:none}.infra-geo-palette-item{cursor:pointer;-webkit-user-select:none;user-select:none;font:inherit;color:inherit;background:#f8fafc;border:1px solid #cbd5e1;border-left-width:3px;border-radius:8px;justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px;padding:6px 8px;font-size:12px;display:flex}.infra-geo-palette-item.large{font-weight:600}.infra-geo-palette-item .badge{color:#2563eb;background:#2563eb1f;border-radius:4px;padding:1px 5px;font-size:10px;font-style:normal}.infra-geo-palette-item:hover{background:#eff6ff;border-color:#2563eb}.infra-geo-chain{margin:0;padding:0;list-style:none}.infra-geo-chain li{margin-bottom:4px}.infra-geo-chain li.on button{background:#dbeafe;border-color:#2563eb}.infra-geo-chain button{text-align:left;width:100%;font:inherit;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:6px 8px;font-size:12px}.infra-geo-selected{border-top:1px solid #e2e8f0;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px;display:flex}.infra-geo-selected>strong{color:#0f172a;font-size:14px;line-height:1.3}.infra-geo-chain-index{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;width:fit-content;padding:1px 7px;font-size:10px;display:inline-block}.infra-geo-sub-caption{color:#64748b;font-size:11px;line-height:1.4;display:block}.infra-geo-ledger-var{border-top:1px solid #e2e8f0;margin-top:12px;padding-top:10px}.infra-geo-ledger-var h4{color:#334155;letter-spacing:.02em;margin:0 0 8px;font-size:11px;font-weight:700}.infra-geo-ledger-scroll{background:#fff;border:1px solid #e2e8f0;border-radius:8px;max-height:168px;overflow:auto}.infra-geo-ledger-var table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11px}.infra-geo-ledger-var thead{z-index:1;background:#f8fafc;position:sticky;top:0}.infra-geo-ledger-var th,.infra-geo-ledger-var td{text-align:right;white-space:nowrap;border-bottom:1px solid #f1f5f9;padding:5px 6px}.infra-geo-ledger-var th{color:#64748b;font-size:10px;font-weight:600}.infra-geo-ledger-var th:first-child,.infra-geo-ledger-var td.member{text-align:left;text-overflow:ellipsis;max-width:72px;overflow:hidden}.infra-geo-ledger-var tbody tr.on{background:#eff6ff}.infra-geo-ledger-var tbody tr.on td.member{color:#1d4ed8;font-weight:600}.infra-geo-ledger-var td.warn{color:#b45309;font-weight:700}.infra-geo-ledger-var td.pos{color:#b45309}.infra-geo-ledger-var td.neg{color:#047857}.infra-geo-graph-canvas{touch-action:none;background-color:#1a1d23;background-image:radial-gradient(circle,#94a3b859 1px,#0000 1px);background-position:0 0;background-size:24px 24px;flex:1;min-height:280px;position:relative;overflow:hidden}.infra-geo-graph-canvas.space-pan,.infra-geo-graph-canvas.panning{cursor:grab}.infra-geo-graph-canvas.panning,.infra-geo-graph-canvas.dragging-node{cursor:grabbing}.infra-geo-graph-world{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.infra-geo-graph-toolbar{background:#ffffffeb;border-bottom:1px solid #94a3b873;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:8px 12px;display:flex}.infra-geo-add{align-items:center;gap:6px;display:inline-flex}.infra-geo-add select{font:inherit;border:1px solid var(--border,#cbd5e1);border-radius:6px;max-width:160px;padding:4px 8px;font-size:12px}.infra-geo-graph-edges{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.infra-geo-edge{fill:none;stroke:#94a3b8;stroke-width:2px;opacity:.9}.infra-geo-node{box-sizing:border-box;cursor:grab;-webkit-user-select:none;user-select:none;z-index:1;background:#f8fafc;border:1px solid #64748ba6;border-radius:10px;flex-direction:column;gap:2px;padding:8px 10px 8px 14px;display:flex;position:absolute;overflow:visible;box-shadow:0 6px 18px #00000059}.infra-geo-node.size-small{border-radius:8px;padding:6px 8px 6px 12px}.infra-geo-node.size-large{min-height:72px}.infra-geo-node.kind-sub{z-index:2;background:#1e293b;border-color:#94a3b859}.infra-geo-node.kind-sub .infra-geo-node-title{color:#f1f5f9;font-size:12px}.infra-geo-node.kind-sub .infra-geo-node-kind{color:var(--node-accent,#94a3b8)}.infra-geo-node.embedded{opacity:.92;border-style:dashed}.infra-geo-node-accent{background:var(--node-accent,#94a3b8);border-radius:4px;width:4px;position:absolute;top:8px;bottom:8px;left:0}.infra-geo-node:active{cursor:grabbing}.infra-geo-node.on{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb40}.infra-geo-node.kind-input{background:#f0fdf4;border-color:#86efac}.infra-geo-node.kind-merge{background:#eff6ff;border-color:#93c5fd}.infra-geo-node-kind{text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:10px}.infra-geo-node-title{color:#0f172a;font-size:13px;font-weight:600}.infra-geo-node-meta{color:#94a3b8;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.infra-geo-graph-canvas.linking{cursor:crosshair}.infra-geo-port{border:2px solid var(--port-color,#94a3b8);width:16px;height:16px;box-shadow:0 0 0 3px var(--port-glow,#94a3b859);cursor:crosshair;z-index:4;touch-action:none;background:#0f172a;border-radius:50%;position:absolute}.infra-geo-port:before{content:"";position:absolute;inset:-10px}.infra-geo-port:hover,.infra-geo-port.linking{background:var(--port-color,#94a3b8);transform:scale(1.2)}.infra-geo-port.snap{background:var(--port-color,#94a3b8);box-shadow:0 0 0 4px var(--port-glow,#94a3b88c), 0 0 12px var(--port-color,#94a3b8);transform:scale(1.35)}.infra-geo-edge.drafting{stroke-width:2.5px;stroke-dasharray:8 5;opacity:.95;pointer-events:none}.infra-geo-edge.drafting.snap{stroke-dasharray:none;stroke-width:3px;opacity:1}.infra-geo-edge.typed{stroke-width:2.5px;opacity:.95}.infra-geo-socket-legend{flex-wrap:wrap;gap:4px!important}.infra-geo-legend-chip{border:1px solid var(--port-color,#94a3b8);color:var(--port-color,#94a3b8);background:#ffffff0f;border-radius:999px;padding:2px 7px;font-size:10px}.infra-geo-socket-badge{border:1px solid var(--socket-color,#64748b);color:var(--socket-color,#64748b);border-radius:999px;margin:4px 0;padding:2px 8px;font-size:10px;display:inline-block}.infra-geo-param-fields{max-height:48vh;padding-right:4px;overflow:auto}.infra-geo-hint{color:#e2e8f0;z-index:2;background:#0f172ad1;border:1px dashed #94a3b88c;border-radius:8px;max-width:420px;margin:0;padding:8px 12px;font-size:12px;position:absolute;bottom:16px;left:16px}.infra-geo-node-index{background:var(--node-accent,#64748b);color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700;position:absolute;top:-8px;right:8px}.infra-geo-port.flow-dot{pointer-events:none;cursor:default;width:10px;height:10px}.infra-geo-port.flow-dot:before{display:none}.infra-geo-edge.flow-auto{stroke-width:2.5px;opacity:.88}.infra-geo-graph-canvas.linear-chain .infra-geo-node{cursor:pointer}.infra-geo-graph-canvas.linear-chain .infra-geo-node.dragging{opacity:.72;cursor:grabbing;z-index:4;box-shadow:0 8px 24px #0f172a2e}.infra-geo-graph-canvas.linear-chain .infra-geo-node.kind-member{cursor:grab}.infra-geo-graph-canvas.linear-chain .infra-geo-node.kind-member:active{cursor:grabbing}.infra-batch-plant-panel{background:#f1f5f9;flex-direction:column;height:100%;min-height:320px;display:flex}.infra-batch-plant-body{flex:1;gap:0;min-height:0;display:flex}.infra-batch-side{background:#fff;border-right:1px solid #e2e8f0;flex:0 0 220px;padding:12px;font-size:12px}.infra-batch-steps{color:#475569;margin:0 0 12px;padding-left:18px;line-height:1.5}.infra-batch-steps code{font-size:10px}.infra-batch-warn{color:#b45309;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:8px}.infra-batch-filter{width:100%;font:inherit;border:1px solid #cbd5e1;border-radius:8px;margin-top:8px;padding:6px 8px}.infra-batch-table-wrap{flex:1;padding:8px;overflow:auto}.infra-batch-table th,.infra-batch-table td{white-space:nowrap;font-size:11px}.infra-batch-table tr.on{background:#dbeafe}.infra-batch-table tr.warn-row{background:#fff7ed}.infra-batch-times{white-space:normal;max-width:140px;font-size:10px}.infra-batch-drill{background:#fff;border-left:1px solid #e2e8f0;flex:0 0 260px;padding:10px;overflow:auto}.infra-batch-drill header{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;display:flex}.infra-batch-drill ul{margin:0;padding:0;list-style:none}.infra-batch-drill li{border-bottom:1px solid #f1f5f9;grid-template-columns:1fr auto;gap:4px;padding:6px 0;font-size:11px;display:grid}.infra-batch-drill li b{color:#0f4db8}.infra-setup-import-ledger a{color:#2563eb}:root{--shell-sider-width:156px;--shell-sider-collapsed:52px;--shell-topbar-height:56px;--workspace-header-height:42px;--workspace-status-height:28px;--explorer-width:300px;--explorer-min:240px;--explorer-max:380px;--inspector-width:320px;--inspector-min:280px;--inspector-max:420px;--center-min:720px;--border:#e2e7ef;--border-strong:#ccd4e0;--surface-app:#f3f5f8;--surface-panel:#fff;--surface-subtle:#f7f9fc;--surface-inspector:#eef1f6;--text-primary:#1f2937;--text-secondary:#667085;--text-muted:#98a2b3;--brand-primary:#1677ff;--brand-soft:#1677ff17;--status-success:#389e0d;--status-warning:#d48806;--status-error:#cf1322;--radius-control:6px;--radius-panel:8px;--viewer-bg:#263746;--workspace-gap-line:#cfd8e3;--row-height:32px;--control-h:28px;--panel-head-height:36px;--label-width:104px;--font-kpi:"Montserrat", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-kpi-weight:700}.enterprise-kpi-card-value strong,.steel-report-kpis.pm-kpi-board strong,.pm-kpi-board strong,.pm-kpi-strip strong,.pm-kpi-metric-value,.pm-kpi-bar .num.pm-kpi-metric-value,.pm-project-kpi__hero strong,.pm-project-kpi__metric strong,.pm-project-kpi--hero-strip .pm-project-kpi__hero-inline strong,.pm-project-kpi--hero-strip .pm-project-kpi__metric strong,.pm-project-kpi--mep-loss .pm-project-kpi__hero-inline strong,.pm-project-kpi--mep-loss .pm-project-kpi__metric strong,.kpi-card strong,.infra-loss-kpi-value,.infra-audit-kpi-value,.mep-kpi strong,.admin-kpi strong,.formwork-kpi-grid dd,.mep-mini-kpis strong,.infra-material-kpi-strip dd,.infra-setup-kpi b,.infra-kpi-list li b,.liaodan-kpi strong{font-family:var(--font-kpi);font-variant-numeric:tabular-nums;font-weight:var(--font-kpi-weight,700)}.steel-report-kpis.pm-kpi-board strong small,.pm-project-kpi__hero strong small,.pm-project-kpi__metric strong small,.pm-project-kpi--hero-strip .pm-project-kpi__hero-inline strong small,.pm-project-kpi--hero-strip .pm-project-kpi__metric strong small,.pm-project-kpi--mep-loss .pm-project-kpi__hero-inline strong small,.pm-project-kpi--mep-loss .pm-project-kpi__metric strong small{font-weight:var(--font-kpi-weight,700)}.steel-report-kpis.pm-kpi-board article{justify-content:flex-start;align-items:stretch}.enterprise-kpi-card-value{align-items:flex-start}.enterprise-kpi-card .ws-status-pill,.pm-kpi-metric .ws-status-pill{align-self:start}.pm-project-kpi__metric{align-items:start}.pm-project-kpi--hero-strip .pm-project-kpi__metric,.pm-project-kpi--hero-strip .pm-project-kpi__hero-inline{justify-content:flex-start}.pm-project-kpi--mep-loss .pm-project-kpi__metric,.pm-project-kpi__metrics{align-items:start}.app-main.workspace-main:has(.infra-workspace-root){background:#e8edf4;flex-direction:column;gap:0;min-height:0;padding:0;display:flex}.infra-workspace-root{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(200px,240px) minmax(0,1fr) minmax(220px,280px);height:100%;min-height:0;display:grid;overflow:hidden}.infra-workspace-root>aside.panel.module-side.infra-module,.infra-workspace-root>aside.data-tabs.module-side.infra-module{box-shadow:none;border-radius:0;flex-direction:column;gap:0;min-height:0;margin:0;padding:0;display:flex;overflow:hidden}.infra-workspace-root>aside.panel.module-side.infra-module{border-right:1px solid var(--border,#e2e8f0);background:#f4f7fb}.infra-workspace-root>aside.data-tabs.module-side.infra-module{border-left:1px solid var(--border,#e2e8f0);background:#f8fafc}.infra-workspace-root>.viewport.module-center.infra-module{height:100%;min-height:0;box-shadow:none;background:#cbd5e1;border:none;border-radius:0;flex-direction:column;margin:0;padding:0;display:flex;overflow:hidden}.infra-workspace-root .infra-center-stack{flex-direction:column;flex:1;height:100%;min-height:0;display:flex;overflow:hidden}.infra-workspace-root .infra-center-stack>.infra-workflow-bar{flex-shrink:0;order:0}.infra-workspace-root .infra-center-stack>.viewer-stage{flex:1;order:1;height:auto;min-height:0}.infra-workspace-root .module-center .viewer-stage.module-canvas.infra-stage{flex:1;width:100%;height:auto;min-height:0}.infra-bridge-shell{display:contents}.infra-bridge-shell.no-left>aside.panel.module-side.infra-module{display:none}.infra-workspace-root:has(.infra-bridge-shell.no-left:not(.no-right)){grid-template-columns:minmax(0,1fr) minmax(220px,280px)}.infra-bridge-shell.no-right>aside.data-tabs.module-side.infra-module{display:none}.infra-workspace-root:has(.infra-bridge-shell.no-left.no-right){grid-template-columns:minmax(0,1fr)}.infra-workspace-root .infra-workflow-bar,.infra-workflow-bar{z-index:2;box-sizing:border-box;background:#fff;border-bottom:1px solid #dbe3ef;flex-shrink:0;grid-template-rows:auto auto;grid-template-columns:minmax(0,max-content) minmax(420px,1fr) minmax(0,max-content);align-items:center;gap:10px 14px;width:100%;padding:10px 14px;display:grid;box-shadow:0 1px #0f172a0a}.infra-workflow-brand{grid-area:1/1/-1;align-self:center;align-items:center;gap:10px;min-width:0;display:flex}.infra-workflow-steps{scrollbar-width:thin;flex-wrap:nowrap;grid-area:1/2;justify-content:center;align-items:center;gap:8px;width:100%;min-width:0;display:flex;overflow-x:auto}.infra-workflow-steps .iws{color:#475569;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:999px;flex-shrink:0;align-items:center;gap:8px;padding:6px 16px 6px 6px;font-size:12px;transition:border-color .15s,background .15s;display:inline-flex}.infra-workflow-brand strong{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:14px;font-weight:700;overflow:hidden}.infra-workflow-kpi{color:#64748b;white-space:nowrap;background:#eef2f7;border:1px solid #e2e8f0;border-radius:999px;padding:4px 10px;font-size:11px}.infra-workflow-steps .iws:hover{background:#f8fafc;border-color:#94a3b8}.infra-workflow-steps .iws.on{border-color:var(--accent,#2572e5);color:#1d4ed8;background:#2572e514}.iws-idx{color:#334155;background:#e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:700;display:inline-flex}.infra-workspace-root .iws.on .iws-idx{background:var(--accent,#2572e5);color:#fff}.iws-label{font-weight:600}.infra-workflow-sub{background:#eef2f7;border:1px solid #e2e8f0;border-radius:10px;flex-shrink:0;grid-area:2/2;justify-self:center;gap:4px;padding:3px;display:flex}.iws-sub{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:6px 14px;font-size:12px}.iws-sub.on{color:#0f172a;background:#fff;font-weight:600;box-shadow:0 1px 2px #0f172a0f}.infra-workflow-acts{flex-shrink:0;grid-area:1/3/-1;place-self:center end;gap:6px;display:flex}.iws-act{color:#475569;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;height:32px;padding:6px 12px;font-size:12px}.iws-act.on{border-color:var(--accent,#2572e5);color:#1d4ed8;background:#2572e514}.infra-workspace-root .infra-instance-list .infra-member-row,.infra-workspace-root .infra-instance-list .member-row{min-height:0;display:grid}.infra-workspace-root .infra-instance-list>li{min-height:0;line-height:normal}.infra-left-tabs-panel,.infra-right-inspector{flex:1;height:100%;min-height:0}.infra-side-tabs{background:#fff}.infra-side-tabs button{color:#64748b;cursor:pointer;background:0 0;border:none;flex:1;padding:8px 6px;font-size:12px;font-weight:600}.infra-side-tabs button.on{color:#1d4ed8;background:#2572e51a}.infra-manual-lay{background:#fff;border:1px dashed #cbd5e1;border-radius:10px;margin:8px 10px 12px;padding:8px 10px;font-size:12px}.infra-manual-lay summary{cursor:pointer;color:#64748b;font-weight:600;list-style-position:outside}.infra-inspector-part-strip{background:linear-gradient(#eff6ff,#f8fafc);border:1px solid #bfdbfe;border-radius:10px;margin:0 12px 10px;padding:10px 12px}.infra-inspector-part-strip h4{color:#1d4ed8;margin:0 0 8px;font-size:12px;font-weight:700}.infra-inspector-part-strip dl{grid-template-columns:1fr 1fr;gap:6px 10px;margin:0;display:grid}.infra-inspector-part-strip dt{color:#64748b;font-size:10px}.infra-inspector-part-strip dd{font-variant-numeric:tabular-nums;margin:0;font-size:12px;font-weight:600}.infra-loss-table tbody tr.on,.infra-batch-table tbody tr.on{background:#2563eb14;outline:1px solid #2563eb40}.tiny-note{color:#64748b;margin:8px 0 0;font-size:11px;line-height:1.5}.infra-workspace-root .infra-view-tools{z-index:4}.infra-workspace-root .ivt{min-height:28px}.infra-workspace-root .ivt.on{color:#1d4ed8;background:#eff6ff;border-color:#2563eb}.infra-workspace-root .infra-geo-graph-toolbar{flex-shrink:0}.infra-workspace-root .infra-geo-graph-toolbar .tb-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.infra-workspace-root .infra-geo-graph-toolbar strong{color:#0f172a;font-size:13px}.infra-workspace-root .infra-geo-graph-toolbar .pill.soft{color:#475569;background:#eef2f7;border:1px solid #e2e8f0;border-radius:999px;height:auto;padding:4px 10px;font-size:11px}.infra-workspace-root .infra-geo-graph-toolbar a.tb,.infra-workspace-root .infra-geo-graph-toolbar button.tb,.infra-workspace-root .infra-geo-graph-toolbar .infra-geo-add .tb{border:1px solid var(--border,#cbd5e1);color:var(--text-dim,#4e5969);cursor:pointer;box-sizing:border-box;background:#fff;border-radius:8px;justify-content:center;align-items:center;height:32px;padding:0 12px;font-size:12px;text-decoration:none;display:inline-flex}.infra-workspace-root .infra-geo-graph-toolbar a.tb:hover,.infra-workspace-root .infra-geo-graph-toolbar button.tb:hover{background:#f8fafc;border-color:#94a3b8}.infra-workspace-root .infra-geo-graph-toolbar .tb.danger{color:#b42318;background:#fef3f2;border-color:#fecdca}.infra-workspace-root .infra-geo-add input[type=file]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.infra-workspace-root .infra-geo-add{cursor:pointer;position:relative}.infra-workspace-root .infra-stage .infra-track.on{flex-direction:column;display:flex}.infra-workspace-root .infra-stage--plant{background:#e8edf4;flex-direction:column;display:flex;overflow:auto}.infra-workspace-root .infra-stage--plant .infra-track.off{display:none}.infra-workspace-root .infra-stage--plant .infra-batch-plant-panel{flex:1;width:100%;max-width:none;height:auto;min-height:0}.infra-workspace-root .infra-stage .infra-track.on .bim-viewer-root{flex:1;min-height:0}.infra-workspace-root .infra-geo-graph,.infra-workspace-root .infra-batch-plant-panel{flex:1;height:100%;min-height:0}.infra-workspace-root .infra-batch-side h4{color:#0f172a;margin:0 0 8px;font-size:13px}.infra-workspace-root .infra-batch-table-wrap{background:#fff}.infra-workspace-root .infra-batch-table tbody tr{cursor:pointer}.infra-workspace-root .infra-batch-table tbody tr:hover{background:#f8fafc}.infra-workspace-root .infra-batch-drill{font-size:12px}.infra-workspace-root .infra-batch-drill li time{color:#64748b;font-size:11px}.infra-workspace-root .infra-station-table{border-collapse:collapse;width:100%;font-size:12px}.infra-workspace-root .infra-station-table th{z-index:1;color:#475569;text-align:left;background:#f1f5f9;border-bottom:1px solid #e2e8f0;padding:8px 10px;font-weight:600;position:sticky;top:0}.infra-workspace-root .infra-station-table td{color:#334155;border-bottom:1px solid #f1f5f9;padding:8px 10px}.infra-workspace-root .infra-batch-filter{font:inherit;border:1px solid #cbd5e1;border-radius:8px;font-size:12px}.infra-workspace-root .infra-slider-field input[type=range]{width:100%;accent-color:var(--accent,#2572e5)}.infra-workspace-root .infra-param-field input,.infra-workspace-root .infra-param-field select{background:#fff}.infra-plant-tabs{background:#eef2f7;border-radius:8px;gap:4px;margin-left:8px;padding:2px;display:inline-flex}.infra-plant-tabs .tb{background:0 0;border:none;height:28px}.infra-plant-tabs .tb.on{background:#fff;box-shadow:0 1px 2px #0f172a14}.infra-loss-dashboard{background:#f4f7fb;flex:1;min-height:0;padding:12px 14px 20px;overflow:auto}.infra-loss-dashboard.empty{color:#64748b;place-items:center;font-size:14px;display:grid}.infra-loss-view-tabs{border-bottom:1px solid #dbe3ef;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:10px;display:flex}.infra-loss-view-tabs button{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.infra-loss-view-tabs button.on{color:var(--accent,#2572e5);background:#2572e51a}.infra-loss-view-meta{color:#64748b;flex-wrap:wrap;align-items:center;gap:12px;margin-left:auto;font-size:12px;display:flex}.infra-loss-target{align-items:center;gap:6px;display:inline-flex}.infra-loss-target input{width:52px;font:inherit;border:1px solid #cbd5e1;border-radius:6px;padding:4px 6px;font-size:12px}.infra-loss-kpi-row{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:14px;display:grid}.infra-loss-kpi{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;box-shadow:0 1px 2px #0f172a0a}.infra-loss-kpi-label{color:#64748b;margin-bottom:4px;font-size:11px;display:block}.infra-loss-kpi-value{color:#0f172a;font-variant-numeric:tabular-nums;font-size:16px;font-weight:700;display:block}.infra-loss-kpi-sub{color:#94a3b8;margin-top:4px;font-size:10px;font-style:normal;display:block}.infra-loss-kpi.tone-ok .infra-loss-kpi-value{color:#15803d}.infra-loss-kpi.tone-warn .infra-loss-kpi-value{color:#b45309}.infra-loss-kpi.tone-bad .infra-loss-kpi-value{color:#b42318}.infra-loss-alert{color:#92400e;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;margin:0 0 12px;padding:10px 12px;font-size:12px}.infra-loss-charts-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}@media (width<=1200px){.infra-loss-charts-grid{grid-template-columns:1fr}}.infra-loss-chart{background:#fff;border:1px solid #e2e8f0;border-radius:10px;min-height:180px;padding:12px}.infra-loss-chart h4{color:#0f172a;margin:0 0 8px;font-size:13px}.infra-loss-chart.empty p{color:#94a3b8;font-size:12px}.infra-loss-chart-legend{color:#64748b;gap:12px;margin-bottom:8px;font-size:11px;display:flex}.infra-loss-chart-legend .sw{vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.infra-loss-chart-legend .sw.design{background:#93c5fd}.infra-loss-chart-legend .sw.actual{background:#2563eb}.infra-loss-bars{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.infra-loss-bars li{grid-template-columns:72px 1fr 64px;align-items:center;gap:8px;font-size:11px;display:grid}.infra-loss-bar-label{text-overflow:ellipsis;white-space:nowrap;color:#475569;overflow:hidden}.infra-loss-bar-track{background:#f1f5f9;border-radius:4px;height:22px;position:relative;overflow:hidden}.infra-loss-bar-track .bar{border-radius:2px;min-width:2px;height:50%;position:absolute;top:0;left:0}.infra-loss-bar-track .bar.design{background:#93c5fd;top:2px}.infra-loss-bar-track .bar.actual{background:#2563eb;top:11px}.infra-loss-bar-meta{text-align:right;font-variant-numeric:tabular-nums;color:#334155}.infra-loss-bar-meta i.up{color:#b45309;margin-left:4px;font-style:normal}.infra-loss-bar-meta i.dn{color:#15803d;margin-left:4px;font-style:normal}.infra-loss-donut-summary ul{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.infra-loss-donut-summary li{grid-template-columns:88px 1fr auto;align-items:center;gap:8px;font-size:11px;display:grid}.infra-loss-donut-summary .donut-bar{background:#e2e8f0;border-radius:999px;height:8px;overflow:hidden}.infra-loss-donut-summary .donut-bar div{background:linear-gradient(90deg,#3b82f6,#2563eb);border-radius:999px;height:100%}.infra-loss-donut-summary em{color:#64748b;white-space:nowrap;font-style:normal}.infra-loss-categories{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px;display:grid}.infra-loss-cat{text-align:left;cursor:pointer;color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:4px;padding:12px;font-size:12px;display:flex}.infra-loss-cat.on{border-color:var(--accent,#2572e5);box-shadow:0 0 0 1px #2572e533}.infra-loss-cat strong{color:#0f172a;font-size:13px}.infra-loss-cat em{color:#b45309;font-style:normal;font-weight:600}.infra-loss-table-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.infra-loss-table-section header{background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 12px;display:flex}.infra-loss-table-section header .muted{color:#94a3b8;font-size:11px}.infra-loss-table tbody tr{cursor:pointer}.infra-loss-table .tone-ok{color:#15803d;font-weight:600}.infra-loss-table .tone-warn{color:#b45309;font-weight:600}.infra-loss-table .tone-bad{color:#b42318;font-weight:600}.infra-workspace-root .infra-batch-plant-panel{flex-direction:column;display:flex}.infra-loss-modes{flex-wrap:wrap;max-width:520px}.infra-loss-charts-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=900px){.infra-loss-charts-grid.two-col{grid-template-columns:1fr}}.infra-field-tips{color:#475569;margin:0;padding-left:18px;font-size:12px;line-height:1.6}.infra-loss-kpi-row.compact{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.infra-ai-entry{flex:1;grid-template-columns:200px minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.infra-ai-nav{background:#fff;border-right:1px solid #e2e8f0;padding:12px 10px;overflow:auto}.infra-ai-nav h3{color:#0f172a;margin:0 0 10px;font-size:13px}.infra-ai-nav-group{margin-bottom:12px}.infra-ai-nav-group strong{color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:11px;display:block}.infra-ai-nav-group ul{margin:0;padding:0;list-style:none}.infra-ai-nav-group button{text-align:left;color:#475569;cursor:pointer;background:0 0;border:none;border-radius:8px;width:100%;padding:8px 10px;font-size:12px}.infra-ai-nav-group button.on{color:#1d4ed8;background:#2572e51a;font-weight:600}.infra-ai-main{background:#f4f7fb;flex-direction:column;min-height:0;display:flex;overflow:hidden}.infra-ai-head{background:#fff;border-bottom:1px solid #e2e8f0;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px 14px;display:flex}.infra-ai-head p{color:#64748b;max-width:560px;margin:6px 0 0;font-size:11px;line-height:1.5}.infra-ai-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.infra-ai-actions label.tb.primary{background:var(--accent,#2572e5);color:#fff;cursor:pointer;border-color:#0000}.infra-ai-check-banner{border-radius:8px;margin:10px 14px 0;padding:8px 12px;font-size:12px}.infra-ai-check-banner.ok{color:#047857;background:#ecfdf5;border:1px solid #6ee7b7}.infra-ai-check-banner.bad{color:#b42318;background:#fef2f2;border:1px solid #fecaca}.infra-ai-loading{color:#64748b;padding:8px 14px;font-size:12px}.infra-ai-table-wrap{border:1px solid #e2e8f0;border-radius:10px;flex:1;min-height:0;margin:10px 14px 14px;overflow:auto}.infra-ai-empty{text-align:center;color:#94a3b8;padding:24px!important}.infra-ai-issues{flex-direction:column;gap:2px;font-size:10px;display:flex}.infra-ai-issues .lv-error{color:#b42318}.infra-ai-issues .lv-warn{color:#b45309}.infra-ai-issues .lv-info{color:#64748b}@media (width<=1100px){.infra-workspace-root{grid-template-columns:minmax(160px,200px) minmax(0,1fr) minmax(180px,220px)}.infra-workflow-steps .iws{padding-right:10px}.iws-label{font-size:11px}}@media (width<=900px){.infra-workflow-sub,.infra-workflow-kpi{display:none}}.infra-workflow-bar--plant{gap:8px 12px;padding-top:8px;padding-bottom:8px}.infra-workflow-bar--plant:not(:has(.infra-workflow-sub)){grid-template-rows:auto}.infra-workflow-bar--plant .infra-workflow-brand strong{max-width:280px}.infra-workflow-bar--plant .infra-workflow-steps{justify-content:center}.infra-workflow-bar:not(:has(.infra-workflow-sub)){grid-template-rows:auto}.infra-audit-nav{background:#f8fafc;flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.infra-audit-nav-head{border-bottom:1px solid #e2e8f0;flex-shrink:0;padding:12px 14px 10px}.infra-audit-nav-head strong{color:#0f172a;font-size:13px;display:block}.infra-audit-nav-head em{color:#64748b;margin-top:2px;font-size:11px;font-style:normal;display:block}.infra-audit-nav-filters{border-bottom:1px solid #e2e8f0;flex-shrink:0;gap:6px;padding:10px 12px;display:flex}.infra-audit-nav-filters button{color:#64748b;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:999px;flex:1;padding:5px 8px;font-size:11px;font-weight:600}.infra-audit-nav-filters button.on{color:#1d4ed8;background:#eff6ff;border-color:#93c5fd}.infra-audit-nav-list{flex:1;min-height:0;margin:0;padding:8px 10px 12px;list-style:none;overflow:auto}.infra-audit-nav-row{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-rows:auto auto;grid-template-columns:1fr auto;gap:2px 8px;width:100%;padding:8px 10px;transition:background .12s,border-color .12s;display:grid}.infra-audit-nav-row:hover{background:#fff;border-color:#e2e8f0}.infra-audit-nav-row.on{background:#eff6ff;border-color:#93c5fd}.infra-audit-nav-name{color:#0f172a;grid-column:1;font-size:13px;font-weight:600}.infra-audit-nav-badge{text-align:center;color:#b45309;background:#fef3c7;border:1px solid #fde68a;border-radius:999px;grid-area:1/2/span 2;align-self:center;min-width:20px;padding:2px 6px;font-size:10px;font-weight:700}.infra-audit-nav-meta{color:#64748b;grid-column:1;font-size:10px}.infra-audit-nav-empty{color:#94a3b8;text-align:center;padding:16px 10px;font-size:12px}.infra-workflow-audit{flex:auto;justify-content:flex-end;min-width:0;display:flex}.infra-audit-demo-pill{letter-spacing:.04em;color:#b45309;background:#fef3c7;border:1px solid #fcd34d;border-radius:999px;align-items:center;padding:2px 8px;font-size:10px;font-weight:700;display:inline-flex}.infra-audit-strip{white-space:nowrap;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:8px;padding:5px 12px;font-size:12px;display:inline-flex;box-shadow:0 1px 2px #0f172a0a}.infra-audit-strip.tone-alert{background:#fffbeb;border-color:#fcd34d}.infra-audit-strip.tone-ok{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.infra-audit-strip-sep{opacity:.35}.infra-audit-strip-save{color:#059669;font-style:normal;font-weight:700}.infra-audit-strip.tone-alert .infra-audit-strip-save{color:#d97706}.infra-audit-hero{color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:12px;flex-shrink:0;margin:0 0 10px;padding:16px 18px;box-shadow:0 1px 3px #0f172a0f}.infra-audit-hero.tone-alert{background:linear-gradient(#fffbeb 0%,#fff 48%);border-color:#fde68a}.infra-audit-hero.tone-ok{background:linear-gradient(#ecfdf5 0%,#fff 48%);border-color:#a7f3d0}.infra-audit-hero--empty{box-shadow:none;background:#f8fafc;border-style:dashed;border-color:#cbd5e1}.infra-audit-hero-empty-inner{text-align:center;padding:16px 8px}.infra-audit-hero-empty-inner strong{color:#0f172a;margin-bottom:6px;font-size:15px;display:block}.infra-audit-hero-empty-inner p{color:#64748b;margin:0 0 12px;font-size:13px}.infra-audit-hero-cta{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:8px 16px;font-weight:600}.infra-audit-hero-top{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:12px;display:flex}.infra-audit-hero-brand{align-items:center;gap:8px;min-width:0;display:flex}.infra-audit-hero-tag{color:#0f172a;margin:0;font-size:13px;font-weight:700}.infra-audit-hero-status{color:#b45309;background:#fef3c7;border:1px solid #fde68a;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:600}.infra-audit-hero-status.ok{color:#047857;background:#d1fae5;border-color:#a7f3d0}.infra-audit-hero-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}@media (width<=900px){.infra-audit-hero-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.infra-audit-kpi{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px}.infra-audit-kpi--deficit{background:#fffbeb;border-color:#fde68a}.infra-audit-kpi--deficit .infra-audit-kpi-value{color:#d97706}.infra-audit-kpi--save{background:#ecfdf5;border-color:#a7f3d0}.infra-audit-kpi--save .infra-audit-kpi-value{color:#059669}.infra-audit-kpi-label{color:#64748b;margin-bottom:4px;font-size:11px;font-weight:600;display:block}.infra-audit-kpi-value{color:#0f172a;font-size:20px;font-weight:700;line-height:1.2;display:block}.infra-audit-kpi-slash{color:#94a3b8;margin:0 2px;font-weight:500}.infra-audit-kpi em{color:#94a3b8;margin-top:4px;font-size:10px;font-style:normal;line-height:1.35;display:block}.infra-audit-hero-issues{margin-top:2px}.infra-audit-issues-title{color:#64748b;letter-spacing:.02em;margin:0 0 8px;font-size:12px;font-weight:700}.infra-audit-buckets{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.infra-audit-buckets li strong{color:#0f172a;font-size:13px;font-weight:600}.infra-audit-buckets li span{color:#64748b;font-size:12px}.infra-audit-buckets li em{color:#059669;text-align:right;font-size:13px;font-style:normal;font-weight:700}.infra-audit-all-clear{text-align:center;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;margin:0;padding:10px 12px;font-size:13px}.infra-audit-findings-fold{color:#475569;margin-top:12px;font-size:12px}.infra-audit-findings-fold summary{cursor:pointer;color:#2563eb;font-weight:600}.infra-audit-findings-fold ul{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.infra-audit-findings-fold li button{text-align:left;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;width:100%;padding:8px 10px}.infra-audit-findings-fold li strong{color:#0f172a;font-size:12px;display:block}.infra-audit-findings-fold li span{color:#64748b;font-size:11px}.infra-batch-toolbar{flex-shrink:0}.infra-batch-plant-scroll{flex:auto;min-height:0;padding:0 10px 12px;overflow:auto}.infra-bridge-shell.plant-focus .infra-audit-hero{margin-top:4px}.infra-batch-plant-panel{flex-direction:column;gap:10px;min-height:0;padding:8px 12px 16px;display:flex;overflow:auto}.infra-batch-plant-panel--endpoint{width:100%;max-width:none;margin:0}.infra-batch-plant-panel--endpoint .infra-plant-fold{background:#f8fafc}.infra-audit-hero--compact{padding:14px 16px 12px}.infra-audit-endpoint{color:#94a3b8;text-align:center;margin:10px 0 0;font-size:11px}.infra-bridge-shell.plant-focus .infra-audit-buckets--action{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.infra-bridge-shell.plant-focus .infra-audit-buckets--action li button{height:100%}.infra-audit-buckets--action li button{text-align:left;width:100%;color:inherit;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:minmax(100px,1fr) 1fr auto;align-items:center;gap:10px;padding:10px 12px;transition:background .15s,border-color .15s;display:grid}.infra-audit-buckets--action li button:hover{background:#f8fafc;border-color:#cbd5e1}.infra-plant-fold{background:#f8fafcd9;border:1px solid #94a3b840;border-radius:10px}.infra-plant-fold summary{color:#475569;cursor:pointer;padding:10px 14px;font-size:13px;font-weight:600;list-style-position:inside}.infra-plant-fold[open] summary{border-bottom:1px solid #94a3b833}.infra-plant-fold>:not(summary){padding:0 12px 12px}.infra-plant-detail-tabs{gap:6px;margin:8px 0 10px;display:flex}.infra-plant-detail-tabs button{cursor:pointer;background:#fff;border:1px solid #94a3b859;border-radius:6px;padding:4px 12px;font-size:12px}.infra-plant-detail-tabs button.on{color:#fff;background:#2563eb;border-color:#2563eb}.infra-plant-tools{flex-wrap:wrap;gap:8px;margin:8px 0 12px;display:flex}.infra-loss-dashboard--compact .infra-loss-compact-hint{color:#64748b;margin:0 0 8px;font-size:12px}.infra-loss-extra-fold{margin-top:10px}.infra-loss-extra-fold summary{color:#64748b;cursor:pointer;font-size:12px}.infra-batch-drill-list{margin:8px 0 0;padding:0;font-size:12px;list-style:none}.infra-batch-drill-list li{border-bottom:1px solid #94a3b826;gap:10px;padding:4px 0;display:flex}.infra-bridge-shell.plant-focus.no-left.no-right .module-center.infra-module{grid-column:1/-1}.infra-audit-side-rail{flex-direction:column;gap:12px;height:100%;min-height:0;padding:12px 12px 16px;display:flex;overflow:hidden}.infra-audit-rail-head{border-bottom:1px solid #e2e8f0;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding-bottom:8px;display:flex}.infra-audit-rail-head strong{color:#0f172a;font-size:14px}.infra-audit-rail-count{color:#b45309;background:#fef3c7;border:1px solid #fde68a;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}.infra-audit-rail-count.muted{color:#64748b;background:#f1f5f9;border-color:#e2e8f0}.infra-audit-rail-section{flex-shrink:0}.infra-audit-rail-section h4{color:#64748b;letter-spacing:.03em;text-transform:uppercase;margin:0 0 8px;font-size:11px;font-weight:700}.infra-audit-rail-findings{flex-direction:column;flex:1;min-height:0;display:flex}.infra-audit-rail-list{flex-direction:column;flex:1;gap:6px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.infra-audit-rail-list button{text-align:left;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:3px;width:100%;padding:8px 10px;display:flex}.infra-audit-rail-list button.sev-high{border-left:3px solid #ef4444}.infra-audit-rail-list button.sev-warn{border-left:3px solid #f59e0b}.infra-audit-rail-list button:hover{background:#f8fafc;border-color:#cbd5e1}.infra-audit-rail-list strong{color:#0f172a;font-size:12px}.infra-audit-rail-list span{color:#64748b;font-size:11px;line-height:1.4}.infra-audit-rail-list em{color:#059669;font-size:11px;font-style:normal;font-weight:700}.infra-audit-rail-card{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;flex-shrink:0;padding:10px 12px}.infra-audit-rail-card h4{color:#64748b;margin:0 0 6px;font-size:10px;font-weight:700}.infra-audit-rail-loc{color:#0f172a;margin:0 0 8px;font-size:12px;font-weight:600;line-height:1.35}.infra-audit-rail-dl{grid-template-columns:1fr 1fr;gap:6px 10px;margin:0;display:grid}.infra-audit-rail-dl div{justify-content:space-between;gap:6px;font-size:11px;display:flex}.infra-audit-rail-dl dt{color:#64748b}.infra-audit-rail-dl dd{color:#0f172a;margin:0;font-weight:600}.infra-audit-rail-chart{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px}.infra-audit-rail-empty,.infra-audit-rail-all-clear{text-align:center;color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;margin:0;padding:10px;font-size:12px}.infra-audit-rail-all-clear{color:#047857;background:#ecfdf5;border-style:solid;border-color:#a7f3d0}.infra-workspace-root:has(.infra-bridge-shell.plant-focus:not(.no-right)){grid-template-columns:minmax(0,1fr) minmax(260px,320px)}.infra-workspace-root:has(.infra-bridge-shell.plant-focus:not(.no-left):not(.no-right)){grid-template-columns:minmax(200px,240px) minmax(0,1fr) minmax(260px,320px)}.bridge-span-tag,.bridge-support-tag,.bridge-joint-tag{pointer-events:none;text-align:center;white-space:nowrap;border:1px solid #94a3b88c;line-height:1.25;box-shadow:0 4px 16px #0f172a24}.bridge-span-tag{color:#0f172a;background:linear-gradient(#fff 0%,#f8fafc 100%);border-radius:10px;min-width:88px;padding:8px 14px 7px}.bridge-span-tag strong{color:#1d4ed8;letter-spacing:.04em;margin-bottom:2px;font-size:15px;font-weight:800;display:block}.bridge-span-tag span{color:#475569;font-variant-numeric:tabular-nums;font-size:11px;font-weight:600;display:block}.bridge-support-tag{background:#fffffff5;border-radius:8px;min-width:72px;padding:6px 10px 5px}.bridge-support-tag strong{color:#0f172a;font-size:13px;font-weight:750;display:block}.bridge-support-tag em{color:#64748b;font-variant-numeric:tabular-nums;margin-top:1px;font-size:10px;font-style:normal;font-weight:600;display:block}.bridge-support-tag.is-abut strong{color:#0d9488}.bridge-joint-tag{color:#94a3b8;background:#ffffffeb;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:flex}.infra-material-import-hub--compact .infra-demo-flow-banner{padding:10px 12px}.infra-material-import-hub--compact .infra-material-kpi-strip{margin-top:8px}.infra-demo-flow-banner{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px 16px;margin-bottom:12px;padding:14px 16px;display:flex}.infra-demo-flow-badge{color:#fff;background:#2563eb;border-radius:999px;margin-right:8px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.infra-demo-flow-banner strong{color:#0f172a;margin-bottom:4px;font-size:14px;display:block}.infra-demo-flow-banner p{color:#475569;max-width:52em;margin:0;font-size:12px}.infra-demo-flow-cta{flex-shrink:0}.infra-material-kpi-strip.compact{margin-bottom:12px}.infra-real-import-fold{border-top:1px dashed #cbd5e1;margin-top:16px;padding-top:12px}.infra-real-import-fold summary{cursor:pointer;color:#64748b;-webkit-user-select:none;user-select:none;margin-bottom:10px;font-size:12px}.infra-material-import-card--minor{opacity:.92;min-height:120px}.infra-material-import-card--minor strong{font-size:13px}.infra-material-import-hub{flex-direction:column;gap:12px;padding:4px 0 16px;display:flex}.infra-material-import-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px 24px;display:flex}.infra-material-import-hero h3{margin:0 0 6px;font-size:18px;font-weight:600}.infra-material-import-hero p{max-width:560px;color:var(--text-muted,#64748b);margin:0;font-size:13px;line-height:1.55}.infra-material-import-hero strong{color:var(--text,#0f172a)}.infra-material-kpi-strip{flex-wrap:wrap;gap:8px 20px;margin:0;display:flex}.infra-material-kpi-strip div{min-width:72px}.infra-material-kpi-strip dt{color:var(--text-muted,#64748b);margin:0;font-size:11px}.infra-material-kpi-strip dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:16px;font-weight:600}.infra-material-kpi-strip div.warn dd{color:#dc2626}.infra-material-import-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}@media (width<=1100px){.infra-material-import-grid{grid-template-columns:1fr}}.infra-material-import-card{border:2px dashed color-mix(in srgb, var(--card-accent,#2563eb) 35%, #cbd5e1);background:linear-gradient(145deg, color-mix(in srgb, var(--card-accent,#2563eb) 6%, #fff) 0%, #fff 60%);cursor:pointer;border-radius:12px;flex-direction:column;gap:10px;min-height:200px;padding:24px 20px 20px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;position:relative}.infra-material-import-card:hover{border-color:var(--card-accent,#2563eb);box-shadow:0 8px 24px color-mix(in srgb, var(--card-accent,#2563eb) 18%, transparent);transform:translateY(-2px)}.infra-material-import-card input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.infra-material-import-card strong{color:var(--card-accent,#2563eb);font-size:17px}.infra-material-import-card p{color:var(--text-muted,#64748b);flex:1;margin:0;font-size:13px;line-height:1.5}.infra-material-import-card em{color:#94a3b8;font-size:11px;font-style:normal}.infra-material-import-cta{color:#fff;background:var(--card-accent,#2563eb);border-radius:8px;justify-content:center;align-items:center;padding:10px 14px;font-size:13px;font-weight:600;display:inline-flex}.infra-material-import-actions{flex-wrap:wrap;align-items:center;gap:10px 12px;display:flex}.infra-pour-order-panel{padding:8px 0}.infra-pour-order-panel.empty{text-align:center;color:var(--text-muted,#64748b);border:1px dashed #cbd5e1;border-radius:8px;padding:24px 16px}.infra-pour-status{border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.infra-pour-status.status-draft{color:#64748b;background:#f1f5f9}.infra-pour-status.status-issued{color:#1d4ed8;background:#dbeafe}.infra-pour-status.status-pouring{color:#b45309;background:#fef3c7}.infra-pour-status.status-closed{color:#15803d;background:#dcfce7}.infra-mix-design-panel{flex-direction:column;gap:16px;padding:8px 0 16px;display:flex}.infra-mix-design-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.infra-mix-design-head h3{margin:0 0 4px;font-size:16px}.infra-mix-tabs{gap:4px;display:flex}.infra-mix-tabs button{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:6px 12px;font-size:12px}.infra-mix-tabs button.on{color:#1d4ed8;background:#eff6ff;border-color:#2563eb;font-weight:600}.infra-mix-thresholds{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=900px){.infra-mix-thresholds{grid-template-columns:1fr}}.infra-mix-thresholds label{flex-direction:column;gap:4px;font-size:13px;display:flex}.infra-mix-thresholds input{border:1px solid #e2e8f0;border-radius:6px;max-width:120px;padding:6px 8px}.infra-mix-thresholds em{color:#94a3b8;font-size:11px;font-style:normal}.infra-mix-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.infra-mix-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px}.infra-mix-card header{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.infra-mix-card header strong{font-size:14px}.infra-mix-card header em{color:#64748b;font-size:11px;font-style:normal}.infra-mix-card dl{grid-template-columns:1fr 1fr;gap:6px 12px;margin:0;display:grid}.infra-mix-card dt{color:#94a3b8;font-size:11px}.infra-mix-card dd{font-variant-numeric:tabular-nums;margin:0;font-size:13px}.infra-param-blender{max-height:calc(100vh - 160px);padding:0 8px 12px;overflow-y:auto}.infra-param-blender .infra-param-head{padding:8px 4px 6px}.infra-param-blender .infra-param-head .tiny-note{margin:4px 0 0}.infra-param-fold{background:#fafbfc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:6px;overflow:hidden}.infra-param-fold>summary{color:#334155;cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(#f8fafc,#f1f5f9);justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:12px;font-weight:700;list-style:none;display:flex}.infra-param-fold>summary::-webkit-details-marker{display:none}.infra-param-fold>summary:before{content:"▸";color:#64748b;margin-right:6px;transition:transform .12s}.infra-param-fold[open]>summary:before{transform:rotate(90deg)}.infra-param-fold>summary em{color:#94a3b8;background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:1px 6px;font-size:10px;font-style:normal;font-weight:600}.infra-param-fold-body{background:#fff;border-top:1px solid #e8edf2;padding:4px 6px 8px}.blender-num-field,.blender-text-field{border-radius:4px;grid-template-columns:minmax(0,1fr) 88px;align-items:center;gap:6px;min-height:26px;padding:2px 4px;display:grid}.blender-num-field:hover,.blender-text-field:hover{background:#3b82f60f}.blender-num-label,.blender-text-field>span{color:#475569;cursor:ew-resize;-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:500;overflow:hidden}.blender-num-label i,.blender-text-field>span i{color:#94a3b8;margin-left:3px;font-size:10px;font-style:normal}.blender-num-input,.blender-text-field input,.blender-text-field select{font-variant-numeric:tabular-nums;text-align:right;color:#0f172a;cursor:ew-resize;background:#fff;border:1px solid #cbd5e1;border-radius:4px;width:100%;height:24px;padding:0 6px;font-size:12px}.blender-num-input:focus,.blender-text-field input:focus{cursor:text;border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f626}.blender-toggle-row{justify-content:space-between;align-items:center;padding:4px 6px;font-size:11px;display:flex}.infra-workspace-root .infra-param-blender .infra-slider-field input[type=range]{display:none}
