.app-select{position:relative;display:inline-flex;min-width:0;vertical-align:middle}.app-select.field{display:flex;width:100%}.app-select-trigger{display:flex;width:100%;min-width:0;align-items:center;gap:6px;border:1px solid #dfe5ee;border-radius:8px;background:#fff;color:#3f4e67;font-size:10px;line-height:1;text-align:left;cursor:pointer}.app-select.compact .app-select-trigger{height:34px;padding:0 9px;color:#536078}.app-select.toolbar .app-select-trigger{height:38px;gap:8px;border-color:var(--border);border-radius:9px;padding:0 11px;color:#35435c;font-size:12px}.app-select.field .app-select-trigger{height:35px;background:#fbfcfe;padding:0 9px}.app-select.inline .app-select-trigger{height:32px;min-width:168px;border-color:transparent;background:transparent;padding:0 2px;color:#33415a;font-size:12px;font-weight:600}.app-select.open .app-select-trigger{border-color:#8fbfa8;box-shadow:0 0 0 3px #167a551f}.app-select.inline.open .app-select-trigger{border-color:transparent;box-shadow:none;color:#167a55}.app-select-leading{display:flex;flex:none;color:#77849a}.app-select-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-select.compact .app-select-value{max-width:122px}.app-select-chevron{flex:none;color:#8b97aa;transition:transform .16s ease}.app-select.open .app-select-chevron{transform:rotate(180deg)}.app-select-menu{position:fixed;z-index:80;display:grid;gap:2px;max-height:280px;overflow:auto;border:1px solid #e3e9f1;border-radius:10px;background:#fff;padding:6px;box-shadow:0 16px 40px #22355224}.app-select-menu button{display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:7px;background:transparent;padding:8px 9px;color:#3d4c64;font-size:11px;text-align:left;cursor:pointer}.app-select-menu button:hover{background:#f3f8f5}.app-select-menu button.active{background:#eaf6f0;color:#167a55;font-weight:600}.login-page[data-v-f912f5f9]{position:relative;min-height:100vh;overflow:hidden;background:linear-gradient(135deg,#f7fbf8,#eaf4ee 48%,#dfeee6);color:#173126}.login-grid[data-v-f912f5f9]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.5;background-image:linear-gradient(rgba(31,122,84,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(31,122,84,.055) 1px,transparent 1px);background-size:42px 42px;-webkit-mask-image:linear-gradient(90deg,#000 0%,rgba(0,0,0,.7) 63%,transparent 92%);mask-image:linear-gradient(90deg,#000 0%,rgba(0,0,0,.7) 63%,transparent 92%)}.login-glow[data-v-f912f5f9]{position:absolute;border-radius:50%;filter:blur(18px);pointer-events:none}.glow-one[data-v-f912f5f9]{top:-18vw;left:22vw;width:46vw;height:46vw;background:#4fa97d1f}.glow-two[data-v-f912f5f9]{bottom:-20vw;left:-10vw;width:50vw;height:50vw;background:#1285601a}.login-factor-map[data-v-f912f5f9]{position:absolute;top:100%;left:100%;width:min(178vw,2280px);height:auto;aspect-ratio:920 / 680;opacity:.82;transform:translate(-48.913%,-50.294%)}.enrichment-grid circle[data-v-f912f5f9]{fill:none;stroke:#1e714e1c;stroke-width:1}.enrichment-grid circle[data-v-f912f5f9]:nth-child(-n+5){stroke-dasharray:2 3}.login-enrichment-rotor[data-v-f912f5f9]{transform-origin:450px 342px;animation:enrichment-rotate-f912f5f9 156s linear infinite}.enrichment-spokes line[data-v-f912f5f9]{stroke:#2a775621;stroke-width:.8}.enrichment-bars path[data-v-f912f5f9]{opacity:.72;stroke:#ffffffb8;stroke-width:.8;transition:opacity .2s}.enrichment-hit-ring path[data-v-f912f5f9],.enrichment-count-ring path[data-v-f912f5f9],.enrichment-outer-ring path[data-v-f912f5f9]{stroke:#ffffffeb;stroke-width:1}.enrichment-hit-ring text[data-v-f912f5f9]{fill:#315f4c;font-family:IBM Plex Mono,monospace;font-size:6.2px;font-weight:650;text-anchor:middle}.enrichment-count-ring text[data-v-f912f5f9]{fill:#fffffff0;font-family:IBM Plex Mono,monospace;font-size:5.6px;font-weight:700;text-anchor:middle}.enrichment-outer-ring text[data-v-f912f5f9]{fill:#fff;font-family:IBM Plex Mono,monospace;font-size:4.8px;font-weight:700;letter-spacing:-.02em;text-anchor:middle}.enrichment-significance circle[data-v-f912f5f9]{opacity:.8}.enrichment-core>circle[data-v-f912f5f9]{fill:url(#enrichmentCore);stroke:#fffffffa;stroke-width:3}.login-intro[data-v-f912f5f9]{position:absolute;inset:0 auto 0 0;z-index:3;display:flex;width:min(58vw,790px);flex-direction:column;padding:42px 0 42px clamp(42px,5.5vw,86px);pointer-events:none}.login-brand[data-v-f912f5f9]{display:flex;width:220px;height:64px;align-items:center}.login-brand img[data-v-f912f5f9]{display:block;width:100%;height:100%;object-fit:contain}.login-copy[data-v-f912f5f9]{margin-top:auto;margin-bottom:78px}.login-kicker[data-v-f912f5f9]{display:inline-flex;align-items:center;gap:8px;color:#27805e;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:650;letter-spacing:.13em}.login-copy h1[data-v-f912f5f9]{margin:17px 0 12px;color:#173126;font-size:clamp(34px,4.2vw,58px);font-weight:690;line-height:1.16;letter-spacing:-.045em}.login-copy p[data-v-f912f5f9]{margin:0;color:#667d72;font-size:15px}.login-status[data-v-f912f5f9]{display:flex;align-items:center;gap:8px;color:#657c71;font-size:11px}.login-status span[data-v-f912f5f9]{width:7px;height:7px;border-radius:50%;background:#25a66f;box-shadow:0 0 0 5px #25a66f1a}.login-card-wrap[data-v-f912f5f9]{position:relative;z-index:5;display:flex;min-height:100vh;align-items:center;justify-content:flex-end;padding:42px clamp(36px,7vw,112px) 42px 55%}.login-card[data-v-f912f5f9]{position:relative;width:min(100%,420px);border:1px solid rgba(201,220,210,.9);border-radius:22px;background:#ffffffe0;padding:38px;box-shadow:0 30px 80px #1f4c3924;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.login-card-icon[data-v-f912f5f9]{position:absolute;top:32px;right:34px;display:grid;width:42px;height:42px;place-items:center;border-radius:12px;background:#eaf6f0;color:#167a55}.login-card-head>span[data-v-f912f5f9]{color:#438368;font-family:IBM Plex Mono,monospace;font-size:9px;font-weight:650;letter-spacing:.12em}.login-card-head h2[data-v-f912f5f9]{margin:10px 0 6px;color:#183327;font-size:25px}.login-card-head p[data-v-f912f5f9]{margin:0 0 27px;color:#7b8d84;font-size:12px}.login-field[data-v-f912f5f9]{display:block;margin-top:16px}.login-field>span[data-v-f912f5f9]{display:block;margin-bottom:7px;color:#52685e;font-size:11px;font-weight:600}.login-field>div[data-v-f912f5f9]{display:flex;height:46px;align-items:center;gap:10px;border:1px solid #dbe8e1;border-radius:10px;background:#fafcfbe6;padding:0 13px;color:#879a91;transition:border-color .16s,box-shadow .16s}.login-field>div[data-v-f912f5f9]:focus-within{border-color:#4d9b72;box-shadow:0 0 0 3px #167a5514}.login-field input[data-v-f912f5f9]{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#263c31;font-size:13px}.login-field input[data-v-f912f5f9]::placeholder{color:#a2afa9}.login-field button[data-v-f912f5f9]{display:grid;place-items:center;background:transparent;color:#85988f}.login-options[data-v-f912f5f9]{display:flex;align-items:center;justify-content:space-between;margin:16px 0 20px}.login-options label[data-v-f912f5f9]{display:flex;align-items:center;gap:7px;color:#70837a;font-size:11px;cursor:pointer}.login-options label input[data-v-f912f5f9]{position:absolute;opacity:0}.login-options label span[data-v-f912f5f9]{display:grid;width:15px;height:15px;place-items:center;border:1px solid #bfd2c8;border-radius:4px;background:#fff}.login-options label input:checked+span[data-v-f912f5f9]{border-color:#167a55;background:#167a55;box-shadow:inset 0 0 0 3px #fff}.login-options>button[data-v-f912f5f9]{background:transparent;color:#2d805f;font-size:11px}.login-error[data-v-f912f5f9]{margin:-7px 0 12px;color:#c6535b;font-size:11px}.login-submit[data-v-f912f5f9]{display:flex;width:100%;height:48px;align-items:center;justify-content:center;gap:9px;border-radius:11px;background:linear-gradient(135deg,#167a55,#2d9068);color:#fff;font-size:13px;font-weight:650;box-shadow:0 11px 24px #167a5533;transition:transform .16s,box-shadow .16s}.login-submit[data-v-f912f5f9]:hover{transform:translateY(-1px);box-shadow:0 14px 28px #167a5542}.login-submit[data-v-f912f5f9]:disabled{cursor:wait;opacity:.8}.login-spinner[data-v-f912f5f9]{width:17px;height:17px;border:2px solid rgba(255,255,255,.38);border-top-color:#fff;border-radius:50%;animation:spinner-f912f5f9 .7s linear infinite}.login-security[data-v-f912f5f9]{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:18px;color:#82938b;font-size:10px}.login-version[data-v-f912f5f9]{position:absolute;right:clamp(36px,7vw,112px);bottom:22px;margin:0;color:#8ba097;font-family:IBM Plex Mono,monospace;font-size:8px;letter-spacing:.09em}@keyframes enrichment-rotate-f912f5f9{to{transform:rotate(360deg)}}@keyframes spinner-f912f5f9{to{transform:rotate(360deg)}}@media(max-width:900px){.login-factor-map[data-v-f912f5f9]{top:100%;left:100%;width:1900px;opacity:.24}.login-intro[data-v-f912f5f9]{width:100%;padding:28px}.login-copy[data-v-f912f5f9]{display:none}.login-status[data-v-f912f5f9]{margin-top:auto}.login-card-wrap[data-v-f912f5f9]{justify-content:center;padding:90px 24px 72px}.login-card[data-v-f912f5f9]{padding:30px}.login-version[data-v-f912f5f9]{right:0;bottom:18px;left:0;text-align:center}}@media(max-width:640px){.login-page[data-v-f912f5f9]{overflow-x:hidden;overflow-y:auto}.login-intro[data-v-f912f5f9]{display:none}.login-card-wrap[data-v-f912f5f9]{flex-direction:column;align-items:stretch;min-height:100vh;padding:calc(24px + env(safe-area-inset-top,0px)) 16px calc(28px + env(safe-area-inset-bottom,0px))}.login-card[data-v-f912f5f9]{width:100%;padding:26px 18px 20px;border-radius:18px}.login-card-head h2[data-v-f912f5f9]{padding-right:52px;font-size:22px}.login-card-icon[data-v-f912f5f9]{top:22px;right:16px}.login-field input[data-v-f912f5f9]{font-size:16px}.login-version[data-v-f912f5f9]{position:static;margin:14px 0 0}}@media(prefers-reduced-motion:reduce){.login-page[data-v-f912f5f9] *{animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;color:#17261f;background:#f3f7f5;font-synthesis:none;text-rendering:optimizeLegibility;--primary: #167a55;--primary-soft: #eaf6f0;--indigo: #277e62;--teal: #0b8f73;--violet: #4d9b72;--text: #17261f;--muted: #66786f;--border: #dfe9e3;--canvas: #f3f7f5;--panel: #ffffff}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(90,112,102,.45) transparent}*::-webkit-scrollbar{width:8px;height:8px;background:transparent;border:none}*::-webkit-scrollbar-track,*::-webkit-scrollbar-track-piece,*::-webkit-scrollbar-corner{background:transparent;border:none;box-shadow:none}*::-webkit-scrollbar-thumb{border:none;border-radius:999px;background:#5a706666;box-shadow:none}*::-webkit-scrollbar-thumb:hover{background:#5a70669e}html{min-width:320px;background:var(--canvas)}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 68% -10%,rgba(54,143,101,.1),transparent 29rem),var(--canvas)}html.rank-lock,html.rank-lock body{overflow:hidden}html.rank-lock body{padding-right:var(--scrollbar-gap, 0px)}button,input,select{font:inherit}button{border:0}button,select{cursor:pointer}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;display:flex;width:228px;flex-direction:column;border-right:1px solid var(--border);background:#fffffff5;box-shadow:8px 0 28px #283e6b09;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{display:flex;min-height:72px;align-items:center;border-bottom:1px solid #edf0f5;padding:0 20px}.brand-logo{display:block;width:176px;height:62px;object-fit:contain}.today-rank{display:inline-flex;align-items:center;gap:8px;height:38px;border:1px solid transparent;border-radius:9px;background:#fff6ee;padding:0 12px;color:#e06a00;font-size:13px;font-weight:650;line-height:1;white-space:nowrap;cursor:pointer}.today-rank span,.today-rank time{display:block;font-size:13px;line-height:1}.today-rank time{color:#e06a00;font-weight:500}.today-rank:hover{background:#fff1e4}.today-rank:hover span,.today-rank:hover time{color:#c45300}.detail-drawer.today-rank-drawer{width:min(560px,94vw);overscroll-behavior:contain}.today-rank-drawer .drawer-head h2{font-size:22px}.today-rank-drawer .drawer-head p{font-size:13px}.today-rank-drawer .drawer-description{font-size:14px;line-height:1.7}.rank-board{padding:0 21px 22px}.rank-chart-label,.rank-note{margin:0;color:#8a96a9;font-size:14px}.rank-bars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end;margin-top:12px}.rank-col{display:flex;min-width:0;flex-direction:column;align-items:center;gap:8px}.rank-col strong{color:#167a55;font-size:16px;font-variant-numeric:tabular-nums}.rank-col-track{display:flex;width:100%;height:128px;align-items:flex-end;border-radius:8px;background:#f6f8fb;padding:8px 10px 0}.rank-col-track i{display:block;width:100%;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,#5dbe90,#167a55);transform-origin:center bottom;animation:bar-grow-y .75s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * 80ms)}.rank-col:nth-child(1) .rank-col-track i{background:linear-gradient(180deg,#3aaa78,#0d6b48)}.rank-col span{color:#40506a;font-size:14px;font-weight:600}.rank-details{display:grid;gap:14px;margin:18px 0 0;padding:0;list-style:none}.rank-details li{border:1px solid #edf0f5;border-radius:12px;padding:12px 14px}.rank-detail-name{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#30405a;font-size:16px;font-weight:650}.rank-detail-name b{display:grid;width:24px;height:24px;place-items:center;border-radius:6px;background:#eaf6f0;color:#167a55;font-size:14px}.rank-metric{display:grid;grid-template-columns:76px minmax(0,1fr) 68px;align-items:center;gap:8px;margin-top:7px}.rank-metric span,.rank-metric em{color:#66748a;font-size:14px;font-style:normal;font-variant-numeric:tabular-nums}.rank-metric em{color:#30405a;font-weight:650;text-align:right}.rank-metric i{display:block;height:7px;overflow:hidden;border-radius:999px;background:#f3f5f8}.rank-metric i b{display:block;height:100%;border-radius:inherit;background:#167a55;transform-origin:left center;animation:bar-grow-x .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * 70ms)}.rank-metric.drawdown i b{background:#8fbfa6}.rank-metric.win i b{background:#0e8a62}.rank-note{margin-top:14px}.sidebar-close{display:none;margin-left:auto;padding:6px;color:var(--muted);background:transparent}.nav-list{display:flex;flex:1;flex-direction:column;gap:5px;padding:22px 14px}.nav-item{position:relative;display:flex;width:100%;min-height:44px;align-items:center;gap:13px;border:0;padding:0 14px;border-radius:10px;background:transparent;color:#5d6a80;font-size:14px;font-weight:500;text-align:left;transition:.18s ease}.nav-item:hover{color:var(--primary);background:#f5f7fc}.nav-item.active{color:var(--primary);background:var(--primary-soft);font-weight:600}.nav-item.active:before{position:absolute;top:10px;bottom:10px;left:-14px;width:3px;border-radius:0 6px 6px 0;background:var(--primary);content:""}.sidebar-foot{border-top:1px solid #edf0f5;padding:16px 18px 20px}.market-pulse{display:flex;align-items:center;gap:10px;padding:10px 11px;border:1px solid #deece4;border-radius:11px;background:#f8fafc}.pulse-dot{width:9px;height:9px;border:2px solid #baf0e2;border-radius:50%;background:#19ad8c;box-shadow:0 0 0 3px #19ad8c17}.market-pulse strong,.market-pulse small{display:block}.market-pulse strong{color:#33415d;font-size:12px}.market-pulse small{margin-top:2px;color:#8590a3;font-size:11px}.workspace-info{margin-top:16px;padding:0 4px}.workspace-info span,.workspace-info small{display:block}.workspace-info span{color:#59667d;font-size:12px;font-weight:600}.workspace-info small{margin-top:3px;color:#9aa4b4;font-family:IBM Plex Mono,monospace;font-size:10px}.workspace{min-height:100vh;margin-left:228px}.topbar{position:sticky;top:0;z-index:20;display:flex;height:72px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#ffffffeb;padding:0 28px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar-left,.topbar-right,.market-selector,.environment,.updated,.user{display:flex;align-items:center}.topbar-left{gap:10px}.market-selector,.environment{min-height:38px;gap:8px;border:1px solid var(--border);border-radius:9px;background:#fff;padding:0 12px;color:#40506a;font-size:13px;font-weight:500}.environment{border-color:transparent;background:#f6f8fb}.environment span,.updated span{width:7px;height:7px;border-radius:50%;background:#18aa89;box-shadow:0 0 0 3px #18aa891c}.topbar-right{gap:12px}.global-search{display:flex;width:clamp(210px,18vw,310px);height:38px;align-items:center;gap:9px;border:1px solid var(--border);border-radius:9px;background:#f8fafc;padding:0 12px;color:#8995a8}.global-search:focus-within{border-color:#a5cdb8;background:#fff;box-shadow:0 0 0 3px #167a5512}.global-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--text);font-size:13px}.global-search input::placeholder{color:#9ca7b8}.updated{gap:8px;color:#61708a;font-size:12px;white-space:nowrap}.icon-button,.menu-button{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--border);border-radius:9px;background:#fff;color:#647189}.menu-button{display:none}.has-badge{position:relative}.has-badge b{position:absolute;top:-5px;right:-5px;display:grid;width:17px;height:17px;place-items:center;border:2px solid #fff;border-radius:50%;background:#ef5964;color:#fff;font-size:9px}.user{gap:8px;border-left:1px solid #e7ebf2;background:transparent;padding-left:12px;text-align:left}.avatar{display:grid;width:36px;height:36px;place-items:center;border-radius:10px;background:linear-gradient(145deg,#eaf6f0,#dcefe5);color:#167a55;font-size:13px;font-weight:700}.user-copy strong,.user-copy span{display:block}.user-menu-wrap{position:relative}.user-chevron{color:#839289;transition:transform .16s ease}.user-chevron.open{transform:rotate(180deg)}.user-dropdown{position:absolute;top:calc(100% + 10px);right:0;z-index:80;width:176px;overflow:hidden;border:1px solid #dfe9e3;border-radius:11px;background:#fffffffa;box-shadow:0 14px 36px #25483824;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.user-dropdown-meta{border-bottom:1px solid #edf2ef;padding:12px 14px}.user-dropdown-meta strong,.user-dropdown-meta span{display:block}.user-dropdown-meta strong{color:#2e493c;font-size:11px}.user-dropdown-meta span{margin-top:3px;color:#89988f;font-size:9px}.user-dropdown-logout{display:flex;width:100%;align-items:center;gap:9px;background:transparent;padding:11px 14px;color:#66786f;font-size:11px;text-align:left}.user-dropdown-logout:hover{background:#eef7f2;color:#167a55}.user-menu-enter-active,.user-menu-leave-active{transition:opacity .14s ease,transform .14s ease}.user-menu-enter-from,.user-menu-leave-to{opacity:0;transform:translateY(-5px)}.user-copy strong{color:#34425d;font-size:12px}.user-copy span{margin-top:2px;color:#8995a7;font-size:10px}.content{width:100%;max-width:1800px;margin:0 auto;padding:26px 28px 36px}.page-toolbar{display:flex;justify-content:flex-end;margin-bottom:14px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:20px}.eyebrow{margin:0 0 7px;color:#79aa90;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:600;letter-spacing:.13em}.page-heading h1{margin:0;color:#14213b;font-size:27px;line-height:1.2;letter-spacing:-.02em}.heading-note{margin:7px 0 0;color:#77849b;font-size:13px}.heading-actions{display:flex;gap:9px}.select-wrap,.refresh-button{display:flex;height:38px;align-items:center;gap:8px;border:1px solid var(--border);border-radius:9px;background:#fff;padding:0 11px;color:#56647b}.select-wrap select{min-width:106px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;outline:0;background:transparent;color:#35435c;font-size:13px;font-weight:500}.refresh-button{font-size:12px}.refresh-button span{width:7px;height:7px;border-radius:50%;background:#18aa89}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.kpi-card{position:relative;display:flex;min-height:124px;align-items:center;gap:14px;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#fffffff0;padding:18px;box-shadow:0 6px 22px #2639600b}.kpi-icon{display:grid;width:45px;height:45px;flex:0 0 45px;place-items:center;border-radius:13px}.kpi-icon.blue{color:#167a55;background:#eaf6f0}.kpi-icon.indigo{color:#277e62;background:#edf7f2}.kpi-icon.violet{color:#4c936e;background:#eef8f2}.kpi-icon.teal{color:#0a8f7d;background:#e9f8f5}.kpi-copy{min-width:90px}.kpi-copy span,.kpi-copy strong,.kpi-copy small{display:block}.kpi-copy span{color:#647189;font-size:13px}.kpi-copy strong{margin-top:3px;color:#17243f;font-family:IBM Plex Mono,Noto Sans SC,monospace;font-size:29px;line-height:1.1}.kpi-copy small{margin-top:6px;color:#15947e;font-size:11px}.mini-bars{position:absolute;right:18px;bottom:20px;display:flex;width:74px;height:44px;align-items:flex-end;gap:4px}.mini-bars i{width:7px;min-height:6px;border-radius:3px 3px 1px 1px;background:linear-gradient(#4b9a74,#d8eae0)}.analysis-grid,.detail-grid{display:grid;gap:14px;margin-bottom:14px}.analysis-grid{grid-template-columns:minmax(520px,1.8fr) minmax(350px,1.08fr) minmax(280px,.82fr)}.detail-grid{grid-template-columns:minmax(420px,1.16fr) minmax(420px,1.04fr) minmax(300px,.8fr)}.panel{min-width:0;border:1px solid var(--border);border-radius:14px;background:#fffffff5;box-shadow:0 7px 24px #2639600a}.panel-head{display:flex;min-height:69px;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #edf0f5;padding:14px 17px}.panel-head h2{margin:0;color:#22304b;font-size:15px;font-weight:650}.panel-head p{margin:4px 0 0;color:#8a96a8;font-size:11px}.text-button{padding:5px;background:transparent;color:#287d5e;font-size:11px;font-weight:500}.range-switch{display:flex;border:1px solid #e2e7ef;border-radius:8px;background:#f7f9fc;padding:3px}.range-switch button{border-radius:6px;background:transparent;padding:5px 8px;color:#7a879b;font-size:10px}.range-switch button.active{background:#fff;color:var(--primary);box-shadow:0 2px 8px #23345b17;font-weight:600}.chart-legend,.factor-legend{display:flex;align-items:center;gap:18px;padding:12px 18px 0;color:#7b879a;font-size:10px}.chart-legend span,.factor-legend span{display:flex;align-items:center;gap:6px}.legend-line{display:block;width:16px;height:2px;border-radius:3px}.legend-line.portfolio{background:#167a55}.legend-line.benchmark{background:#20a491}.legend-box{width:10px;height:7px;border-radius:2px;background:#4d9b726b}.performance-chart{height:250px;padding:0 12px}.performance-chart svg{width:100%;height:100%}.chart-grid line{stroke:#e9edf4;stroke-width:1}.y-labels text,.x-labels text{fill:#9aa4b5;font-family:IBM Plex Mono,monospace;font-size:9px}.line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6}.portfolio-line{stroke:#167a55}.benchmark-line{stroke:#21a590;stroke-dasharray:5 4}.portfolio-point{fill:#fff;stroke:#167a55;stroke-width:1.8;opacity:.72}.portfolio-point:hover{r:5;opacity:1}.drawdown-bars rect{fill:#4d9b7259}.performance-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:0 17px 17px;overflow:hidden;border:1px solid #e8edf4;border-radius:10px;background:#e8edf4}.performance-stats div{background:#fbfcfe;padding:11px 13px}.performance-stats span,.performance-stats strong,.performance-stats small{display:block}.performance-stats span{color:#8390a4;font-size:10px}.performance-stats strong{margin-top:3px;color:#24324c;font-family:IBM Plex Mono,monospace;font-size:17px}.performance-stats small{margin-top:3px;color:#949eae;font-size:9px}.factor-legend{justify-content:flex-end}.factor-legend i{width:8px;height:8px;border-radius:2px}.factor-legend .ic,.factor-bars .ic{background:#248d65}.factor-legend .rank,.factor-bars .rank{background:#579c76}.factor-legend .stable,.factor-bars .stable{background:#29b6a0}.factor-panel{display:flex;flex-direction:column;height:0;min-height:100%;overflow:hidden}.factor-panel .panel-head,.factor-panel .factor-legend{flex:none}.factor-list{flex:1 1 auto;min-height:0;overflow:auto;padding:8px 16px 15px}.factor-row{display:grid;grid-template-columns:minmax(108px,148px) minmax(80px,1fr) 108px;align-items:center;gap:10px;min-height:47px;border-bottom:1px solid #f0f2f6}.factor-row:last-child{border:0}.factor-name strong,.factor-name small{display:block}.factor-name strong{color:#3d4a62;font-size:11px;line-height:1.3}.factor-name small{margin-top:2px;overflow:hidden;color:#9aa5b5;font-family:IBM Plex Mono,monospace;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.factor-bars{display:grid;gap:3px}.factor-bars span{display:block;min-width:3px;height:4px;border-radius:4px}.factor-values{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;color:#5f6e86;font-family:IBM Plex Mono,monospace;font-size:8px;text-align:right}.dots-button{display:flex;gap:3px;background:transparent;padding:8px 2px}.dots-button span{width:3px;height:3px;border-radius:50%;background:#8c97a8}.experiment-list{display:grid;gap:9px;padding:13px}.experiment-item{border:1px solid #e8edf4;border-radius:10px;background:#fbfcfe;padding:11px}.experiment-line,.experiment-progress{display:flex;align-items:center;justify-content:space-between;gap:8px}.experiment-line strong{overflow:hidden;color:#36445e;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.status{flex:0 0 auto;border-radius:20px;padding:3px 7px;font-size:8px;font-weight:600}.status.blue{color:#167a55;background:#e6f4ec}.status.green{color:#0b8b78;background:#e7f7f3}.status.violet{color:#4b8968;background:#eaf6ef}.experiment-progress{margin-top:8px}.experiment-progress .progress-track{flex:1;margin:0}.experiment-progress>span{flex:0 0 auto;color:#7d899c;font-size:9px;font-variant-numeric:tabular-nums}.progress-track{height:5px;overflow:hidden;border-radius:9px;background:#e8edf4}.progress-track span{display:block;height:100%;border-radius:inherit}.progress-track span.blue{background:#238c64}.progress-track span.green{background:#27aa92}.progress-track span.violet{background:#62a782}.experiment-item>small{display:block;margin-top:3px;color:#a0a9b8;font-size:8px}.correlation-panel,.strategy-panel,.assets-panel{min-height:330px}.version-chip,.healthy{border-radius:20px;background:#f0f3f8;padding:5px 8px;color:#69768b;font-family:IBM Plex Mono,monospace;font-size:9px}.heatmap-metrics{display:grid;grid-template-columns:92px repeat(3,1fr);gap:7px;padding:14px 16px 0;color:#8b97a8;font-size:9px;text-align:center}.heatmap-wrap{display:grid;grid-template-columns:92px minmax(250px,1fr);gap:7px;padding:8px 16px}.heatmap-labels{display:grid;align-items:center;color:#718096;font-size:9px;text-align:right}.heatmap{display:grid;gap:3px}.heat-cell{display:grid;min-height:31px;place-items:center;border-radius:4px;font-family:IBM Plex Mono,monospace;font-size:8px}.heat-scale{display:flex;align-items:center;justify-content:flex-end;gap:5px;padding:0 16px 13px;color:#939eae;font-family:IBM Plex Mono,monospace;font-size:8px}.heat-scale i,.heat-scale b{display:block;width:42px;height:5px;border-radius:6px}.heat-scale i{background:linear-gradient(90deg,#478764,#e3f1e9)}.heat-scale b{background:linear-gradient(90deg,#eaf5ef,#167a55)}.table-wrap{overflow-x:auto;padding:7px 14px 0}table{width:100%;border-collapse:collapse;font-size:10px}th,td{border-bottom:1px solid #edf0f5;padding:11px 9px;text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{color:#8c97a8;font-size:9px;font-weight:500}td{color:#4c5a70;font-family:IBM Plex Mono,Noto Sans SC,monospace}td:first-child{font-family:Noto Sans SC,sans-serif;font-weight:500}tr.best td{background:#eef8f2}tr.best td:first-child{border-radius:7px 0 0 7px}tr.best td:last-child{border-radius:0 7px 7px 0}.positive{color:#0b907c;font-weight:600}.best-mark{display:inline-grid;width:22px;height:22px;margin-right:5px;place-items:center;border-radius:6px;background:#dcefe5;color:#167a55;vertical-align:middle}.table-foot{display:flex;flex-wrap:wrap;gap:8px 16px;padding:14px 16px;color:#929dad;font-size:8px}.healthy{display:flex;align-items:center;gap:6px;color:#0a8d79;background:#eaf8f5;font-family:Noto Sans SC,sans-serif}.healthy i{width:6px;height:6px;border-radius:50%;background:#18aa89}.asset-list{padding:8px 14px}.asset-row{display:grid;grid-template-columns:34px minmax(100px,1fr) 60px;align-items:center;gap:10px;min-height:50px;border-bottom:1px solid #edf0f5}.asset-row:last-child{border:0}.asset-icon{display:grid;width:32px;height:32px;place-items:center;border-radius:8px;background:#eaf6f0;color:#167a55}.asset-copy>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:8px}.asset-copy strong{color:#46536a;font-size:10px}.asset-copy div>span{color:#9aa4b3;font-family:IBM Plex Mono,monospace;font-size:8px}.asset-progress{height:3px;margin-top:6px;border-radius:6px;background:#e7ecf3}.asset-progress span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#278b65,#27aa92)}.asset-status{text-align:right}.asset-status strong,.asset-status small{display:block}.asset-status strong{color:#0a8e7a;font-family:IBM Plex Mono,monospace;font-size:10px}.asset-status small{margin-top:3px;color:#9ba5b4;font-size:8px}.asset-footer{display:flex;align-items:center;gap:7px;border-top:1px solid #edf0f5;padding:11px 16px;color:#6f7d92;font-size:9px}.asset-footer svg{color:#0d9a84}.asset-footer span{margin-left:auto;color:#9ba5b4;font-family:IBM Plex Mono,monospace}.sidebar-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;background:#101d3447;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media(max-width:1480px){.analysis-grid{grid-template-columns:minmax(500px,1.65fr) minmax(340px,1fr)}.experiments-panel{grid-column:1 / -1}.experiment-list{grid-template-columns:repeat(4,1fr)}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.assets-panel{grid-column:1 / -1}.asset-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0 18px}}@media(max-width:1120px){.sidebar{width:214px;transform:translate(-100%);transition:transform .22s ease}.sidebar.open{transform:translate(0)}.sidebar-close,.menu-button{display:grid}.workspace{margin-left:0}.analysis-grid,.detail-grid{grid-template-columns:1fr}.experiments-panel,.assets-panel{grid-column:auto}.experiment-list{grid-template-columns:repeat(2,1fr)}}@media(max-width:820px){.topbar{padding:0 16px}.environment,.updated,.user-copy,.topbar-right>.global-search{display:none}.content{padding:20px 16px 30px}.page-heading{align-items:flex-start;flex-direction:column}.kpi-grid,.performance-stats{grid-template-columns:repeat(2,1fr)}.detail-grid{display:block}.detail-grid .panel{margin-bottom:14px}}@media(max-width:560px){.market-selector{padding:0 9px}.kpi-grid{grid-template-columns:1fr}.kpi-card{min-height:108px}.analysis-grid{display:block}.analysis-grid .panel{margin-bottom:14px}.panel-head{align-items:flex-start}.range-switch{display:grid;grid-template-columns:repeat(2,1fr)}.performance-chart{height:220px;overflow-x:auto}.performance-chart svg{width:650px}.factor-row{grid-template-columns:92px minmax(90px,1fr)}.factor-values{display:none}.experiment-list,.asset-list{display:block}.experiment-item{margin-bottom:9px}.heatmap-wrap{grid-template-columns:64px minmax(250px,1fr);overflow-x:auto}.table-wrap{padding-bottom:4px}.heading-actions{width:100%}.heading-actions .app-select{flex:1}}.module-content{color:#1d2940}.module-heading,.module-title-wrap,.filter-cluster,.strategy-topline,.control-title,.report-toolbar,.portfolio-toolbar,.review-toolbar{display:flex;align-items:center}.module-heading{justify-content:space-between;gap:24px;margin-bottom:16px}.module-title-wrap{gap:13px}.module-title-icon{display:grid;width:46px;height:46px;flex:0 0 46px;place-items:center;border:1px solid #d9ece2;border-radius:13px;background:linear-gradient(145deg,#fff,#e9f6ef);color:var(--primary);box-shadow:0 8px 22px #167a5514}.module-heading h1{margin:0;color:#14213b;font-size:27px;line-height:1.2;letter-spacing:-.02em}.primary-action,.secondary-action,.danger-action,.wide-action{display:inline-flex;min-height:38px;align-items:center;justify-content:center;gap:7px;border-radius:9px;padding:0 14px;font-size:12px;font-weight:600;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.primary-action{background:linear-gradient(135deg,#167a55,#238b63);color:#fff;box-shadow:0 7px 16px #167a552b}.primary-action:hover,.wide-action:hover{box-shadow:0 9px 22px #167a553d;transform:translateY(-1px)}.primary-action.small,.secondary-action,.danger-action{min-height:34px;padding:0 12px}.primary-action:disabled,.wide-action:disabled{cursor:wait;opacity:.72;transform:none}.secondary-action{border:1px solid #dce3ef;background:#fff;color:#536179}.secondary-action:hover{border-color:#c4d7ce;background:#f4faf7;color:var(--primary)}.danger-action{border:1px solid #f2d0d0;background:#fff7f7;color:#c74f4f}.flow-rail{display:grid;grid-template-columns:repeat(9,minmax(74px,1fr));overflow:hidden;margin-bottom:18px;border:1px solid #e1e7f0;border-radius:11px;background:#ffffffdb}.flow-rail button{position:relative;display:flex;height:42px;align-items:center;justify-content:center;gap:6px;border-right:1px solid #edf0f5;background:transparent;color:#8290a5;font-size:11px;white-space:nowrap}.flow-rail button:last-child{border-right:0}.flow-rail button>span{display:grid;width:19px;height:19px;place-items:center;border:1px solid #dbe2ee;border-radius:50%;color:#8190a6;font-family:IBM Plex Mono,monospace;font-size:9px}.flow-rail button:hover{background:#f4faf7;color:#52627a}.flow-rail button.passed{color:#557167}.flow-rail button.passed>span{border-color:#bfe3d9;background:#eaf8f4;color:#0b9c87}.flow-rail button.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.flow-rail button.active:after{position:absolute;right:15px;bottom:0;left:15px;height:2px;border-radius:3px 3px 0 0;background:var(--primary);content:""}.flow-rail button.active>span{border-color:var(--primary);background:var(--primary);color:#fff}.module-kpi-grid{display:grid;gap:12px;margin-bottom:14px}.module-kpi-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.module-kpi-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.module-kpi-grid.six{grid-template-columns:repeat(6,minmax(0,1fr))}.module-kpi,.metric-card{min-width:0;border:1px solid var(--border);border-radius:12px;background:#fffffff5;box-shadow:0 7px 20px #2b3c5b09}.module-kpi{display:flex;min-height:94px;align-items:center;gap:12px;padding:15px}.module-kpi>div:last-child{min-width:0}.module-kpi span,.module-kpi strong,.module-kpi small,.metric-card span,.metric-card strong,.metric-card small{display:block}.module-kpi span,.metric-card span{margin-bottom:5px;color:#77849a;font-size:11px}.module-kpi strong{color:#1c2b46;font-family:IBM Plex Mono,monospace;font-size:21px;letter-spacing:-.04em}.module-kpi small,.metric-card small{overflow:hidden;margin-top:5px;color:#929cad;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.kpi-symbol{display:grid;width:39px;height:39px;flex:0 0 39px;place-items:center;border-radius:10px}.kpi-symbol.blue{background:#eaf6f0;color:#167a55}.kpi-symbol.teal{background:#e9f8f4;color:#0b9c87}.kpi-symbol.violet{background:#edf8f1;color:#4b8b69}.kpi-symbol.amber{background:#fff4e4;color:#c17b20}.metric-card{padding:14px 16px}.metric-card strong{color:#24334e;font-family:IBM Plex Mono,monospace;font-size:19px}.positive-text{color:#0a9681!important}.negative-text{color:#d25a5a!important}.warning-text{color:#bd7922!important}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.module-grid .span-2{grid-column:span 2}.module-panel{min-width:0;border:1px solid var(--border);border-radius:13px;background:#fffffff7;box-shadow:0 8px 24px #2b3c5b0a}.module-panel-head{display:flex;min-height:60px;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #edf0f5;padding:12px 16px}.module-panel-head h2,.module-panel-head h3{margin:0;color:#263550;font-size:14px}.module-panel-head p{margin:4px 0 0;color:#8b96a8;font-size:9px}.filter-cluster{flex-wrap:wrap;justify-content:flex-end;gap:7px}.compact-select{display:flex;height:34px;align-items:center;gap:6px;border:1px solid #dfe5ee;border-radius:8px;background:#fff;padding:0 9px;color:#77849a}.compact-select select{max-width:122px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;outline:0;background:transparent;color:#536078;font-size:10px}.module-table-wrap{overflow-x:auto}.module-table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}.module-table th{height:37px;border-bottom:1px solid #edf0f5;background:#fafbfc;color:#8a96a8;font-size:9px;font-weight:600;letter-spacing:.03em}.module-table th:first-child,.module-table td:first-child{padding-left:16px}.module-table th:last-child,.module-table td:last-child{padding-right:16px}.module-table th,.module-table td{padding:9px 11px}.module-table td{border-bottom:1px solid #f0f2f6;color:#5d6b80;font-family:IBM Plex Mono,PingFang SC,sans-serif;font-size:10px}.module-table tbody tr{transition:background .15s ease}.module-table tbody tr:hover,.module-table tbody tr.selected{background:#f4faf7}.module-table tbody tr:last-child td{border-bottom:0}.name-cell strong,.name-cell small{display:block}.name-cell strong{color:#34425b;font-family:PingFang SC,sans-serif;font-size:11px;font-weight:600}.name-cell small{margin-top:4px;color:#929daf;font-size:8px}.quality-cell{display:flex;align-items:center;gap:7px}.quality-cell>i{width:48px;height:4px;overflow:hidden;border-radius:4px;background:#e8edf4}.quality-cell>i>b{display:block;height:100%;border-radius:inherit;background:#31a58f}.status-pill{display:inline-flex;min-height:21px;align-items:center;justify-content:center;gap:4px;border-radius:20px;padding:0 8px;font-style:normal;font-size:9px;font-weight:600}.status-pill.success{background:#e9f8f3;color:#0a917d}.status-pill.warning{background:#fff4e4;color:#b87620}.status-pill.neutral{background:#f0f2f6;color:#778398}.status-pill.running{background:#e8f5ee;color:#167a55}.status-pill.danger{background:#ffeded;color:#c84d4d}.metric-strong{color:#326b52!important;font-weight:700}.soft-tag{display:inline-flex;border:1px solid #e3e8f1;border-radius:6px;background:#f8f9fc;padding:4px 7px;color:#68768d;font-size:9px}.icon-plain,.row-action,.text-link{display:inline-flex;align-items:center;gap:5px;background:transparent;color:#758299}.icon-plain{display:grid;width:32px;height:32px;place-items:center;border-radius:8px}.icon-plain:hover,.row-action:hover,.text-link:hover{background:#f1f4fa;color:var(--primary)}.row-action,.text-link{padding:5px 7px;border-radius:6px;font-size:9px}.quality-panel{min-height:390px}.quality-score{position:relative;display:grid;width:144px;height:144px;margin:20px auto 10px;place-items:center}.quality-score>div{position:absolute;z-index:1;text-align:center}.quality-score strong,.quality-score span{display:block}.quality-score strong{color:#263751;font-family:IBM Plex Mono,monospace;font-size:26px}.quality-score span{margin-top:4px;color:#8b96a8;font-size:9px}.quality-score svg{width:132px;transform:rotate(-90deg)}.quality-score circle{fill:none;stroke:#edf0f4;stroke-width:9px}.quality-score .score-ring{stroke:#19a38b;stroke-dasharray:99.21 100;stroke-linecap:round}.rule-list{padding:0 17px}.rule-list>div{display:flex;height:34px;align-items:center;justify-content:space-between;border-bottom:1px solid #f0f2f6;color:#607087;font-size:10px}.rule-list span{display:flex;align-items:center;gap:7px}.rule-list svg{color:#0b9c87}.rule-list strong{color:#3d4b63;font-family:IBM Plex Mono,monospace;font-size:9px}.wide-action{width:calc(100% - 34px);margin:16px 17px;background:#eaf6f0;color:var(--primary)}.spinning{animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.check-button{display:grid;width:18px;height:18px;place-items:center;border:1px solid #d9e0ea;border-radius:5px;background:#fff;color:#fff}.check-button.checked{border-color:var(--primary);background:var(--primary)}.strategy-topline{min-height:58px;gap:10px;margin-bottom:14px;border:1px solid var(--border);border-radius:12px;background:#fff;padding:9px 12px}.workspace-select{position:relative;display:flex;align-items:center;gap:9px}.workspace-select>span{color:#8a96a8;font-size:9px}.workspace-select select{min-width:210px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;outline:0;background:transparent;color:#33415a;font-size:12px;font-weight:600}.draft-state{display:flex;flex:1;align-items:center;gap:6px;color:#8a96a8;font-size:9px}.draft-state>span{width:7px;height:7px;border-radius:50%;background:#1aaa8d}.draft-state>span.dirty{background:#d38b2a}.strategy-builder,.parameter-panel{min-height:440px}.signal-flow{display:flex;align-items:center;gap:8px;padding:27px 18px 21px}.signal-flow>svg{flex:0 0 auto;color:#bec7d6}.signal-stage{position:relative;display:flex;min-width:0;flex:1;min-height:94px;align-items:flex-start;gap:9px;border:1px solid #dfe6f1;border-radius:10px;background:#fbfcfe;padding:14px 10px}.signal-stage>span{display:grid;width:23px;height:23px;flex:0 0 23px;place-items:center;border-radius:7px;background:#eaf6f0;color:var(--primary);font-family:IBM Plex Mono,monospace;font-size:8px}.signal-stage small,.signal-stage strong,.signal-stage em{display:block}.signal-stage small{color:#929daf;font-size:8px}.signal-stage strong{margin-top:6px;color:#34435d;font-size:10px;line-height:1.45}.signal-stage em{margin-top:5px;color:#8a96a8;font-size:7px;font-style:normal}.signal-stage>button{position:absolute;right:6px;bottom:6px;padding:4px;background:transparent;color:#93a0b3}.signal-stage>button:hover{color:var(--primary)}.factor-weight-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 26px;border-top:1px solid #edf0f5;padding:22px 20px}.factor-weight-list>div{display:grid;grid-template-columns:1fr auto;gap:7px;align-items:center}.factor-weight-list span{overflow:hidden;color:#5d6b81;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.factor-weight-list span>i{display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%}.factor-weight-list strong{color:#40506a;font-family:IBM Plex Mono,monospace;font-size:9px}.factor-weight-list b{grid-column:1 / -1;height:4px;overflow:hidden;border-radius:4px;background:#edf0f5}.factor-weight-list em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#167a55,#66a985)}.form-stack{display:grid;gap:14px;padding:17px}.form-stack label>span,.backtest-control label>span,.review-toolbar label>span{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;color:#7b879b;font-size:9px}.form-stack label>span b{color:var(--primary);font-family:IBM Plex Mono,monospace}.form-stack select,.form-stack input[type=number],.backtest-control select,.backtest-control input,.review-toolbar select{width:100%;height:35px;border:1px solid #dfe5ee;border-radius:8px;outline:0;background:#fbfcfe;padding:0 9px;color:#3f4e67;font-size:10px}input[type=range]{width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:4px;background:#e5eaf2;accent-color:var(--primary)}input[type=range]::-webkit-slider-thumb{width:14px;height:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:3px solid #fff;border-radius:50%;background:var(--primary);box-shadow:0 1px 5px #1b674861}.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.backtest-control{position:relative;display:grid;grid-template-columns:1.45fr repeat(3,minmax(110px,.7fr)) auto;align-items:end;gap:12px;margin-bottom:14px;padding:13px 15px}.control-title{align-self:center;gap:10px}.control-title strong,.control-title span{display:block}.control-title strong{color:#31405a;font-size:12px}.control-title span{margin-top:4px;color:#8d98a9;font-size:8px}.run-progress{position:absolute;right:0;bottom:-1px;left:0;height:3px;overflow:hidden;border-radius:0 0 13px 13px;background:#edf0f5}.run-progress span{display:block;height:100%;background:linear-gradient(90deg,#167a55,#48a286);transition:width .2s ease}.large-line-chart{position:relative;height:300px;padding:14px 16px 25px 48px}.large-line-chart svg{width:100%;height:245px;overflow:visible}.grid-lines line{stroke:#ebeff5;stroke-width:1;stroke-dasharray:4 4}.equity-line,.benchmark-line{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}.equity-line{stroke:#167a55}.benchmark-line{stroke:#9aa7bb;stroke-width:1.6;stroke-dasharray:5 4}.chart-y{position:absolute;top:27px;bottom:37px;left:16px;display:flex;flex-direction:column;justify-content:space-between;color:#9aa4b4;font-family:IBM Plex Mono,monospace;font-size:8px}.chart-x{display:flex;justify-content:space-between;color:#9aa4b4;font-family:IBM Plex Mono,monospace;font-size:8px}.chart-legend{display:flex;gap:13px;color:#768398;font-size:9px}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{display:block;width:15px;height:2px}.chart-legend .strategy{background:#167a55}.chart-legend .benchmark{background:#9aa7bb}.stability-list{padding:12px 16px 4px}.stability-list>div{display:grid;grid-template-columns:1fr auto;gap:7px;border-bottom:1px solid #f0f2f6;padding:12px 0}.stability-list span{color:#4e5d74;font-size:10px;font-weight:600}.stability-list b{color:#939daf;font-size:8px;font-weight:400}.stability-list strong{color:#167a55;font-family:IBM Plex Mono,monospace;font-size:9px}.stability-list i{grid-column:1 / -1;height:4px;overflow:hidden;border-radius:3px;background:#e9edf3}.stability-list em{display:block;height:100%;border-radius:inherit;background:#429671}.validation-note,.model-check{display:flex;align-items:center;gap:9px;margin:16px;border:1px solid #d6eee7;border-radius:9px;background:#f1fbf8;padding:11px;color:#0a917d}.validation-note strong,.validation-note span,.model-check strong,.model-check span{display:block}.validation-note strong,.model-check strong{font-size:10px}.validation-note span,.model-check span{margin-top:3px;color:#6e8d84;font-size:8px}.running-state{display:flex;min-height:390px;flex-direction:column;align-items:center;justify-content:center;color:#167a55}.running-state strong{margin-top:16px;color:#34435d;font-size:14px}.running-state span{margin-top:7px;color:#8a96aa;font-size:10px}.running-state>div{width:340px;height:6px;overflow:hidden;margin-top:22px;border-radius:10px;background:#e7ebf2}.running-state>div i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#167a55,#61aa8b);transition:width .2s ease}.experiment-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:13px}.experiment-cards>button{min-width:0;border:1px solid #e1e6ef;border-radius:10px;background:#fff;padding:12px;text-align:left;transition:.16s ease}.experiment-cards>button:hover,.experiment-cards>button.active{border-color:#bdd7ca;background:#f4faf7;box-shadow:0 6px 15px #167a550f}.experiment-cards>button>div:first-child,.experiment-cards footer{display:flex;align-items:center;justify-content:space-between;gap:7px}.experiment-cards>button>div:first-child>span{color:#7f8ba0;font-family:IBM Plex Mono,monospace;font-size:8px}.experiment-cards>button>strong{display:block;overflow:hidden;margin-top:9px;color:#35435b;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.experiment-cards>button>small{display:block;overflow:hidden;margin-top:5px;color:#919bad;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.experiment-cards footer{margin-top:11px;color:#929cad;font-size:8px}.experiment-cards footer b{margin-left:auto;color:#167a55;font-family:IBM Plex Mono,monospace}.mini-progress{height:4px;overflow:hidden;margin-top:11px;border-radius:4px;background:#e7ebf2}.mini-progress i{display:block;height:100%;border-radius:inherit;background:#167a55}.experiment-detail,.model-detail{padding-bottom:4px}.experiment-detail>h3{margin:18px 17px 8px;color:#33425c;font-size:14px;line-height:1.5}.experiment-detail>.status-pill{margin-left:17px}.detail-kv{display:grid;grid-template-columns:1fr 1fr;margin:16px;border:1px solid #e8ecf2;border-radius:9px;background:#fafbfc}.detail-kv>div{padding:10px;border-right:1px solid #e8ecf2;border-bottom:1px solid #e8ecf2}.detail-kv>div:nth-child(2n){border-right:0}.detail-kv>div:nth-last-child(-n+2){border-bottom:0}.detail-kv span,.detail-kv strong{display:block}.detail-kv span{color:#919cad;font-size:8px}.detail-kv strong{overflow:hidden;margin-top:5px;color:#46546b;font-family:IBM Plex Mono,PingFang SC,sans-serif;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.detail-actions{display:flex;gap:8px;margin:16px}.review-toolbar{gap:12px;margin-bottom:14px;padding:11px 14px}.review-toolbar label{min-width:210px}.toolbar-spacer{flex:1}.attribution-list{padding:12px 16px}.attribution-list>div{padding:11px 0;border-bottom:1px solid #f0f2f6}.attribution-list>div:last-child{border-bottom:0}.attribution-list>div>div{display:flex;align-items:center;justify-content:space-between}.attribution-list span{display:flex;align-items:center;gap:7px;color:#56647b;font-size:9px}.attribution-list span i{width:7px;height:7px;border-radius:50%}.attribution-list strong{font-family:IBM Plex Mono,monospace;font-size:9px}.attribution-list b{display:block;height:5px;overflow:hidden;margin-top:8px;border-radius:4px;background:#edf0f4}.attribution-list em{display:block;height:100%;border-radius:inherit}.blue{background-color:#167a55}.teal{background-color:#0b9c87}.violet{background-color:#4d9b72}.red{background-color:#d95e62}.heat-legend{display:flex;align-items:center;gap:4px;color:#929cad;font-size:8px}.heat-legend i{width:13px;height:7px;background:#dcede4}.heat-legend i:nth-of-type(2){background:#bbd8ca}.heat-legend i:nth-of-type(3){background:#7fb99a}.heat-legend i:nth-of-type(4){background:#167a55}.session-heatmap{padding:15px 16px 10px}.heat-row{display:grid;grid-template-columns:43px repeat(24,1fr);gap:3px;align-items:center;margin-bottom:4px}.heat-row span{color:#8d98aa;font-family:IBM Plex Mono,monospace;font-size:7px}.heat-row i{height:10px;border-radius:2px}.heat-axis{display:flex;justify-content:space-between;margin:7px 0 0 45px;color:#98a2b3;font-size:7px}.portfolio-toolbar{gap:12px;margin-bottom:14px;padding:12px 14px}.portfolio-toolbar>div:first-child span,.portfolio-toolbar>div:first-child strong{display:block}.portfolio-toolbar>div:first-child span{color:#929cad;font-size:8px}.portfolio-toolbar>div:first-child strong{margin-top:4px;color:#35435b;font-size:12px}.updated-inline{color:#8a96a9;font-size:9px}.weight-editor{display:grid;gap:15px;padding:18px}.weight-editor label{display:grid;grid-template-columns:128px 1fr 34px;align-items:center;gap:9px}.weight-editor span{color:#58667c;font-size:9px}.weight-editor span i,.donut-legend i{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%}.weight-editor strong{color:#3d4c64;font-family:IBM Plex Mono,monospace;font-size:9px;text-align:right}.w1{background:#167a55!important}.w2{background:#19a38b!important}.w3{background:#4d9b72!important}.w4{background:#db9537!important}.w5{background:#a5b0c1!important}.allocation-bar{display:flex;height:8px;overflow:hidden;margin:1px 18px 18px;border-radius:8px;background:#edf0f4}.allocation-bar i{display:block;height:100%;transition:width .18s ease}.corr-matrix{display:grid;grid-template-columns:56px repeat(4,1fr);gap:5px;padding:17px}.corr-matrix span,.corr-matrix strong{display:grid;min-height:24px;place-items:center;color:#8490a2;font-size:8px;font-weight:500}.corr-matrix i{display:grid;min-height:41px;place-items:center;border-radius:6px;font-family:IBM Plex Mono,monospace;font-size:8px;font-style:normal}.risk-donut{display:flex;align-items:center;justify-content:center;gap:24px;padding:22px 16px}.donut-chart{display:grid;width:135px;height:135px;place-items:center;border-radius:50%;background:conic-gradient(#167a55 0,#167a55 39%,#19a38b 39%,#19a38b 65%,#4d9b72 65%,#4d9b72 82%,#db9537 82%,#db9537 94%,#a5b0c1 94%)}.donut-chart:after{grid-area:1/1;width:82px;height:82px;border-radius:50%;background:#fff;content:""}.donut-chart span{z-index:1;grid-area:1/1;text-align:center}.donut-chart strong,.donut-chart small{display:block}.donut-chart strong{color:#30415d;font-family:IBM Plex Mono,monospace;font-size:15px}.donut-chart small{margin-top:3px;color:#8d98aa;font-size:7px}.donut-legend{display:grid;gap:10px;min-width:120px}.donut-legend span{display:flex;align-items:center;color:#647188;font-size:8px}.donut-legend b{margin-left:auto;color:#38465f;font-family:IBM Plex Mono,monospace}.model-hero{display:flex;align-items:center;gap:11px;margin:17px}.model-cube{display:grid;width:48px;height:48px;flex:0 0 48px;place-items:center;border-radius:12px;background:linear-gradient(145deg,#eaf6f0,#def0e6);color:#167a55}.model-hero strong,.model-hero span{display:block}.model-hero strong{color:#33425b;font-size:12px}.model-hero span{margin-top:5px;color:#929cad;font-size:8px}.report-toolbar{justify-content:space-between;gap:14px;margin-bottom:14px}.report-tabs{display:flex;overflow-x:auto;border:1px solid #dfe5ef;border-radius:9px;background:#fff;padding:3px}.report-tabs button{min-height:31px;padding:0 13px;border-radius:7px;background:transparent;color:#738096;font-size:10px;white-space:nowrap}.report-tabs button.active{background:#eaf6f0;color:#167a55;font-weight:600}.report-layout{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(280px,.8fr);gap:14px}.report-list{display:grid;gap:10px}.report-card{display:flex;gap:14px;border:1px solid var(--border);border-radius:12px;background:#fff;padding:15px;box-shadow:0 7px 20px #2b3c5b09;cursor:pointer;transition:.17s ease}.report-card:hover{border-color:#c6ddd1;box-shadow:0 10px 26px #2a3e6913;transform:translateY(-1px)}.report-card-icon{display:grid;width:43px;height:43px;flex:0 0 43px;place-items:center;border-radius:10px;background:#eaf6f0;color:#167a55}.report-card-main{min-width:0;flex:1}.report-card-top{display:flex;align-items:center;justify-content:space-between}.report-card-top>span{color:#6b887a;font-size:9px;font-weight:600}.report-card h2{margin:7px 0 5px;color:#30405a;font-size:13px}.report-card p{overflow:hidden;margin:0;color:#7b8799;font-size:9px;line-height:1.65;text-overflow:ellipsis;white-space:nowrap}.report-tags{display:flex;gap:5px;margin-top:9px}.report-tags span{border-radius:5px;background:#f3f5f8;padding:3px 6px;color:#8792a3;font-size:7px}.report-card footer{display:flex;align-items:center;gap:13px;margin-top:11px;color:#959faf;font-size:8px}.report-card footer button{display:inline-flex;align-items:center;gap:4px;margin-left:auto;background:transparent;color:#66758b;font-size:8px}.report-card footer button+button{margin-left:0}.report-card footer button:hover{color:#167a55}.report-insight{align-self:start}.insight-total{padding:18px 17px 10px}.insight-total strong,.insight-total span{display:block}.insight-total strong{color:#283953;font-family:IBM Plex Mono,monospace;font-size:28px}.insight-total span{margin-top:3px;color:#8b96a8;font-size:9px}.insight-bars{padding:5px 17px 14px}.insight-bars>div{display:grid;grid-template-columns:64px 1fr 20px;align-items:center;gap:8px;margin-top:12px}.insight-bars span{color:#6f7c91;font-size:8px}.insight-bars b{height:5px;overflow:hidden;border-radius:5px;background:#ebeff5}.insight-bars i{display:block;height:100%;border-radius:inherit;background:#3d936f}.insight-bars strong{color:#45536a;font-family:IBM Plex Mono,monospace;font-size:8px;text-align:right}.review-queue{margin:0 17px 17px;border:1px solid #e3e8f1;border-radius:9px;background:#fafbfc;padding:12px}.review-queue span,.review-queue strong,.review-queue small{display:block}.review-queue span{color:#8b96a8;font-size:8px}.review-queue strong{margin-top:5px;color:#3d4b63;font-size:13px}.review-queue small{margin-top:4px;color:#969faf;font-size:8px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;justify-content:flex-end;background:#1420363d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.detail-drawer{width:min(440px,94vw);height:100%;overflow-y:auto;background:#fff;padding-bottom:20px;box-shadow:-18px 0 45px #22314c29;animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{transform:translate(30px);opacity:.6}}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #e8ecf2;padding:23px 21px 18px}.drawer-head h2{margin:11px 0 0;color:#263650;font-size:19px}.drawer-head p{margin:6px 0 0;color:#8a96a9;font-family:IBM Plex Mono,monospace;font-size:9px}.drawer-head>button{display:grid;width:32px;height:32px;place-items:center;border-radius:8px;background:#f3f5f8;color:#718096}.drawer-description{margin:20px 21px;color:#66748a;font-size:11px;line-height:1.8}.formula-box{margin:0 21px;border:1px solid #e0e6ef;border-radius:9px;background:#f8fafc;padding:12px}.formula-box span,.formula-box code{display:block}.formula-box span{color:#8a96a8;font-size:8px}.formula-box code{overflow-x:auto;margin-top:9px;color:#167a55;font-size:10px;white-space:nowrap}.drawer-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:15px 21px}.drawer-metrics>div{border:1px solid #e6eaf1;border-radius:8px;padding:11px}.drawer-metrics span,.drawer-metrics strong{display:block}.drawer-metrics span{color:#8d98aa;font-size:8px}.drawer-metrics strong{margin-top:5px;color:#2f674f;font-family:IBM Plex Mono,monospace;font-size:14px}.mini-factor-chart{margin:15px 21px;border:1px solid #e5e9f0;border-radius:10px}.mini-factor-chart .module-panel-head{min-height:50px}.mini-factor-chart svg{width:100%;height:130px;padding:12px}.mini-factor-chart path{fill:none;stroke:#167a55;stroke-width:2.5}.mini-factor-chart line{stroke:#d8dee9;stroke-dasharray:4 4}.drawer-section{margin:17px 21px}.drawer-section h3{margin:0 0 10px;color:#46546b;font-size:11px}.drawer-section>span{display:inline-block;margin:0 5px 5px 0;border-radius:6px;background:#f1f4f8;padding:5px 7px;color:#68768c;font-size:8px}.report-cover{display:flex;min-height:210px;flex-direction:column;align-items:flex-start;justify-content:flex-end;margin:20px;border-radius:12px;background:linear-gradient(145deg,#245f48,#2e8765);padding:25px;color:#fff}.report-cover>span{margin:12px 0 8px;font-size:8px;letter-spacing:.14em;opacity:.72}.report-cover>strong{max-width:310px;font-size:20px;line-height:1.5}.report-cover>small{margin-top:14px;font-size:8px;opacity:.72}.report-section{margin:20px}.report-section>span{color:#167a55;font-size:10px;font-weight:700}.report-section p,.report-section li{color:#68758a;font-size:10px;line-height:1.8}.report-section ul{padding-left:18px}.report-preview-chart{display:flex;height:120px;align-items:flex-end;gap:6px;margin:20px;border-bottom:1px solid #dfe4ec}.report-preview-chart div{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(#318968,#c9ded3)}.toast-message{position:fixed;right:26px;bottom:26px;z-index:120;display:flex;min-height:46px;align-items:center;gap:9px;border:1px solid #d3e9e3;border-radius:10px;background:#fff;padding:0 16px;color:#3f5a53;box-shadow:0 14px 35px #2235522b;font-size:11px}.toast-message svg{color:#0b9c87}.toast-enter-active,.toast-leave-active{transition:.2s ease}.toast-enter-from,.toast-leave-to{opacity:0;transform:translateY(9px)}@media(max-width:1380px){.module-kpi-grid.five,.module-kpi-grid.six{grid-template-columns:repeat(3,1fr)}.backtest-control{grid-template-columns:1.2fr repeat(3,1fr) auto}.signal-flow{flex-wrap:wrap}.signal-stage{min-width:42%}.signal-flow>svg{transform:rotate(90deg)}.risk-donut{gap:12px}}@media(max-width:1050px){.flow-rail{display:flex;overflow-x:auto}.flow-rail button{min-width:94px}.module-kpi-grid.four,.module-kpi-grid.five,.module-kpi-grid.six{grid-template-columns:repeat(2,minmax(0,1fr))}.module-grid{grid-template-columns:1fr 1fr}.module-grid .span-2,.quality-panel,.parameter-panel,.experiment-detail,.model-detail{grid-column:1 / -1}.report-layout{grid-template-columns:1fr}.report-insight{display:none}}@media(max-width:760px){.module-heading{align-items:flex-start}.module-heading>.primary-action{display:none}.module-title-icon{width:41px;height:41px;flex-basis:41px}.module-heading h1{font-size:23px}.module-grid{display:block}.module-grid>.module-panel{margin-bottom:12px}.module-kpi-grid.four,.module-kpi-grid.five,.module-kpi-grid.six{grid-template-columns:1fr 1fr}.module-kpi{min-height:86px;padding:12px}.factor-toolbar{align-items:flex-start;flex-direction:column}.filter-cluster{justify-content:flex-start}.strategy-topline{flex-wrap:wrap}.draft-state{order:4;width:100%;flex-basis:100%}.signal-stage{min-width:100%}.factor-weight-list{grid-template-columns:1fr}.backtest-control{grid-template-columns:1fr 1fr}.control-title,.backtest-control .primary-action{grid-column:1 / -1}.experiment-cards{grid-template-columns:1fr}.review-toolbar{flex-wrap:wrap}.review-toolbar label{min-width:calc(50% - 6px)}.review-toolbar .toolbar-spacer{display:none}.session-heatmap{overflow-x:auto}.heat-row,.heat-axis{min-width:620px}.portfolio-toolbar{flex-wrap:wrap}.portfolio-toolbar .toolbar-spacer{display:none}.report-toolbar{align-items:stretch;flex-direction:column}.report-toolbar>.primary-action{align-self:flex-start}}@media(max-width:520px){.module-content{padding-right:12px;padding-left:12px}.heading-note{max-width:260px;line-height:1.5}.module-kpi-grid.four,.module-kpi-grid.five,.module-kpi-grid.six{grid-template-columns:1fr}.module-kpi{min-height:78px}.form-pair{grid-template-columns:1fr}.workspace-select{width:100%}.workspace-select .app-select{min-width:0;flex:1}.backtest-control{grid-template-columns:1fr}.backtest-control label,.backtest-control .primary-action,.control-title{grid-column:1}.large-line-chart{overflow-x:auto}.large-line-chart svg,.chart-x{min-width:620px}.running-state>div{width:80%}.review-toolbar label{width:100%;min-width:0}.weight-editor label{grid-template-columns:108px 1fr 30px}.risk-donut{flex-direction:column}.report-card{padding:12px}.report-card p{white-space:normal}.report-card footer{flex-wrap:wrap}.report-card footer button{margin-left:0}.toast-message{right:12px;bottom:12px;left:12px}}.factor-enrichment-panel{overflow:hidden}.factor-enrichment-layout{display:grid;grid-template-columns:minmax(0,1fr) 288px;min-height:610px}.factor-map-wrap{min-width:0;border-right:1px solid #e8ecf2}.factor-map-meta{display:flex;min-height:44px;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #eef1f5;padding:8px 16px;background:#fbfcfe}.factor-map-legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.factor-map-legend span{display:flex;align-items:center;gap:5px;color:#738096;font-size:8px}.factor-map-legend i{display:block;width:7px;height:7px;border-radius:50%}.factor-map-legend .price{background:#2e8b67}.factor-map-legend .supply{background:#149b83}.factor-map-legend .renewable{background:#5aa07b}.factor-map-legend .weather{background:#5b985f}.factor-map-legend .external{background:#3d8f78}.factor-map-legend .market{background:#5f9c78}.factor-map-legend .unit{background:#4f8a7d}.factor-map-legend .invalid{border:1px dashed #9ba5b4;background:#eef0f3}.distance-hint{display:flex;flex:0 0 auto;align-items:center;gap:5px;color:#6d877b;font-size:8px}.factor-map-canvas{position:relative;min-height:510px;overflow:hidden;background:radial-gradient(circle at 50% 49%,rgba(22,122,85,.065),transparent 31%),linear-gradient(rgba(247,249,252,.6) 1px,transparent 1px),linear-gradient(90deg,rgba(247,249,252,.6) 1px,transparent 1px),#fff;background-size:auto,28px 28px,28px 28px,auto}.factor-map-canvas>svg{display:block;width:100%;height:510px}.factor-core-glow{fill:url(#factorCoreGlow);transform-box:fill-box;transform-origin:center;animation:factor-glow 4.8s ease-in-out infinite}.relation-ring{fill:none;stroke-width:1;transform-box:fill-box;transform-origin:center;animation:factor-spin 90s linear infinite}.ring-candidate{animation-duration:130s;animation-direction:reverse}.ring-history{animation-duration:170s}.ring-core{stroke:#167a5557;stroke-dasharray:4 5}.ring-candidate{stroke:#568b7438;stroke-dasharray:5 7}.ring-history{stroke:#8994a73d;stroke-dasharray:3 8}.ring-label{fill:#8995a8;font-family:PingFang SC,sans-serif;font-size:8px;text-anchor:middle;paint-order:stroke;stroke:#fffffff0;stroke-width:4px}.core-label{fill:#587f6d}.history-label{fill:#9a8490}.center-links line{stroke:#aab6ca;stroke-width:1;stroke-dasharray:3 9;animation:factor-flow 2.6s linear infinite}.center-links line.invalid{stroke:#a7aab1;stroke-dasharray:4 6}.correlation-links line{stroke:#789e8b;stroke-linecap:round;stroke-dasharray:6 10;animation:factor-flow 3.8s linear infinite reverse}.research-center circle:first-child{fill:#167a55;stroke:#fff;stroke-width:4}.research-center .center-orbit{fill:none;stroke:#167a5547;stroke-width:1.5;stroke-dasharray:4 5;transform-box:fill-box;transform-origin:center;animation:factor-spin 22s linear infinite}.research-center text{fill:#ffffffb8;font-family:PingFang SC,sans-serif;font-size:7px;text-anchor:middle;pointer-events:none}.research-center .center-title{fill:#fff;font-size:8.4px;font-weight:700}.stability-list>div{cursor:pointer}.stability-list>div.active strong{color:#0b6b4f}.research-center .center-sub{fill:#ffffff94;font-family:IBM Plex Mono,monospace;font-size:6px;letter-spacing:.09em}.factor-node{cursor:pointer;outline:none;transform-box:fill-box;animation:factor-node-in .55s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i, 0) * 28ms)}.factor-node .node-body{stroke-width:1.6;transform-box:fill-box;transform-origin:center;transition:stroke-width .16s ease,filter .16s ease;animation:factor-breathe 3.8s ease-in-out infinite;animation-delay:calc(var(--i, 0) * 90ms)}.factor-node:hover .node-body,.factor-node.active .node-body{stroke-width:3}.factor-node.active .node-body{filter:url(#nodeShadow) brightness(1.02)}.factor-node .node-focus{fill:#167a550f;stroke:#167a5533;stroke-width:1;stroke-dasharray:3 3;transform-box:fill-box;transform-origin:center;animation:factor-spin 14s linear infinite}.factor-node.price .node-body{fill:#eaf6f0;stroke:#2e8b67}.factor-node.supply .node-body{fill:#e9f8f4;stroke:#149b83}.factor-node.renewable .node-body{fill:#edf8f1;stroke:#5aa07b}.factor-node.weather .node-body{fill:#edf7ef;stroke:#5b985f}.factor-node.external .node-body{fill:#eaf7f2;stroke:#3d8f78}.factor-node.unit .node-body{fill:#edf6f3;stroke:#4f8a7d}.factor-node.market .node-body{fill:#f2f8f4;stroke:#5f9c78}.factor-node.time .node-body{fill:#f3f4f7;stroke:#8792a3}.factor-node.other .node-body{fill:#eff2f6;stroke:#728098}.factor-node.invalid .node-body{fill:#f2f3f5;stroke:#9da6b4;stroke-width:1.3;stroke-dasharray:4 3}.factor-node.invalid{opacity:.72}.factor-node.invalid:hover,.factor-node.invalid.active{opacity:1}.factor-node .node-score{fill:#334567;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:700;text-anchor:middle;pointer-events:none}.factor-node.invalid .node-score{fill:#798392}.factor-node .node-name{fill:#45536a;font-family:PingFang SC,sans-serif;font-size:8px;font-weight:600;text-anchor:middle;paint-order:stroke;pointer-events:none;stroke:#fffffff5;stroke-width:3px}.factor-node .node-code{fill:#929daf;font-family:IBM Plex Mono,monospace;font-size:5.5px;text-anchor:middle;paint-order:stroke;pointer-events:none;stroke:#fffffff5;stroke-width:2px}.factor-node .selected-dot{fill:#167a55;stroke:#fff;stroke-width:2}.factor-node .selected-check{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}@keyframes factor-spin{to{transform:rotate(360deg)}}@keyframes factor-flow{to{stroke-dashoffset:-48}}@keyframes factor-glow{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes factor-node-in{0%{opacity:0}to{opacity:1}}@keyframes factor-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.factor-core-glow,.relation-ring,.center-links line,.correlation-links line,.research-center .center-orbit,.factor-node,.factor-node .node-body,.factor-node .node-focus{animation:none}}.factor-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ba5b4}.factor-empty strong{margin-top:10px;color:#59677d;font-size:12px}.factor-empty span{margin-top:5px;font-size:9px}.factor-selection-tray{display:flex;min-height:54px;align-items:center;gap:7px;overflow-x:auto;border-top:1px solid #edf0f5;padding:9px 15px;background:#fbfcfd;white-space:nowrap}.factor-selection-tray>span{margin-right:3px;color:#65738a;font-size:9px;font-weight:600}.factor-selection-tray button{display:inline-flex;min-height:25px;align-items:center;gap:5px;border:1px solid #d9ebe2;border-radius:14px;background:#eaf6f0;padding:0 8px;color:#3d765b;font-size:8px}.factor-selection-tray button:hover{border-color:#c3dacf;background:#dff0e7}.factor-selection-tray small{margin-left:auto;color:#9aa4b3;font-size:8px}.factor-inspector{min-width:0;background:#fff}.inspector-head{display:flex;min-height:90px;align-items:flex-start;justify-content:space-between;gap:8px;border-bottom:1px solid #edf0f5;padding:16px}.inspector-head>div{min-width:0}.inspector-head>div>span,.inspector-head strong,.inspector-head small{display:block}.inspector-head>div>span{color:#98a2b2;font-size:8px}.inspector-head strong{overflow:hidden;margin-top:7px;color:#31405a;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.inspector-head small{margin-top:5px;color:#929cad;font-family:IBM Plex Mono,monospace;font-size:7px}.relevance-score{position:relative;display:grid;width:128px;height:128px;margin:15px auto 4px;place-items:center}.relevance-score>div{position:absolute;z-index:1;text-align:center}.relevance-score strong,.relevance-score span{display:block}.relevance-score strong{color:#294f3f;font-family:IBM Plex Mono,monospace;font-size:25px}.relevance-score span{margin-top:2px;color:#8d98aa;font-size:8px}.relevance-score svg{width:118px;transform:rotate(-90deg)}.relevance-score svg circle{fill:none;stroke:#edf0f5;stroke-width:8}.relevance-score svg .relevance-ring{stroke:#318766;stroke-linecap:round;transition:stroke-dasharray .22s ease}.relevance-score.invalid svg .relevance-ring{stroke:#9ca5b2}.relevance-score.invalid strong{color:#737d8d}.relevance-score>p{position:absolute;bottom:-1px;margin:0;border-radius:10px;background:#edf7f2;padding:3px 8px;color:#477d67;font-size:7px}.relevance-score.invalid>p{background:#f0f1f3;color:#7b8492}.inspector-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px 14px 13px}.inspector-metrics>div{border:1px solid #e6eaf1;border-radius:8px;background:#fbfcfd;padding:9px 7px;text-align:center}.inspector-metrics span,.inspector-metrics strong{display:block}.inspector-metrics span{color:#939daf;font-size:7px}.inspector-metrics strong{margin-top:5px;color:#394b70;font-family:IBM Plex Mono,monospace;font-size:10px}.inspector-section{border-top:1px solid #eef1f5;padding:13px 15px 5px}.inspector-section>span{color:#53627b;font-size:9px;font-weight:600}.inspector-section p{margin:7px 0 0;color:#7b8799;font-size:8px;line-height:1.75}.factor-health{margin:12px 15px;border:1px solid #e5e9f0;border-radius:9px;background:#fafbfc;padding:11px}.factor-health>div{display:flex;align-items:center;justify-content:space-between}.factor-health span,.factor-health strong,.factor-health small{font-size:8px}.factor-health span{color:#77849a}.factor-health strong{color:#0a927e}.factor-health b{display:block;height:4px;overflow:hidden;margin-top:8px;border-radius:4px;background:#e8edf2}.factor-health b i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#16a087,#62b9a7)}.factor-health small{display:block;margin-top:7px;color:#9aa4b4}.invalid-reason{display:flex;align-items:flex-start;gap:8px;margin:12px 15px;border:1px solid #edd8d8;border-radius:9px;background:#fff8f7;padding:10px;color:#c56868}.invalid-reason svg{flex:0 0 auto}.invalid-reason strong{display:block;font-size:9px}.invalid-reason p{margin:4px 0 0;color:#946f73;font-size:8px;line-height:1.6}.drawer-invalid{margin-right:21px;margin-left:21px}.inspector-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:15px}.inspector-actions .primary-action:disabled{background:#e8eaee;color:#8d96a4;box-shadow:none;cursor:not-allowed}@media(max-width:1260px){.factor-enrichment-layout{grid-template-columns:minmax(0,1fr) 250px}.factor-map-canvas>svg{min-width:760px}.factor-map-canvas{overflow-x:auto}}.model-evaluation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}.model-evaluation-grid .span-2{grid-column:span 2}.chart-legend .prediction{background:#18a08a}.chart-legend .interval{width:14px;height:7px;background:#4f917429}.model-fit-chart{position:relative;height:265px;padding:12px 18px 25px 42px}.model-fit-chart svg{width:100%;height:220px;overflow:visible}.prediction-band{fill:#3d936f1f}.model-actual-line,.model-predicted-line{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.model-actual-line{stroke:#167a55}.model-predicted-line{stroke:#18a08a;stroke-width:1.8;stroke-dasharray:5 3}.actual-dot{fill:#fff;stroke:#167a55;stroke-width:1.5}.model-y-axis{position:absolute;top:30px;bottom:39px;left:12px;display:flex;flex-direction:column;justify-content:space-between;color:#97a1b2;font-family:IBM Plex Mono,sans-serif;font-size:7px}.model-x-axis{display:flex;justify-content:space-between;color:#97a1b2;font-family:IBM Plex Mono,sans-serif;font-size:7px}.model-score-strip{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid #edf0f5;background:#fafbfc}.model-score-strip>div{border-right:1px solid #e7ebf1;padding:10px 12px}.model-score-strip>div:last-child{border-right:0}.model-score-strip span,.model-score-strip strong,.model-score-strip small{display:block}.model-score-strip span{color:#919cad;font-size:7px}.model-score-strip strong{margin-top:4px;color:#374862;font-family:IBM Plex Mono,sans-serif;font-size:10px}.model-score-strip small{margin-top:3px;color:#9aa4b4;font-size:7px}.residual-histogram{padding:19px 15px 7px}.residual-bars{position:relative;display:flex;height:140px;align-items:flex-end;gap:3px;border-bottom:1px solid #dce2eb}.residual-bars>i{z-index:1;flex:1;border-radius:3px 3px 0 0;background:linear-gradient(#69a786,#d8e8df)}.residual-bars svg{position:absolute;top:10px;right:0;bottom:0;left:0;z-index:2;width:100%;height:125px}.residual-bars path{fill:none;stroke:#176f4e;stroke-width:2}.residual-bars>b{position:absolute;z-index:3;top:0;bottom:0;left:50%;border-left:1px dashed #cf6570}.residual-axis{display:flex;justify-content:space-between;margin-top:6px;color:#98a2b3;font-size:7px}.residual-tests{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #edf0f5;background:#fafbfc}.residual-tests>div{border-right:1px solid #e7ebf1;padding:9px 6px;text-align:center}.residual-tests>div:last-child{border-right:0}.residual-tests span,.residual-tests strong{display:block}.residual-tests span{color:#929cad;font-size:7px}.residual-tests strong{margin-top:4px;color:#40506a;font-family:IBM Plex Mono,sans-serif;font-size:8px}.diagnostic-note{display:flex;align-items:center;gap:8px;margin:12px 14px 14px;border:1px solid #d9eee8;border-radius:8px;background:#f1faf7;padding:9px;color:#0b927e}.diagnostic-note strong,.diagnostic-note span{display:block}.diagnostic-note strong{font-size:8px}.diagnostic-note span{margin-top:3px;color:#79928b;font-size:7px}.model-feature-bars{display:grid;gap:14px;padding:18px 16px}.model-feature-bars>div{display:grid;grid-template-columns:92px 1fr 41px;align-items:center;gap:8px}.model-feature-bars span{color:#5d6b81;font-size:8px}.model-feature-bars i{height:6px;overflow:hidden;border-radius:6px;background:#e9edf3}.model-feature-bars b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#167a55,#82b79a)}.model-feature-bars strong{color:#41516b;font-family:IBM Plex Mono,sans-serif;font-size:8px;text-align:right}.segment-score{display:flex;align-items:center;gap:6px}.segment-score i{width:50px;height:4px;overflow:hidden;border-radius:4px;background:#e7ebf1}.segment-score b{display:block;height:100%;border-radius:inherit;background:#2f8765}.segment-score span{color:#748197;font-size:7px}.drift-list{display:grid;gap:12px;padding:16px}.drift-list>div{display:grid;grid-template-columns:1fr 36px;gap:5px;align-items:center}.drift-list span{color:#5f6d83;font-size:8px}.drift-list strong{color:#40506a;font-family:IBM Plex Mono,sans-serif;font-size:8px;text-align:right}.drift-list i{grid-column:1 / -1;height:5px;overflow:hidden;border-radius:5px;background:#e9edf2}.drift-list b{display:block;height:100%;border-radius:inherit;background:#34a58f}.drift-list i.warning b{background:#d39539}.drift-legend{display:flex;min-height:41px;align-items:center;justify-content:center;gap:13px;border-top:1px solid #edf0f5;background:#fafbfc;color:#8792a4;font-size:7px}.drift-legend span{display:flex;align-items:center;gap:4px}.drift-legend i{width:6px;height:6px;border-radius:50%;background:#33a38d}.drift-legend span:nth-child(2) i{background:#d39539}.drift-legend span:nth-child(3) i{background:#d35f67}@media(max-width:1050px){.model-evaluation-grid{grid-template-columns:1fr 1fr}.model-evaluation-grid .span-2,.drift-panel{grid-column:1 / -1}}@media(max-width:650px){.model-evaluation-grid{display:block}.model-evaluation-grid>.module-panel{margin-bottom:12px}.model-fit-chart{overflow-x:auto}.model-fit-chart svg,.model-x-axis{min-width:650px}.model-score-strip{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.factor-enrichment-layout{grid-template-columns:1fr}.factor-map-wrap{border-right:0;border-bottom:1px solid #e8ecf2}.factor-inspector{display:grid;grid-template-columns:1.2fr .8fr 1fr;align-items:center}.inspector-head{height:100%;border-right:1px solid #edf0f5;border-bottom:0}.relevance-score{margin:8px auto}.inspector-metrics{padding:12px}.inspector-section,.factor-health,.invalid-reason,.inspector-actions{grid-column:1 / -1}}@media(max-width:620px){.factor-map-meta{align-items:flex-start;flex-direction:column}.factor-map-canvas>svg{min-width:690px}.factor-map-canvas{min-height:440px}.factor-map-canvas>svg{height:440px}.factor-selection-tray small{display:none}.factor-inspector{display:block}.inspector-head{height:auto;border-right:0;border-bottom:1px solid #edf0f5}}.clickable-row{cursor:pointer}.dataset-workspace{display:grid;min-width:0;grid-template-columns:minmax(0,1fr);gap:13px}.dataset-workspace>*{min-width:0;max-width:100%}.dataset-detail-head{display:flex;min-height:68px;align-items:center;gap:12px;border:1px solid var(--border);border-radius:12px;background:#fff;padding:11px 14px;box-shadow:0 7px 20px #2b3c5b09}.dataset-back{display:inline-flex;min-height:34px;align-items:center;gap:6px;border-right:1px solid #e5e9f0;background:transparent;padding:0 14px 0 2px;color:#69778e;font-size:10px}.dataset-back:hover{color:var(--primary)}.dataset-detail-icon{display:grid;width:40px;height:40px;flex:0 0 40px;place-items:center;border-radius:10px;background:#eaf6f0;color:var(--primary)}.dataset-title{min-width:0;flex:1}.dataset-title>div{display:flex;align-items:center;gap:8px}.dataset-title h2{margin:0;color:#2b3a55;font-size:15px}.dataset-title p{overflow:hidden;margin:5px 0 0;color:#8a96a8;font-family:IBM Plex Mono,PingFang SC,sans-serif;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.dataset-head-meta{min-width:100px;border-left:1px solid #e8ecf2;padding-left:13px}.dataset-head-meta span,.dataset-head-meta strong{display:block}.dataset-head-meta span{color:#98a2b3;font-size:8px}.dataset-head-meta strong{margin-top:5px;color:#536078;font-size:9px}.dataset-tabs{display:flex;min-height:49px;align-items:center;gap:3px;border:1px solid var(--border);border-radius:11px;background:#fff;padding:5px 7px;box-shadow:0 6px 16px #2b3c5b08}.dataset-tabs>button:not(.icon-plain){position:relative;display:flex;min-height:37px;align-items:center;gap:6px;border-radius:8px;background:transparent;padding:0 13px;color:#748198;font-size:10px}.dataset-tabs>button:not(.icon-plain):hover{background:#f6f8fb}.dataset-tabs>button.active:not(.icon-plain){background:#eaf6f0;color:var(--primary);font-weight:600}.dataset-tab-tools{display:flex;align-items:center;gap:7px;margin-left:auto}.compact-segment{display:flex;border:1px solid #dfe5ee;border-radius:8px;background:#fafbfc;padding:2px}.compact-segment button{min-height:27px;border-radius:6px;background:transparent;padding:0 9px;color:#8a95a7;font-size:8px}.compact-segment button.active{background:#fff;color:#167a55;box-shadow:0 2px 6px #2c3d611a;font-weight:600}.data-kpi-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.data-kpi-row article{min-width:0;border:1px solid var(--border);border-radius:11px;background:#fff;padding:12px 14px;box-shadow:0 6px 16px #2b3c5b07}.data-kpi-row span,.data-kpi-row strong,.data-kpi-row small{display:block}.data-kpi-row span{color:#8490a3;font-size:8px}.data-kpi-row strong{margin-top:5px;color:#2f3f5b;font-family:IBM Plex Mono,sans-serif;font-size:16px}.data-kpi-row small{overflow:hidden;margin-top:4px;color:#98a2b2;font-size:7px;text-overflow:ellipsis;white-space:nowrap}.data-kpi-row small.good{color:#0a927e}.data-kpi-row small.warn{color:#be7926}.data-analysis-grid,.profiling-grid,.feature-workbench-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.data-analysis-grid .span-2,.profiling-grid .span-2,.feature-workbench-grid .span-2{grid-column:span 2}.data-viz-card{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 7px 20px #2b3c5b09}.data-viz-head{display:flex;min-height:56px;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf0f5;padding:11px 14px}.data-viz-head h3{margin:0;color:#30405b;font-size:12px}.data-viz-head p{margin:4px 0 0;color:#929cad;font-size:8px}.viz-legend{display:flex;align-items:center;gap:11px;color:#7e8a9e;font-size:8px}.viz-legend span{display:flex;align-items:center;gap:5px}.viz-legend i{width:14px;height:2px;border-radius:2px}.viz-legend i.second{background:#42a5a0}.viz-legend b{width:7px;height:7px;border:2px solid #d65e66;border-radius:50%}.professional-line-chart{position:relative;height:285px;padding:14px 40px 26px 45px}.professional-line-chart>svg{width:100%;height:245px;overflow:visible}.pro-grid line{stroke:#e9edf3;stroke-width:1;stroke-dasharray:4 5}.primary-data-line,.secondary-data-line{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.secondary-data-bars rect{fill:#42a5a033;stroke:#1591785c;stroke-width:.5}.secondary-data-line{stroke:#42a5a0;stroke-width:1.7;stroke-dasharray:5 3}.day-divider{stroke:#bec8d7;stroke-width:1;stroke-dasharray:3 4}.chart-note{fill:#8894a7;font-family:IBM Plex Mono,monospace;font-size:7px;text-anchor:middle}.anomaly-point circle:first-child{fill:#fff;stroke:#d85a63;stroke-width:2}.anomaly-point .halo{fill:#d85a631a;stroke:#d85a6347}.left-axis,.right-axis{position:absolute;top:25px;bottom:37px;display:flex;flex-direction:column;justify-content:space-between;color:#99a3b3;font-family:IBM Plex Mono,monospace;font-size:7px}.left-axis{left:11px}.right-axis{right:9px;text-align:right}.pro-chart-x{display:flex;justify-content:space-between;color:#99a3b3;font-family:IBM Plex Mono,monospace;font-size:7px}.viz-stats{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid #edf0f5;background:#fafbfc}.viz-stats>div{border-right:1px solid #e8ecf2;padding:10px 12px}.viz-stats>div:last-child{border-right:0}.viz-stats span,.viz-stats strong{display:block}.viz-stats span{color:#919cad;font-size:7px}.viz-stats strong{margin-top:4px;color:#40506a;font-family:IBM Plex Mono,sans-serif;font-size:9px}.viz-stats strong.up{color:#0a927e}.health-radar{position:relative;display:grid;height:260px;place-items:center}.health-radar>svg{width:238px;height:205px}.radar-grid polygon,.radar-grid line{fill:none;stroke:#e3e8ef;stroke-width:1}.radar-area{fill:#167a5526;stroke:#2d8262;stroke-width:2}.radar-points circle{fill:#167a55;stroke:#fff;stroke-width:1.5}.radar-labels text{fill:#818da0;font-size:7px;text-anchor:middle}.health-radar>div{position:absolute;text-align:center}.health-radar strong,.health-radar span{display:block}.health-radar strong{color:#2b5141;font-family:IBM Plex Mono,sans-serif;font-size:18px}.health-radar span{margin-top:3px;color:#8b96a8;font-size:7px}.health-rule-summary{display:flex;min-height:45px;align-items:center;justify-content:center;gap:17px;border-top:1px solid #edf0f5;background:#fafbfc;color:#77849a;font-size:8px}.health-rule-summary span{display:flex;align-items:center;gap:5px}.health-rule-summary i{width:6px;height:6px;border-radius:50%;background:#aeb7c5}.health-rule-summary i.ok{background:#0b9c87}.health-rule-summary i.warn{background:#d08b2d}.model-badge{border:1px solid #d9ebe2;border-radius:6px;background:#f2f8f5;padding:5px 8px;color:#477d67;font-family:IBM Plex Mono,sans-serif;font-size:8px}.scatter-chart{position:relative;height:265px;padding:10px 12px 20px 39px}.scatter-chart svg{width:100%;height:230px}.scatter-chart circle{fill:#167a5585;stroke:#fff;stroke-width:.6}.confidence-band{fill:#167a5517}.regression-line{stroke:#167a55;stroke-width:2}.scatter-y{position:absolute;top:28px;bottom:43px;left:10px;display:flex;flex-direction:column;justify-content:space-between;color:#98a2b3;font-size:7px}.scatter-x{position:absolute;right:22px;bottom:9px;left:42px;display:flex;justify-content:space-between;color:#98a2b3;font-size:7px}.deviation-chart{position:relative;display:flex;height:265px;align-items:center;justify-content:space-around;gap:5px;padding:28px 20px;background:repeating-linear-gradient(to bottom,transparent 0 52px,#edf2ef 53px)}.deviation-chart .zero-line{position:absolute;right:18px;left:18px;height:1px;background:#a8b9b0}.deviation-chart>div{position:relative;z-index:1;width:min(18px,5%);align-self:center;border-radius:4px 4px 1px 1px;background:linear-gradient(180deg,#2f946e,#75b293);transform:translateY(-50%)}.deviation-chart>div.negative{border-radius:1px 1px 4px 4px;background:linear-gradient(180deg,#a8bdb2,#6f9984);transform:translateY(50%)}.deviation-chart>div span{position:absolute;right:50%;bottom:calc(100% + 5px);color:#60786c;font-family:IBM Plex Mono,monospace;font-size:6px;transform:translate(50%)}.deviation-chart>div.negative span{top:calc(100% + 5px);bottom:auto}.regression-summary,.distribution-stats{display:flex;align-items:center;justify-content:space-around;border-top:1px solid #edf0f5;background:#fafbfc;padding:9px}.regression-summary span,.regression-summary strong{display:block;text-align:center}.regression-summary span{color:#929cad;font-size:7px}.regression-summary strong{margin-top:4px;color:#40506a;font-family:IBM Plex Mono,sans-serif;font-size:8px}.histogram-chart{padding:24px 17px 12px}.hist-bars{position:relative;display:flex;height:170px;align-items:flex-end;gap:4px;border-bottom:1px solid #dce2eb}.hist-bars>i{z-index:1;flex:1;border-radius:3px 3px 0 0;background:linear-gradient(#79af91,#d9e9e0)}.hist-bars>svg{position:absolute;top:25px;right:0;bottom:0;left:0;z-index:2;width:100%;height:130px;pointer-events:none}.hist-bars svg path{fill:none;stroke:#0f6847;stroke-width:2}.hist-bars>b{position:absolute;z-index:3;top:0;bottom:0;width:1px;border-left:1px dashed #617d70}.p50-line{left:51%}.p95-line{left:83%;border-color:#d07831!important}.hist-axis{display:flex;justify-content:space-between;margin-top:7px;color:#99a3b3;font-size:7px}.distribution-stats{justify-content:space-between;padding:11px 15px;color:#8994a6;font-size:7px}.distribution-stats b{margin-left:3px;color:#4a5870;font-family:IBM Plex Mono,sans-serif}.boxplot-chart{display:flex;height:230px;align-items:stretch;justify-content:space-around;gap:7px;padding:21px 19px 25px;background:repeating-linear-gradient(to bottom,transparent 0 45px,#edf0f5 46px)}.boxplot-column{position:relative;flex:1;height:180px}.boxplot-column>span{position:absolute;right:0;bottom:-20px;left:0;color:#939dae;font-size:7px;text-align:center}.boxplot-whisker{position:absolute;left:50%;width:1px;background:#8392ad}.boxplot-whisker:before,.boxplot-whisker:after{position:absolute;left:-5px;width:11px;height:1px;background:#8392ad;content:""}.boxplot-whisker:before{top:0}.boxplot-whisker:after{bottom:0}.boxplot-box{position:absolute;left:20%;width:60%;min-height:10px;border:1.5px solid #27815f;border-radius:3px;background:#2d826224}.boxplot-box i{position:absolute;right:0;left:0;height:2px;background:#167a55}.boxplot-note{display:flex;min-height:39px;align-items:center;gap:13px;border-top:1px solid #edf0f5;padding:0 14px;color:#8792a4;font-size:7px}.boxplot-note span{display:flex;align-items:center;gap:5px}.boxplot-note i{width:8px;height:8px;border:1px solid #27815f;background:#e5f1ea}.boxplot-note b{width:9px;height:2px;background:#167a55}.boxplot-note strong{margin-left:auto;color:#52627a}.observation-table-card{margin-top:0}.dense-table th,.dense-table td{padding-right:8px;padding-left:8px}.test-list{padding:6px 14px 12px}.test-list>div{display:grid;grid-template-columns:1fr auto;gap:3px 8px;border-bottom:1px solid #eff2f6;padding:12px 0}.test-list>div:last-child{border-bottom:0}.test-list span{color:#58667d;font-size:9px}.test-list strong{font-size:8px}.test-list strong.pass{color:#0a927e}.test-list strong.warn{color:#c07b27}.test-list small{grid-column:1 / -1;color:#9aa4b4;font-family:IBM Plex Mono,sans-serif;font-size:7px}.corr-scale{display:flex;align-items:center;gap:3px;color:#929cad;font-size:7px}.corr-scale i{width:13px;height:7px;background:#d26878}.corr-scale i:nth-of-type(2){background:#f1f2f5}.corr-scale i:nth-of-type(3){background:#167a55}.data-corr-matrix{display:grid;grid-template-columns:52px repeat(7,1fr);gap:4px;padding:16px}.data-corr-matrix>span,.data-corr-matrix>strong{display:grid;min-height:23px;place-items:center;color:#7f8b9e;font-size:7px;font-weight:500}.data-corr-matrix>i{display:grid;min-height:41px;place-items:center;border-radius:5px;font-family:IBM Plex Mono,sans-serif;font-size:7px;font-style:normal}.missingness-map{padding:16px 18px 7px}.missing-row,.missing-axis{display:grid;grid-template-columns:43px repeat(24,1fr);gap:4px;align-items:center;margin-bottom:5px}.missing-row span{color:#8f9aab;font-family:IBM Plex Mono,sans-serif;font-size:7px}.missing-row i{height:15px;border-radius:2px}.missing-row i.level-0{background:#eaf6f3}.missing-row i.level-1{background:#f4c77e}.missing-row i.level-2{background:#d87565}.missing-axis b{color:#98a2b2;font-size:6px;font-weight:400}.missing-axis b:nth-child(2){grid-column:2}.missing-axis b:nth-child(3){grid-column:6}.missing-axis b:nth-child(4){grid-column:10}.missing-axis b:nth-child(5){grid-column:14}.missing-axis b:nth-child(6){grid-column:18}.missing-axis b:nth-child(7){grid-column:22}.missing-axis b:nth-child(8){grid-column:25}.missing-alert,.lineage-impact{display:flex;align-items:center;gap:9px;margin:9px 18px 15px;border:1px solid #f0e0c4;border-radius:9px;background:#fffaf1;padding:10px 11px;color:#bf7b27}.missing-alert>div,.lineage-impact>div{min-width:0;flex:1}.missing-alert strong,.missing-alert span,.lineage-impact strong,.lineage-impact span{display:block}.missing-alert strong,.lineage-impact strong{color:#6b583d;font-size:9px}.missing-alert span,.lineage-impact span{margin-top:3px;color:#947d5d;font-size:7px}.missing-alert button,.lineage-impact button{flex:0 0 auto;border-radius:7px;background:#fff;padding:7px 9px;color:#9a692b;font-size:8px}.station-rank{padding:10px 14px 15px}.station-rank>div{display:grid;grid-template-columns:20px 54px 1fr 35px;align-items:center;gap:7px;margin-top:13px}.station-rank b{display:grid;width:18px;height:18px;place-items:center;border-radius:5px;background:#eaf6f0;color:#477d67;font-family:IBM Plex Mono,sans-serif;font-size:7px}.station-rank span{color:#59677d;font-size:8px}.station-rank i{height:5px;overflow:hidden;border-radius:5px;background:#e9edf2}.station-rank em{display:block;height:100%;border-radius:inherit;background:#318766}.station-rank strong{color:#445169;font-family:IBM Plex Mono,sans-serif;font-size:7px;text-align:right}.feature-pipeline-card{overflow:visible}.pipeline-status{display:flex;align-items:center;gap:5px;color:#758397;font-size:8px}.pipeline-status i{width:7px;height:7px;border-radius:50%;background:#0da088;box-shadow:0 0 0 3px #0da0881a}.feature-pipeline{display:flex;align-items:center;gap:9px;padding:21px}.feature-pipeline>svg{flex:0 0 auto;color:#b7c1d0}.pipeline-stage{position:relative;display:flex;min-width:0;min-height:122px;flex:1;flex-direction:column;align-items:center;justify-content:center;border:1px solid #dfe5ee;border-radius:10px;background:#fbfcfe;text-align:center}.pipeline-stage>span{position:absolute;top:7px;left:8px;color:#9ba5b4;font-family:IBM Plex Mono,sans-serif;font-size:7px}.stage-icon{display:grid;width:34px;height:34px;place-items:center;border-radius:9px;background:#eaf6f0;color:#287b5d}.pipeline-stage strong,.pipeline-stage small,.pipeline-stage em{display:block}.pipeline-stage strong{margin-top:8px;color:#405069;font-size:9px}.pipeline-stage small{margin-top:4px;color:#167a55;font-family:IBM Plex Mono,sans-serif;font-size:8px}.pipeline-stage em{margin-top:4px;color:#929cad;font-size:7px;font-style:normal}.inline-code{border-radius:5px;background:#f1f4f8;padding:3px 5px;color:#466e5d;font-size:8px}.feature-importance{display:flex;align-items:center;gap:6px}.feature-importance>span{width:30px}.feature-importance>i{width:48px;height:4px;overflow:hidden;border-radius:4px;background:#e8edf3}.feature-importance b{display:block;height:100%;border-radius:inherit;background:#3d936f}.feature-preview{align-self:start}.feature-mini-chart{height:175px;padding:8px 12px 0}.feature-mini-chart svg{width:100%;height:165px}.feature-mini-chart path{fill:none;stroke:#167a55;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}.feature-preview-stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #edf0f5;border-bottom:1px solid #edf0f5;background:#fafbfc}.feature-preview-stats>div{border-right:1px solid #e6eaf0;padding:9px 7px;text-align:center}.feature-preview-stats>div:last-child{border-right:0}.feature-preview-stats span,.feature-preview-stats strong{display:block}.feature-preview-stats span{color:#929cad;font-size:7px}.feature-preview-stats strong{margin-top:4px;color:#3f4e67;font-family:IBM Plex Mono,sans-serif;font-size:8px}.feature-code-block{margin:12px 14px 0;border:1px solid #e3e8f0;border-radius:8px;background:#f7f9fc;padding:10px}.feature-code-block span,.feature-code-block code{display:block}.feature-code-block span{color:#929cad;font-size:7px}.feature-code-block code{overflow-x:auto;margin-top:7px;color:#167a55;font-size:8px;white-space:nowrap}.lineage-actions{display:flex;gap:7px}.lineage-graph{display:grid;grid-template-columns:1fr 44px 1fr 44px 1.15fr 44px 1fr;align-items:center;gap:5px;min-height:390px;padding:24px;background:radial-gradient(circle at 52% 49%,rgba(22,122,85,.08),transparent 20rem),linear-gradient(rgba(246,248,251,.75) 1px,transparent 1px),linear-gradient(90deg,rgba(246,248,251,.75) 1px,transparent 1px);background-size:auto,25px 25px,25px 25px}.lineage-column{display:grid;gap:9px}.lineage-column>span{margin-bottom:3px;color:#8e99aa;font-size:8px;text-align:center}.lineage-column>div{position:relative;display:grid;grid-template-columns:28px 1fr;border:1px solid #dfe5ee;border-radius:9px;background:#fff;padding:10px;box-shadow:0 5px 14px #2b3d600b;color:#708098}.lineage-column>div.focus{border-color:#a8c9b8;background:#f0f8f4;color:#167a55;box-shadow:0 7px 18px #167a5517}.lineage-column svg{grid-row:span 2;align-self:center}.lineage-column strong,.lineage-column small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lineage-column strong{color:#3e4d66;font-size:9px}.lineage-column small{margin-top:4px;color:#929cad;font-size:7px}.lineage-arrows{display:grid;align-content:center;gap:48px}.lineage-arrows i{position:relative;height:1px;background:#a5c7b5}.lineage-arrows i:after{position:absolute;top:-3px;right:-1px;width:6px;height:6px;border-top:1px solid #7da58f;border-right:1px solid #7da58f;content:"";transform:rotate(45deg)}.lineage-impact{border-color:#d9ece2;background:#f3f8f5;color:#327b60}.lineage-impact strong{color:#3f6d59}.lineage-impact span{color:#7483a4}.lineage-impact button{color:#3f765d}.version-card{margin-top:0}@media(max-width:1380px){.data-kpi-row{grid-template-columns:repeat(3,minmax(0,1fr))}.feature-pipeline{overflow-x:auto}.pipeline-stage{min-width:150px}}@media(max-width:1080px){.dataset-detail-head{flex-wrap:wrap}.dataset-head-meta{display:none}.dataset-tabs{overflow-x:auto}.dataset-tabs>button:not(.icon-plain){flex:0 0 auto}.dataset-tab-tools{flex:0 0 auto}.data-analysis-grid,.profiling-grid,.feature-workbench-grid{grid-template-columns:1fr 1fr}.data-analysis-grid .span-2,.profiling-grid .span-2,.feature-workbench-grid .span-2,.trend-analysis{grid-column:1 / -1}.lineage-graph{min-width:980px}.lineage-card{overflow-x:auto}.lineage-card>.data-viz-head,.lineage-card>.lineage-impact{min-width:980px}}@media(max-width:760px){.dataset-title{width:calc(100% - 130px);flex:none}.dataset-detail-head>.secondary-action{margin-left:auto}.dataset-tabs{align-items:flex-start;flex-wrap:wrap}.dataset-tab-tools{width:100%;margin-left:0;border-top:1px solid #edf0f5;padding-top:5px}.data-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}.data-analysis-grid,.profiling-grid,.feature-workbench-grid{display:block}.data-analysis-grid>.data-viz-card,.profiling-grid>.data-viz-card,.feature-workbench-grid>.data-viz-card{margin-bottom:12px}.professional-line-chart,.scatter-chart,.histogram-chart,.boxplot-chart,.missingness-map,.data-corr-matrix{overflow-x:auto}.professional-line-chart>svg,.pro-chart-x{min-width:680px}.missing-row,.missing-axis{min-width:650px}.data-corr-matrix{min-width:520px}.feature-pipeline-card{overflow:hidden}.feature-pipeline{align-items:stretch}}@media(max-width:520px){.dataset-back{width:100%;border-right:0;border-bottom:1px solid #e5e9f0;padding-bottom:8px}.dataset-title{width:calc(100% - 54px)}.dataset-tab-tools .app-select{display:none}.compact-segment{flex:1}.compact-segment button{min-width:0;flex:1}.data-kpi-row{grid-template-columns:1fr}.viz-legend{display:none}.viz-stats{grid-template-columns:repeat(2,1fr)}.viz-stats>div{border-bottom:1px solid #e8ecf2}.feature-preview-stats{grid-template-columns:repeat(2,1fr)}.missing-alert,.lineage-impact{align-items:flex-start;flex-wrap:wrap}}@media(max-width:760px){.topbar{height:auto;flex-wrap:wrap;align-items:center;gap:8px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 10px}.topbar-left{display:contents}.topbar-right{order:3;margin-left:auto;gap:8px}.menu-button{order:1}.market-selector{order:2;min-width:0;padding:0 8px}.today-rank{order:4;flex:1 0 100%;justify-content:center;height:36px}.content{padding:16px 12px 28px}.page-heading h1{font-size:22px}.sidebar{width:min(280px,86vw);padding-bottom:env(safe-area-inset-bottom,0px)}.nav-list{overflow-y:auto}.brand{padding:0 14px}.brand-logo{width:148px;height:52px}.detail-drawer,.detail-drawer.today-rank-drawer{width:100vw}.factor-enrichment-layout{grid-template-columns:1fr;min-height:0}.factor-map-wrap{border-right:0;border-bottom:1px solid #e8ecf2}.factor-map-canvas>svg{min-width:640px}input,select,textarea{font-size:16px}}@keyframes chart-wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes data-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes bar-grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes bar-grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes heat-in{0%{opacity:0}to{opacity:1}}@keyframes donut-pop{0%{opacity:0;transform:scale(.84)}to{opacity:1;transform:none}}.performance-chart>svg,.large-line-chart>svg,.model-fit-chart>svg,.professional-line-chart svg,.feature-mini-chart svg,.residual-bars>svg,.hist-bars>svg{animation:chart-wipe 1.05s cubic-bezier(.22,.75,.2,1) both}.kpi-card,.module-kpi,.metric-card{animation:data-rise .48s ease both}.kpi-grid>:nth-child(2),.module-kpi-grid>:nth-child(2){animation-delay:.06s}.kpi-grid>:nth-child(3),.module-kpi-grid>:nth-child(3){animation-delay:.12s}.kpi-grid>:nth-child(4),.module-kpi-grid>:nth-child(4){animation-delay:.18s}.module-kpi-grid>:nth-child(5){animation-delay:.24s}.module-kpi-grid>:nth-child(6){animation-delay:.3s}.factor-bars span,.model-feature-bars b,.insight-bars i,.quality-cell>i>b,.feature-importance b,.progress-track span,.allocation-bar i,.stability-list em,.drift-list b,.segment-score b,.run-progress span,.mini-progress i{transform-origin:left center;animation:bar-grow-x .7s cubic-bezier(.2,.7,.2,1) both}.mini-bars i,.residual-bars>i,.hist-bars>i,.report-preview-chart div{transform-origin:center bottom;animation:bar-grow-y .65s cubic-bezier(.2,.7,.2,1) both}.mini-bars i:nth-child(2),.residual-bars>i:nth-child(2),.hist-bars>i:nth-child(2){animation-delay:.04s}.mini-bars i:nth-child(3),.residual-bars>i:nth-child(3),.hist-bars>i:nth-child(3){animation-delay:.08s}.mini-bars i:nth-child(4),.residual-bars>i:nth-child(4){animation-delay:.12s}.mini-bars i:nth-child(5){animation-delay:.16s}.mini-bars i:nth-child(6){animation-delay:.2s}.mini-bars i:nth-child(7){animation-delay:.24s}.heat-cell,.session-heatmap i{animation:heat-in .55s ease both}.session-heatmap .heat-row:nth-child(odd) i{animation-delay:.08s}.session-heatmap .heat-row:nth-child(3n) i{animation-delay:.16s}.donut-chart{animation:donut-pop .7s cubic-bezier(.2,.8,.2,1) both}.boxplot-column,.deviation-chart>div{animation:heat-in .5s ease both}@media(prefers-reduced-motion:reduce){.performance-chart>svg,.large-line-chart>svg,.model-fit-chart>svg,.professional-line-chart svg,.feature-mini-chart svg,.residual-bars>svg,.hist-bars>svg,.kpi-card,.module-kpi,.metric-card,.factor-bars span,.model-feature-bars b,.insight-bars i,.quality-cell>i>b,.feature-importance b,.progress-track span,.allocation-bar i,.stability-list em,.drift-list b,.segment-score b,.run-progress span,.mini-progress i,.mini-bars i,.rank-col-track i,.rank-metric i b,.residual-bars>i,.hist-bars>i,.report-preview-chart div,.heat-cell,.session-heatmap i,.donut-chart,.boxplot-column,.deviation-chart>div{animation:none}}
