:root{font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif;color:#354555;background:#f2f4f7;font-synthesis:none}*{box-sizing:border-box}html,body,#root{width:100%;min-width:1180px;height:100%;margin:0}body{min-height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}button,input{font-family:inherit}.app-shell{width:100%;height:100vh;display:flex;background:#f2f4f7}.global-rail{width:46px;flex:0 0 46px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 6px;background:#202225;color:#bfc4ca}.global-rail .rail-logo{margin:2px 0 12px;font-size:17px}.global-rail button{width:32px;height:32px;padding:0;border:0;border-radius:8px;background:transparent;color:#aeb4bb;font-size:16px;cursor:default}.global-rail button.active{color:#32d1c1;background:#354047}.global-rail .rail-spacer{flex:1}.side-nav{width:168px;flex:0 0 168px;overflow:hidden;border-right:1px solid #e5e6eb;background:#fff}.brand{height:48px;display:flex;align-items:center;padding:0 14px;border-bottom:1px solid #eef0f2}.brand img{width:107px;height:20px}.menu-search{width:calc(100% - 20px);margin:9px 10px 7px}.menu-search.ant-input-affix-wrapper{height:30px;padding-inline:9px}.side-nav nav{height:calc(100vh - 94px);overflow-y:auto;padding:2px 0 20px;scrollbar-width:thin}.nav-item{min-height:39px;display:flex;align-items:center;gap:11px;padding:0 17px;color:#354555;font-size:13px}.nav-item .anticon{width:16px;color:#637381;font-size:15px}.nav-item.active{margin-top:2px;color:#20252b;font-weight:500;background:#f7f9fa}.nav-item.active .anticon{color:#2a5360}.nav-caret{margin-left:auto;color:#93a0ac}.sub-nav{height:38px;display:flex;align-items:center;padding-left:50px;color:#637381;font-size:12px}.sub-nav.active{position:relative;color:#00a99b;background:#eafaf8}.sub-nav.active:before{content:"";position:absolute;left:0;width:3px;height:100%;background:#00c2b1}.main-area{min-width:0;flex:1;display:flex;flex-direction:column}.top-bar{height:48px;flex:0 0 48px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #e5e6eb;background:#fff}.page-context{font-size:13px}.top-actions{display:flex;align-items:center;gap:15px;color:#52616d;font-size:12px}.top-actions .avatar{width:29px;height:29px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#2daebb;color:#fff;font-size:11px;font-weight:600}.page-toolbar{height:47px;flex:0 0 47px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #edf0f2;background:#fff;color:#20252b;font-size:14px}.page-toolbar .ant-btn{min-width:58px}.content-area{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden;padding:12px 16px 16px;background:#f2f4f7}.basic-card,.editor-card{border:1px solid #eef0f2;border-radius:8px;background:#fff}.basic-card{flex:0 0 auto;padding:12px 14px 10px}.basic-card h2{margin:0 0 8px;color:#20252b;font-size:14px;font-weight:600}.basic-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:12px;row-gap:8px}.basic-grid label{min-width:0;display:flex;flex-direction:column;gap:4px}.basic-grid label>span{color:#93a0ac;font-size:11px}.basic-grid label b{color:#f53f3f}.basic-grid .ant-select,.basic-grid .ant-input-number{width:100%}.basic-grid .ant-input,.basic-grid .ant-select-selector,.basic-grid .ant-input-number{height:28px!important;min-height:28px!important;font-size:12px}.editor-card{min-height:0;flex:1;display:flex;overflow:hidden;margin-top:10px}.editor-left{width:400px;flex:0 0 400px;overflow:hidden;border-right:1px solid #e5e6eb;background:#fff}.outer-tabs,.outer-tabs>.ant-tabs-content-holder,.outer-tabs>.ant-tabs-content-holder>.ant-tabs-content,.outer-tabs>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane,.inner-tabs,.inner-tabs>.ant-tabs-content-holder,.inner-tabs>.ant-tabs-content-holder>.ant-tabs-content,.inner-tabs>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%;min-height:0}.outer-tabs,.inner-tabs{display:flex;flex-direction:column}.outer-tabs>.ant-tabs-nav{height:45px;margin:0;padding:0 16px;border-bottom:1px solid #edf0f2}.outer-tabs>.ant-tabs-nav:before,.inner-tabs>.ant-tabs-nav:before{border:0}.outer-tabs>.ant-tabs-nav .ant-tabs-tab{padding:12px 0 10px;font-size:13px}.outer-tabs>.ant-tabs-content-holder{height:auto;min-height:0;flex:1;overflow:hidden}.inner-tabs>.ant-tabs-nav{height:42px;margin:0;padding:0 16px;border-bottom:1px solid #edf0f2}.inner-tabs>.ant-tabs-nav .ant-tabs-tab{padding:10px 0 9px;font-size:12px}.inner-tabs>.ant-tabs-content-holder{height:auto;min-height:0;flex:1;overflow:hidden}.query-scroll{height:100%;min-height:0;overflow-y:auto;padding:15px 16px 72px;overscroll-behavior:contain;scrollbar-color:#c9cdd4 transparent;scrollbar-width:thin}.config-section{margin-bottom:22px}.config-section.is-disabled{opacity:.72}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}.section-title{display:inline-flex;align-items:center;gap:7px;color:#20252b;font-size:13px;font-weight:600}.section-title .anticon{color:#637381;font-size:14px}.section-actions{display:inline-flex;align-items:center;gap:5px;color:#b0bac3;font-size:12px}.section-actions .ant-tag{margin:0;border:0;background:#f4f6f8;color:#77838e;font-size:10px}.section-help{margin-bottom:8px;color:#93a0ac;font-size:11px;line-height:1.45}.section-content{display:flex;flex-direction:column;gap:8px}.source-card{display:flex;flex-direction:column;gap:7px;padding:11px;border:1px solid #f0f1f3;border-radius:8px;background:#f8f9fb}.source-card>.ant-select{width:100%}.empty-slot{min-height:48px;display:flex;align-items:center;justify-content:center;border:1px dashed #d6dce1;border-radius:6px;color:#aab3bb;font-size:11px;background:#fff}.config-card{position:relative;display:grid;gap:7px;padding:9px 36px 9px 9px;border:1px solid #eef0f2;border-radius:6px;background:#f8f9fb}.config-card>.ant-btn-dangerous{position:absolute;top:7px;right:4px}.metric-card{grid-template-columns:minmax(0,1fr) 96px}.metric-card>.ant-input{grid-column:1 / -1}.metric-card:has(.axis-chip){padding-left:34px}.axis-chip{position:absolute;top:10px;left:9px;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;background:#ddf7f4;color:#00a99b;font-size:10px;font-weight:700}.dimension-card{grid-template-columns:minmax(0,1fr) auto}.dimension-card>.ant-btn:not(.ant-btn-dangerous){grid-column:2;grid-row:1}.dimension-card>.ant-input,.dimension-config-summary{grid-column:1 / -1}.dimension-config-summary{color:#00a99b;font-size:10px;line-height:1.4}.filter-card{grid-template-columns:minmax(0,1fr) 82px}.filter-card .filter-value,.filter-card .range-inputs{grid-column:1 / -1;width:100%}.filter-card .range-inputs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:5px;color:#93a0ac;font-size:10px}.filter-card .range-inputs .ant-input-number{width:100%}.sort-card{grid-template-columns:minmax(0,1fr) 72px}.money-note{grid-column:1 / -1;color:#d48806;font-size:10px;line-height:1.35}.field-error,.inline-warning{margin-top:6px;color:#f53f3f;font-size:11px;line-height:1.4}.limit-input{display:flex;align-items:stretch}.limit-input .ant-input-number{flex:1;border-radius:6px 0 0 6px}.limit-input>span{min-width:38px;display:inline-flex;align-items:center;justify-content:center;margin-left:-1px;border:1px solid #c9cdd4;border-radius:0 6px 6px 0;background:#f7f8fa;color:#637381;font-size:11px}.inline-warning{margin-top:0;color:#d46b08}.switch-row{display:flex;align-items:flex-start;gap:9px;padding:10px;border-radius:6px;background:#f8f9fb}.switch-row>div{display:flex;flex-direction:column;gap:2px}.switch-row strong{color:#354555;font-size:11px;font-weight:500}.switch-row span{color:#93a0ac;font-size:10px;line-height:1.4}.preview-pane{min-width:0;flex:1;display:flex;flex-direction:column;padding:18px 24px 24px;background:#f7f8fa}.preview-header{height:34px;flex:0 0 34px;display:flex;align-items:flex-start;justify-content:space-between}.preview-header strong{color:#20252b;font-size:14px;font-weight:600}.preview-card{position:relative;min-height:0;flex:1;display:flex;align-items:center;justify-content:center;border:1px solid #eef0f2;border-radius:8px;background:#fff}.preview-card .ant-empty-description{color:#aab3bb;font-size:12px}.preview-tag{position:absolute;right:16px;bottom:14px;margin:0;border-color:#e4e8eb;color:#93a0ac;font-size:10px}.sql-placeholder,.style-placeholder{display:flex;flex-direction:column;gap:12px;padding:24px 16px}.sql-placeholder{align-items:center;justify-content:center;height:100%;color:#93a0ac;text-align:center}.sql-placeholder>.anticon{font-size:32px}.sql-placeholder strong{color:#52616d}.sql-placeholder span{max-width:280px;font-size:12px;line-height:1.6}.style-placeholder label{margin-top:8px;color:#637381;font-size:12px}.style-placeholder>.ant-select{width:100%}.switch-warning{margin:8px 0 0;color:#52616d;line-height:1.6}.dimension-modal{display:flex;flex-direction:column;gap:18px}.dimension-modal .ant-radio-group{display:flex;flex-direction:column;gap:12px}.dimension-mode-title{margin-bottom:-8px;color:#52616d;font-size:13px;font-weight:600}.dimension-time-setting,.dimension-null-label{display:flex;align-items:center;gap:12px;padding:12px;border-radius:6px;background:#f7f8fa}.dimension-time-setting span,.dimension-null-label span{flex:0 0 auto;color:#637381;font-size:12px}.dimension-time-setting .ant-select,.dimension-null-label .ant-input{flex:1}.dimension-range-editor{display:flex;flex-direction:column;gap:10px;padding-top:14px;border-top:1px solid #eef0f2}.dimension-range-empty{padding:18px;border:1px dashed #d6dce1;border-radius:6px;color:#aab3bb;font-size:12px;text-align:center}.dimension-range-row{display:grid;grid-template-columns:minmax(90px,1fr) auto minmax(90px,1fr) minmax(110px,1fr) auto;align-items:center;gap:7px;padding:8px;border:1px solid #eef0f2;border-radius:6px;background:#f8f9fb}.dimension-range-row>.ant-input-number{width:100%}.dimension-range-row>.ant-tag{grid-column:1 / -1;width:fit-content;margin:0;white-space:normal}@media(max-width:1380px){.side-nav{width:150px;flex-basis:150px}.editor-left{width:380px;flex-basis:380px}.preview-pane{padding-inline:18px}}
