html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}html,body,#root{min-height:100%;margin:0}body{background:#f5f7fb}.shell{min-height:100vh}.mainShell{min-width:0}.sidebar{position:sticky;top:0;height:100vh;border-right:1px solid #e7eaf0;box-shadow:4px 0 14px #0f172a08}.sideBrand{display:flex;align-items:center;gap:10px;height:56px;padding:0 18px;color:#1f2937;border-bottom:1px solid #e7eaf0}.sideBrand .ant-typography{margin:0}.loginShell{min-height:100vh;display:grid;place-items:center;background:#eef2f7;padding:20px}.loginPanel{width:min(420px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:28px;box-shadow:0 12px 30px #0f172a14}.loginBrand{margin-bottom:22px}.loginBrand .ant-typography{margin:0}.topbar{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 24px;background:#fff;border-bottom:1px solid #e7eaf0}.brand{min-width:160px;color:#1f2937}.brand .ant-typography{margin:0}.content{width:auto;min-width:0;max-width:none;box-sizing:border-box;padding:20px 24px 32px}.pageHero{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding:16px;background:#fff;border:1px solid #e7eaf0;border-radius:8px}.pageHero .ant-typography{margin:0}.sectionCard{border-radius:8px}.sectionCard .ant-card-head{min-height:46px}.homeCard{min-width:0;padding:16px;background:#fff;border:1px solid #e7eaf0;border-radius:8px;box-shadow:0 6px 18px #0f172a0a}.primaryCard{border-color:#cfe1ff}.cardTitleRow{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.cardTitleRow .ant-typography{margin:0}.metricGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}.metricItem{display:grid;gap:4px;padding:10px;background:#f8fafc;border:1px solid #edf2f7;border-radius:6px}.metricItem .ant-typography:last-child{font-size:22px;line-height:1.1}.statusAlert{margin-bottom:10px}.cardSubLine{margin-top:4px}.providerList{display:flex;flex-wrap:wrap;gap:6px;max-height:76px;margin-top:10px;overflow:auto}.sourceStatusList{display:grid;gap:8px;max-height:150px;margin-top:10px;padding:10px;overflow:auto;background:#f8fafc;border:1px solid #edf2f7;border-radius:6px}.sourceGroup{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px;align-items:flex-start}.cardActions{margin-top:12px}.pageHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.pageNotice{margin-bottom:16px}.dataSourceTable .ant-table-cell{vertical-align:middle}.dataSourceCell{display:flex;width:100%;min-width:0}.dataSourceCell>.ant-typography{display:block;width:100%;max-width:100%;margin:0}.dataSourceActions{white-space:nowrap}.pageHeader .ant-typography{margin:0}.nodeCardGrid{display:grid;grid-template-columns:repeat(3,minmax(300px,1fr));gap:12px}.nodeCard{min-width:0;border-radius:8px;box-shadow:0 3px 12px #0f172a0a}.nodeCard.offline{background:#fafafa}.nodeCard .ant-card-body{display:grid;gap:11px;padding:14px}.nodeCardHeader,.nodeCardFooter,.nodeLogUsage>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.nodeCardIdentity{display:grid;min-width:0}.nodeCardIdentity .ant-typography{max-width:100%;margin:0}.nodeCardIdentity h5.ant-typography{font-size:15px}.nodeStatusStrip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;border-top:1px solid #edf2f7;border-bottom:1px solid #edf2f7}.nodeStatusStrip>span,.nodeMetricGrid>div{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}.nodeStatusStrip .ant-tag,.nodeMetricGrid .ant-tag{margin-inline-end:0}.nodeMetricGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.nodeResourceGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid #edf2f7}.nodeResourceGrid>div{display:grid;gap:2px;min-width:0;font-size:11px}.nodeLogUsage{display:grid;gap:4px}.nodeCardError{display:block;max-width:100%;padding:6px 8px;background:#fff2f0;border-radius:6px;font-size:12px}.nodeCardFooter{align-items:flex-end;padding-top:2px}.nodeCardMeta{display:grid;min-width:0;font-size:12px}.nodeEmptyState{padding:48px 16px;color:#64748b;text-align:center;background:#fff;border:1px dashed #cbd5e1;border-radius:8px}.nameLink{height:auto;padding:0;text-align:left}.logHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin:-4px 0 14px;padding:12px;background:#fff;border:1px solid #e7eaf0;border-radius:8px}.logHeader .ant-typography{margin:0}.stickyHeader{position:sticky;top:12px;z-index:5;box-shadow:0 8px 20px #0f172a0f}.logFilters{display:grid;grid-template-columns:160px 150px 220px 220px auto auto;gap:10px;align-items:center;margin-bottom:12px;padding:12px;background:#fff;border:1px solid #e7eaf0;border-radius:8px}.logPageTabs{min-width:0;max-width:100%;padding:12px;background:#fff;border:1px solid #e7eaf0;border-radius:8px}.logPageTabs .ant-tabs-content-holder,.logPageTabs .ant-tabs-content,.logPageTabs .ant-tabs-tabpane,.subscriptionUsersPage,.subscriptionUsersPage>.ant-table-wrapper{min-width:0;max-width:100%}.logPageTabs .ant-tabs-nav{margin-bottom:12px}.manualBlockCard{margin-bottom:12px;background:#fff7f7;border-color:#fecaca}.manualBlockInput{width:320px}.logMeta{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.statsSections{display:grid;gap:10px;margin-bottom:14px}.subscriptionUsersPage{display:grid;gap:12px}.userAnalysisHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:2px}.userTrafficCell{min-width:160px}.userStatsOverview{margin:0}.userAnalysisCardGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.userAnalysisCard{min-width:0;border-top:3px solid #93c5fd}.userAnalysisCard.amber{border-top-color:#fbbf24}.userAnalysisCard.red{border-top-color:#f87171}.userAnalysisCard.green{border-top-color:#4ade80}.userAnalysisCard.indigo{border-top-color:#818cf8}.userAnalysisCard .ant-card-head{min-height:48px}.unmatchedUserCard{border-color:#fecaca;background:snow}.unmatchedUserCard .ant-card-head{min-height:48px}.unmatchedUserList{display:grid;gap:7px}.unmatchedUserRow{display:grid;grid-template-columns:minmax(250px,1.5fr) 90px 90px minmax(190px,1fr) minmax(180px,1.2fr);gap:10px;align-items:center;min-width:0;padding:9px 10px;background:#fff;border:1px solid #fee2e2;border-radius:6px}.unmatchedUserIdentity,.unmatchedUserTimes{display:grid;min-width:0;gap:2px}.unmatchedUserIdentity .ant-typography{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unmatchedUserMetric{display:grid;gap:2px}.unmatchedUserIPs{display:flex;flex-wrap:nowrap;gap:3px;align-items:center;min-width:0;overflow:hidden}.unmatchedUserIPs .ant-tag{max-width:135px;overflow:hidden;margin-inline-end:0;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.unmatchedUserIPs .ant-btn{flex:none;height:22px;padding-inline:4px;font-size:11px}.userCardHint{font-size:11px;font-weight:400}.userCardRanking{display:grid;gap:4px}.userRankButton{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:center;width:100%;min-height:40px;padding:5px 6px;color:inherit;text-align:left;background:#f8fafc;border:1px solid #edf2f7;border-radius:7px;cursor:pointer}.userRankButton:hover{background:#eff6ff;border-color:#bfdbfe}.userRankIdentity{display:grid;min-width:0}.userRankIdentity strong,.userRankIdentity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.userRankIdentity strong{font-size:12px}.userRankIdentity small{color:#64748b;font-size:11px}.userRankValue{color:#334155;font-size:11px;font-weight:600;white-space:nowrap}.userEmailLink{height:auto;max-width:190px;padding:0;overflow:hidden;color:#0f172a;font-weight:600;text-align:left;text-overflow:ellipsis;white-space:nowrap}.userDetailBody{display:grid;gap:14px}.userDetailIdentity{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px;background:#f8fafc;border:1px solid #e7eaf0;border-radius:8px}.userDetailIdentity .ant-typography{margin:0}.userDetailMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.userDetailMetrics .ant-statistic{padding:9px;background:#fff;border:1px solid #edf2f7;border-radius:7px}.userDetailMetrics .ant-statistic-title{margin-bottom:2px;font-size:11px}.userDetailMetrics .ant-statistic-content{font-size:17px}.userDetailFacts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.userDetailFacts>div{display:grid;gap:2px;min-width:0;padding:8px;background:#f8fafc;border-radius:6px;font-size:12px}.userDetailToken{display:grid;gap:4px;min-width:0}.statsSectionHeader{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:2px;padding:0 2px}.statsSectionHeader .ant-typography{margin:0}.statsGrid{display:grid;gap:12px}.statsOverview{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;margin:-2px 0 2px}.statsOverviewItem{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0;padding:9px 11px;background:#fff;border:1px solid #e7eaf0;border-left:3px solid #93c5fd;border-radius:7px}.statsOverviewItem .ant-typography:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.statsOverviewItem .ant-typography:last-child{color:#1e293b;font-size:20px;line-height:1}.statsOverviewItem.indigo{border-left-color:#818cf8}.statsOverviewItem.red{border-left-color:#f87171}.statsOverviewItem.amber{border-left-color:#fbbf24}.primaryStatsGrid{grid-template-columns:repeat(3,minmax(240px,1fr))}.secondaryStatsGrid{grid-template-columns:repeat(2,minmax(260px,1fr))}.statsBlock{min-width:0;border-radius:8px}.statsBlock .ant-card-head{min-height:36px;padding:0 10px}.statsBlock .ant-card-body{padding:8px}.dangerStatsBlock{border-color:#fecdd3;background:snow}.rankingList{display:grid;gap:6px}.rankingRow{min-width:0;padding:0;background:transparent;border:0;font-size:12px}.analysisIPCard{display:grid;gap:7px;min-width:0;padding:9px;background:linear-gradient(180deg,#fff,#f8fafc);border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 1px 2px #0f172a0a}.analysisIPHeader{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}.analysisIPIdentity{min-width:0}.analysisIPAddr{max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:12px}.analysisMetricGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.analysisMetricGrid .ant-statistic{padding:5px 7px;background:#fff;border:1px solid #edf2f7;border-radius:8px}.analysisMetricGrid .ant-statistic-title{margin-bottom:0;color:#64748b;font-size:11px;line-height:1.1}.analysisMetricGrid .ant-statistic-content{font-size:15px;line-height:1.1}.analysisProgressLine{display:grid;gap:2px;font-size:11px}.analysisStatusTags{display:flex;flex-wrap:wrap;gap:4px}.analysisStatusTags .ant-tag{margin-inline-end:0;font-size:11px;line-height:18px;padding-inline:5px}.analysisMiniRow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:center;min-width:0;padding:7px 8px;background:#fff;border:1px solid #edf2f7;border-radius:9px;box-shadow:0 1px 2px #0f172a08}.analysisMiniContent{display:grid;gap:1px;min-width:0}.analysisMiniMainLine{display:flex;gap:5px;align-items:center;min-width:0}.analysisMiniMain{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:12px}.analysisMiniSub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.analysisCountTag{margin-inline-end:0;font-weight:600;font-size:11px;line-height:18px;padding-inline:5px}.analysisRankBadge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;color:#1d4ed8;background:#dbeafe;border:1px solid #bfdbfe;border-radius:999px;font-weight:700;font-size:11px}.rankingList .analysisMiniRow{min-height:38px}.monoText,.tokenRankText{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.tokenRankText{color:#4f46e5}.uaRankText{color:#334155}.dangerText{color:#dc2626}.emptyState{padding:18px 8px;color:#94a3b8;text-align:center;font-size:12px}.statusOk{color:#16a34a}.statusWarn{color:#ca8a04}.statusMuted{color:#64748b}.statusBlock{color:#f97316}.statusError{color:#dc2626}.statusInfo{color:#1677ff}.statusTag{min-width:66px;text-align:center}.logTable .ant-table-cell{padding:4px 6px!important;font-size:12px;line-height:1.2}.logTable .ant-table-thead>tr>th{padding-top:6px!important;padding-bottom:6px!important;font-size:12px;white-space:nowrap}.logTable .ant-table-tbody>tr.logRow.statusOk>td{background:#fbfffb}.logTable .ant-table-tbody>tr.logRow.statusWarn>td{background:#fffdf2}.logTable .ant-table-tbody>tr.logRow.statusBlock>td{background:#fff7ed}.logTable .ant-table-tbody>tr.logRow.statusError>td{background:#fff1f2}.logTable .ant-table-tbody>tr.logRow.statusMuted>td{background:#f8fafc}.tokenCell,.requestCell,.logIPCell{width:100%;min-width:0}.hoverEllipsisText{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logTimeText{max-width:112px}.logIPText{max-width:88px}.tokenText{max-width:145px}.requestText{max-width:330px}.logUAText{max-width:195px}.logTable .ant-space-item:first-child{min-width:0}.cidrForm{margin-bottom:12px}.sourceSettingBar{margin-bottom:12px;padding:12px;background:#fff;border:1px solid #e7eaf0;border-radius:6px}.editorSections{display:grid;gap:12px}.targetEditorModal .ant-modal-body{padding-top:12px}.targetEditorModal .ant-card-head{min-height:42px}.targetEditorModal .ant-card-body{padding-bottom:4px}.pathRuleBox{display:grid;gap:12px}.pathRuleHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.pathRuleItem{display:grid;gap:10px;padding:12px;background:#f8fafc;border:1px solid #e7eaf0;border-radius:8px}.pathRuleTitle{display:flex;justify-content:space-between;align-items:center;gap:12px}.pathRuleGrid{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:12px;align-items:start}.pathRuleItem .ant-form-item{margin-bottom:12px}.pathRuleItem .ant-form-item:last-child{margin-bottom:0}.tokenText,.requestText{max-width:180px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.logTimeText{display:inline-block;width:96px;overflow:hidden;font-size:11px;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom}.logIconBtn.ant-btn-sm{width:22px;height:22px;padding:0}.logIPCell{max-width:100%;display:flex;flex-wrap:nowrap;align-items:center}.logIPText{max-width:124px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.formGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.threeCols{grid-template-columns:repeat(3,minmax(0,1fr))}.switchGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 16px}.full{width:100%}@media(max-width:1200px){.nodeCardGrid{grid-template-columns:repeat(2,minmax(300px,1fr))}}@media(max-width:720px){.shell{display:block}.sidebar{position:fixed;top:0;left:0;z-index:20;height:100vh}.shell>.mainShell{width:100%!important;flex:none}.content{box-sizing:border-box;min-width:0;overflow:hidden}.topbar{height:auto;padding:12px;align-items:stretch;flex-direction:column;gap:10px}.content{padding:12px}.metricGrid{grid-template-columns:1fr}.pageHero{align-items:stretch;flex-direction:column}.sourceGroup,.formGrid,.threeCols,.switchGrid,.logFilters,.pathRuleGrid{grid-template-columns:1fr}.pathRuleHeader{align-items:stretch;flex-direction:column}.manualBlockInput{width:100%}.logHeader,.logMeta,.pageHeader{align-items:stretch;flex-direction:column}.stickyHeader{top:0}.primaryStatsGrid,.secondaryStatsGrid,.statsOverview,.monitorStatsGrid{grid-template-columns:1fr}.statsSectionHeader{align-items:flex-start}.userAnalysisHeader{align-items:stretch;flex-direction:column}.logPageTabs,.subscriptionUsersPage,.subscriptionUsersPage>.ant-table-wrapper{min-width:0;max-width:100%}.statsOverviewItem{padding-block:8px}.userAnalysisCardGrid,.userDetailMetrics,.userDetailFacts{grid-template-columns:1fr}.unmatchedUserRow{grid-template-columns:1fr 1fr}.unmatchedUserIdentity,.unmatchedUserTimes,.unmatchedUserIPs{grid-column:1 / -1}.nodeCardGrid,.nodeStatusStrip,.nodeMetricGrid,.nodeResourceGrid{grid-template-columns:1fr}.nodeCardFooter{align-items:stretch;flex-direction:column}}.stackCell{display:flex;flex-direction:column;gap:2px}.ipTestBox{width:min(560px,100%)}.mt12{margin-top:12px}.monitorStatsGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.securityForm{max-width:520px}
