:root{--background:#f7f8fb;--surface:#ffffff;--surface-muted:#f1f5f9;--border:#d8dee8;--text:#172033;--muted:#627083;--accent:#2563eb;--accent-strong:#1d4ed8;--sidebar:#eef3f8;--sidebar-border:#d8e1ec;--sidebar-text:#1e293b;--sidebar-muted:#64748b;--success:#0f766e;--shadow:0 10px 28px rgba(32,41,58,0.07);--shadow-lift:0 8px 18px rgba(32,41,58,0.1)}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{background:var(--background);color:var(--text);font-family:Arial,PingFang SC,Microsoft YaHei,sans-serif}button,input{font:inherit}button{cursor:pointer}.navPage{align-items:center;display:flex;min-height:100vh;padding:32px}.navPanel{display:grid;grid-gap:18px;gap:18px;max-width:460px}.navLink{align-items:center;background:var(--accent);border-radius:3px;color:#ffffff;display:inline-flex;font-weight:700;min-height:38px;padding:8px 14px;text-decoration:none;width:-moz-fit-content;width:fit-content}.navLink:hover{background:var(--accent-strong)}.shell{display:grid;grid-template-columns:320px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--sidebar);border-right:1px solid var(--sidebar-border);color:var(--sidebar-text);display:flex;flex-direction:column;gap:28px;height:100vh;overflow:auto;padding:28px 22px;position:-webkit-sticky;position:sticky;top:0}.eyebrow{color:var(--sidebar-muted);font-size:12px;font-weight:700;letter-spacing:0;margin:0 0 8px;text-transform:uppercase}.sidebarHeader{display:grid;grid-gap:14px;gap:14px}.languageSwitch{border:1px solid var(--sidebar-border);border-radius:3px;display:grid;grid-template-columns:1fr 1fr;overflow:hidden;width:92px}.languageSwitch button{background:transparent;border:0;color:var(--sidebar-muted);font-size:12px;font-weight:700;height:30px}.languageSwitch button.active{background:#ffffff;color:var(--accent)}h1,h2,p{margin:0}h1{font-size:28px;line-height:1.18}.controlGroup{display:flex;flex-direction:column;gap:12px}.controlHeader{align-items:center;display:flex;justify-content:space-between;gap:12px}.controlGroup h2{color:var(--sidebar-muted);font-size:14px}.inlineActions{display:flex;gap:8px}.inlineActions button{background:transparent;border:0;color:var(--sidebar-muted);font-size:12px;padding:2px 0}.inlineActions button:hover{color:var(--accent)}.segmented{display:grid;grid-gap:6px;gap:6px;grid-template-columns:1fr 1fr}.segmented button{background:transparent;border:1px solid var(--sidebar-border);border-radius:3px;color:var(--sidebar-text);min-height:38px;padding:8px 10px;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease,transform .16s ease}.segmented button:hover{background:#ffffff;border-color:#c7d4e3;box-shadow:var(--shadow-lift);color:var(--text);transform:translateY(-1px)}.segmented button.active{background:#ffffff;border-color:#b8c7da;color:var(--text);font-weight:700}.datasetSwitch{background:#dfe8f2;border:1px solid var(--sidebar-border);border-radius:4px;display:grid;grid-template-columns:1fr 1fr;min-height:38px;overflow:hidden;padding:3px;position:relative}.datasetSwitch button{background:transparent;border:0;color:var(--sidebar-muted);font-size:13px;font-weight:700;min-width:0;padding:7px 8px;position:relative;transition:color .18s ease;z-index:1}.datasetSwitch button.active{color:var(--text)}.switchThumb{background:#ffffff;border:1px solid #c8d4e4;border-radius:3px;bottom:3px;box-shadow:var(--shadow-lift);left:3px;position:absolute;top:3px;transform:translateX(0);transition:transform .18s ease;width:calc(50% - 3px)}.switchThumb.right{transform:translateX(100%)}.indexTrigger{align-items:center;background:#ffffff;border:1px solid var(--sidebar-border);border-radius:3px;color:var(--sidebar-text);display:flex;justify-content:space-between;min-height:32px;padding:5px 9px;width:100%}.indexTrigger:hover{background:#ffffff;border-color:#c7d4e3;box-shadow:var(--shadow-lift);color:var(--text);transform:translateY(-1px)}.indexTrigger i{color:var(--sidebar-muted);font-size:12px;font-style:normal}.indexTrigger:hover i{color:#475569}.indexMenu{background:#ffffff;border:1px solid var(--sidebar-border);display:grid;grid-gap:3px;gap:3px;max-height:180px;overflow:auto;padding:4px}.indexOption{align-items:center;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--sidebar-text);display:flex;justify-content:space-between;gap:12px;height:32px;padding:5px 7px;text-align:left;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}.indexOption span{align-items:center;display:inline-flex;gap:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.indexOption:hover{background:#f4f7fb;border-color:#e2e8f0;color:var(--text)}.indexOption.active{background:#eaf2ff;border-color:#bfd3f4;color:#1e3a8a;font-weight:600}.indexOption.active:hover{background:#e1ecff;border-color:#abc7f0;color:#1e3a8a}.indexOption small{color:var(--sidebar-muted);font-size:11px;line-height:1;white-space:nowrap}.indexOption.active:hover small,.indexOption:hover small{color:#475569}.indexOption.active small{color:#3b5f9b}.dateGrid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dateGrid label{color:var(--sidebar-muted);display:grid;font-size:13px;grid-gap:5px;gap:5px}.dateGrid input{background:#ffffff;border:1px solid var(--sidebar-border);border-radius:3px;color:var(--sidebar-text);height:28px;padding:4px 8px}.dateRangeSlider{display:grid;grid-gap:8px;gap:8px;padding-top:2px}.dateRangeTrack{background:#d5dfeb;border-radius:999px;height:8px;position:relative}.dateRangeFill{background:var(--accent);border-radius:999px;bottom:0;position:absolute;top:0}.dateRangeHandle{background:#ffffff;border:2px solid var(--accent);border-radius:50%;height:18px;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:18px}.dateRangeHandle:focus{outline:2px solid #b7cdf5;outline-offset:2px}.dateRangeLabels{color:var(--sidebar-muted);display:flex;font-size:11px;justify-content:space-between}.content{display:flex;flex-direction:column;gap:22px;min-width:0;padding:28px}.topBar{align-items:flex-end;display:flex;justify-content:space-between;gap:16px}.topBar p{color:var(--muted);font-size:14px;margin-bottom:4px}.topBar h2{font-size:28px;line-height:1.2}.topBar span{color:var(--muted);font-size:14px;text-align:right}.topActions{align-items:flex-end;display:flex;flex-direction:column;gap:10px}.reportButton{background:var(--accent);border:1px solid var(--accent);border-radius:3px;color:#ffffff;font-weight:700;min-height:34px;padding:6px 12px}.reportButton:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong)}.reportButton:disabled{cursor:not-allowed;opacity:.55}.reportModalBackdrop{align-items:center;background:rgba(15,23,42,.42);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:20}.reportModal{background:#ffffff;border:1px solid var(--border);border-radius:4px;box-shadow:0 22px 70px rgba(15,23,42,.22);display:flex;flex-direction:column;gap:16px;max-height:min(760px,calc(100vh - 40px));max-width:720px;overflow:auto;padding:20px;width:100%}.reportModalFooter,.reportModalHeader{align-items:center;display:flex;justify-content:space-between;gap:16px}.reportModalHeader h2{font-size:20px;line-height:1.2}.reportModalFooter span,.reportModalHeader p{color:var(--muted);font-size:13px}.reportModalHeader button{background:transparent;border:0;color:var(--muted);font-size:24px;height:34px;line-height:1;padding:0;width:34px}.reportModalHeader button:hover:not(:disabled){color:var(--accent)}.reportModalActions{display:flex;gap:8px}.reportModalActions button{background:#ffffff;border:1px solid var(--border);border-radius:3px;color:var(--muted);font-size:13px;height:30px;padding:0 10px}.reportModalActions button:hover:not(:disabled){border-color:#b7cdf5;color:var(--accent)}.reportModalActions button:disabled,.reportModalHeader button:disabled{cursor:not-allowed;opacity:.55}.reportModeGroup{border:0;display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0}.reportModeGroup legend{color:var(--muted);font-size:13px;font-weight:700;grid-column:1/-1;margin-bottom:2px;padding:0}.reportModeGroup label{align-items:center;background:#ffffff;border:1px solid var(--border);border-radius:3px;color:var(--text);display:flex;flex:1 1;gap:8px;height:42px;line-height:1.2;min-width:0;padding:8px 10px;white-space:nowrap}.reportModeGroup label.active{background:#eaf2ff;border-color:#bfd3f4;font-weight:700}.reportModeGroup input{accent-color:var(--accent);flex:0 0 auto;height:15px;margin:0;width:15px}.reportOptionGrid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.reportOption{align-items:center;background:#ffffff;border:1px solid var(--border);border-radius:3px;display:flex;gap:10px;min-height:58px;padding:10px}.reportOption:hover{border-color:#b7cdf5}.reportOption.active{background:#eaf2ff;border-color:#bfd3f4}.reportOption input{accent-color:var(--accent);flex:0 0 auto;height:16px;width:16px}.reportOption span{display:grid;grid-gap:3px;gap:3px;min-width:0}.reportOption strong{color:var(--text);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reportOption small{color:var(--muted);font-size:12px}.chartArea,.emptyState{background:var(--surface);border:1px solid var(--border);border-radius:4px;box-shadow:var(--shadow)}.chartArea{min-height:calc(100vh - 132px);padding:18px;position:relative}.echartsCanvas{height:calc(100vh - 172px);min-height:520px;width:100%}.chartActions{align-items:center;display:flex;gap:8px;justify-content:flex-end;margin-bottom:6px}.chartActions.compact{margin-bottom:0}.chartSelect{background:#ffffff;border:1px solid var(--border);border-radius:3px;color:var(--muted);font-size:13px;height:30px;padding:0 8px}.chartSelect:focus{border-color:#b7cdf5;color:var(--text);outline:0}.chartTool{align-items:center;background:#ffffff;border:1px solid var(--border);border-radius:3px;color:var(--muted);display:flex;font-size:13px;gap:5px;height:30px;justify-content:center;padding:0 10px}.chartTool.active,.chartTool:hover{border-color:#b7cdf5;color:var(--accent)}.chartTool span{font-size:15px;line-height:1}.chartOverlay{align-items:center;background:rgba(255,255,255,.86);color:var(--muted);display:flex;inset:18px;justify-content:center;position:absolute}.klineSection{background:var(--surface);border:1px solid var(--border);border-radius:4px;box-shadow:var(--shadow);padding:18px}.sectionHeader{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px;gap:12px}.sectionHeader h2{font-size:18px;line-height:1.2}.klineGrid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.klineCard{background:#ffffff;border:1px solid var(--border);border-radius:3px;min-width:0;overflow:hidden;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.klineCard[draggable=true]{cursor:-webkit-grab;cursor:grab}.klineCard:active{cursor:-webkit-grabbing;cursor:grabbing}.klineCard[draggable=true]:hover{border-color:#b7cdf5;box-shadow:var(--shadow-lift)}.klineCard.dragging{background:#f7faff;border-color:#b7cdf5;border-style:dashed;box-shadow:none}.klinePlaceholder{align-items:center;color:var(--sidebar-muted);display:flex;font-size:13px;height:244px;justify-content:center}.klineCardHeader{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:8px;height:34px;justify-content:space-between;padding:0 8px 0 10px}.klineCardHeader strong{color:var(--text);font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.klineCardHeader button{background:transparent;border:0;color:var(--muted);font-size:18px;height:28px;line-height:1;padding:0 4px}.klineCardHeader button:hover{color:var(--accent)}.klineChart{height:210px;min-width:0}.klineEmpty{border:1px dashed var(--border);border-radius:3px;min-height:120px}.emptyState,.klineEmpty{align-items:center;color:var(--muted);display:flex;justify-content:center}.emptyState{min-height:320px;padding:24px}@media (max-width:920px){.shell{grid-template-columns:1fr}.sidebar{gap:20px;padding:22px}.content{padding:20px}.topBar{align-items:flex-start;flex-direction:column}.topBar span{text-align:left}.topActions{align-items:flex-start}.reportOptionGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.klineGrid{grid-template-columns:1fr}}@media (max-width:560px){.dateGrid,.segmented{grid-template-columns:1fr}.topBar h2{font-size:24px}.reportModal{padding:16px}.reportModalFooter,.reportModalHeader{align-items:flex-start;flex-direction:column}.reportOptionGrid{grid-template-columns:1fr}}