:root{--bg:#f4f5f7;--panel:#fff;--ink:#17191f;--muted:#737782;--line:#e4e5e9;--accent:#6659e8;--accent-dark:#5145c9;--green:#1f9d73;--red:#d6455d;--shadow:0 12px 30px rgba(21,23,30,.07);font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{margin:0 0 10px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:1.4px}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(390px,42%) 1fr;background:#fff}.login-panel{max-width:460px;width:100%;margin:auto;padding:56px}.brand-mark{width:48px;height:48px;display:grid;place-items:center;color:#fff;background:var(--accent);font-size:22px;font-weight:800;border-radius:6px;margin-bottom:36px}.brand-mark.small{width:36px;height:36px;margin:0;font-size:16px}.login-panel h1{font-size:34px;margin:0 0 10px;letter-spacing:0}.login-panel>p.muted{font-size:14px;margin-bottom:34px}.login-form{display:grid;gap:18px}.login-form label,.field{display:grid;gap:8px;font-size:13px;font-weight:600;color:#4d515b}.login-form input,.field input,.field textarea,.field select,.filterbar input,.filterbar select{width:100%;border:1px solid #d7d9df;border-radius:5px;background:#fff;padding:12px 13px;outline:none;color:var(--ink)}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(102,89,232,.1)}.captcha-row{display:grid;grid-template-columns:1fr 126px;align-items:end;gap:12px}.captcha{height:43px;border:1px solid #dedfe4;background:#f6f6f8;border-radius:5px;font-weight:700;color:#373a43}.primary,.secondary{height:40px;padding:0 18px;border-radius:5px;border:1px solid transparent;font-weight:600;font-size:13px}.primary{background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(102,89,232,.18)}.primary:hover{background:var(--accent-dark)}.secondary{background:#fff;color:#555a64;border-color:#dfe1e5}.wide{width:100%;height:46px;margin-top:4px}.form-error{min-height:20px;color:var(--red);margin:0;font-size:13px}.login-scene{position:relative;overflow:hidden;background:#17191f;min-height:100vh;color:#fff}.login-scene:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 45%,rgba(102,89,232,.32)),radial-gradient(circle at 70% 25%,rgba(44,188,156,.24),transparent 30%)}.signal-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:54px 54px;mask-image:linear-gradient(to bottom,transparent,black 25%,black)}.scene-copy{position:absolute;z-index:1;left:10%;bottom:10%}.scene-copy span{font-size:11px;color:#aaaeb8;letter-spacing:2px}.scene-copy strong{display:block;font-size:48px;line-height:1.18;margin-top:16px;letter-spacing:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:236px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:#17191f;color:#fff;display:flex;flex-direction:column;padding:24px 18px;z-index:20}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 24px;border-bottom:1px solid #2a2c33}.brand b,.brand small{display:block}.brand small{font-size:9px;letter-spacing:1.5px;color:#8b8f99;margin-top:2px}.sidebar nav{padding-top:18px;display:grid;gap:4px}.sidebar nav p{font-size:10px;text-transform:uppercase;color:#6f737e;letter-spacing:1.2px;margin:15px 11px 5px}.sidebar nav button{border:0;background:transparent;color:#aeb1ba;text-align:left;height:43px;padding:0 12px;border-radius:5px}.sidebar nav button:hover{color:#fff;background:#22252c}.sidebar nav button.active{background:var(--accent);color:#fff}.nav-icon{width:25px;display:inline-block;font-size:18px}.sidebar-foot{margin-top:auto;padding:18px 5px 0;border-top:1px solid #2a2c33;display:grid;grid-template-columns:34px 1fr 32px;gap:9px;align-items:center}.user-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e9e7ff;color:var(--accent);font-weight:700}.sidebar-foot b,.sidebar-foot small{display:block;font-size:12px}.sidebar-foot small{font-size:10px;color:#858994;margin-top:3px}.icon-button{width:34px;height:34px;border:0;border-radius:4px;background:transparent;color:inherit;font-size:20px}.icon-button:hover{background:rgba(127,127,127,.12)}.workspace{grid-column:2;min-width:0}.topbar{height:82px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar p{font-size:10px;color:#999da6;margin:0 0 5px;text-transform:uppercase}.topbar h2{font-size:19px;margin:0}.status-chip{font-size:12px;color:#50545d;background:#f6f7f8;padding:8px 11px;border-radius:4px}.status-chip i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-right:7px}.page{display:none;padding:30px 32px 50px;max-width:1500px;margin:0 auto}.page.active{display:block}.page-intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.page-intro h3{margin:0 0 6px;font-size:21px}.page-intro p,.block-heading p{margin:0;color:var(--muted);font-size:13px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:20px;min-height:148px;box-shadow:var(--shadow);position:relative;overflow:hidden}.metric.accent:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent)}.metric span,.metric small{display:block;color:var(--muted);font-size:12px}.metric strong{display:block;font-size:34px;margin:20px 0 12px;letter-spacing:0}.metric strong em{font-style:normal}.metric strong i{font-style:normal;color:#c7c8ce;font-size:20px;margin:0 7px}.content-block{background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);padding:22px;margin-top:18px}.block-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.block-heading h3{font-size:15px;margin:0 0 5px}.block-heading a{font-size:12px;color:var(--accent);text-decoration:none}.tag{font-size:10px;padding:4px 7px;background:#eeecff;color:var(--accent);border-radius:3px}.snippet{display:grid;grid-template-columns:170px 1fr;gap:10px;padding:11px 13px;border:1px solid #e7e8eb;border-radius:4px;background:#fafafb;margin-top:8px;font-size:12px;overflow:auto}.snippet code{font-weight:700;color:var(--accent)}.snippet span{color:#737781;font-family:ui-monospace,Consolas,monospace}.filterbar{display:grid;grid-template-columns:minmax(220px,1fr) 180px auto;gap:12px;align-items:end}.filterbar label{font-size:12px;color:#666a74;display:grid;gap:7px}.table-wrap{margin:20px -22px 0;overflow:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}table{width:100%;border-collapse:collapse;min-width:850px}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #eeeeef;font-size:12px}th{font-size:10px;color:#8c9099;text-transform:uppercase;background:#fafafb}td{color:#484c55}td.ua{max-width:350px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-type{padding:4px 7px;border-radius:3px;background:#e8f8f2;color:#177a59}.event-type.click{background:#eeecff;color:var(--accent)}.table-foot{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding-top:16px;font-size:12px;color:var(--muted)}.table-foot>span:first-child{margin-right:auto}.small{height:32px;padding:0 12px}.tabs{display:flex;border-bottom:1px solid #dcdde1;margin-bottom:18px}.tabs button{border:0;background:transparent;padding:0 18px 13px;color:#7c8089;font-weight:600}.tabs button.active{color:var(--accent);border-bottom:2px solid var(--accent)}.tab-panel{display:none}.tab-panel.active{display:block}.project-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.project-card,.domain-item{background:#fff;border:1px solid var(--line);border-radius:6px;padding:17px}.project-card strong,.project-card span{display:block}.project-card span{font-size:12px;color:var(--muted);margin-top:8px}.empty-state{text-align:center;padding:58px 20px;background:#fff;border:1px dashed #d7d8dd;border-radius:6px;color:var(--muted)}.empty-state div{font-size:35px;color:#b4b6be}.empty-state h4{color:#41454e;margin:11px 0 7px}.empty-state p{font-size:12px;margin:0}.project-list:not(:empty)+.empty-state{display:none}.domain-block{margin-top:18px}.domain-list{display:grid;gap:8px}.domain-item{display:grid;grid-template-columns:1fr 100px 120px auto;align-items:center;gap:12px}.domain-item small{display:block;color:var(--muted);margin-top:4px}.cert-active{color:var(--green)}.cert-none,.cert-failed{color:#a06b1d}.settings-layout{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.settings-layout .content-block{margin-top:0;margin-bottom:18px}.span-two{grid-column:1/-1}.switch-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:18px}.switch-row span b,.switch-row span small{display:block;font-size:13px}.switch-row span small{color:var(--muted);font-weight:400;margin-top:4px}.switch-row input{display:none}.switch-row i{position:relative;width:40px;height:22px;border-radius:12px;background:#c9cbd1;transition:.2s}.switch-row i:after{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}.switch-row input:checked+i{background:var(--accent)}.switch-row input:checked+i:after{transform:translateX(18px)}.field textarea{min-height:76px;resize:vertical}.field small{font-weight:400;color:var(--muted)}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check-grid{display:flex;flex-wrap:wrap;gap:10px 22px;border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.check-grid label,.risk-groups label{font-size:12px;color:#5b5f68}.check-grid input,.risk-groups input{accent-color:var(--accent);margin-right:7px}.risk-groups{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.risk-groups fieldset{border:1px solid var(--line);border-radius:5px;padding:15px;display:flex;flex-wrap:wrap;gap:13px}.risk-groups legend{font-size:12px;font-weight:700;padding:0 6px}dialog{width:min(500px,calc(100% - 28px));border:0;border-radius:7px;padding:0;box-shadow:0 30px 80px rgba(0,0,0,.25)}dialog::backdrop{background:rgba(18,20,25,.48)}dialog form{padding:24px;display:grid;gap:18px}.dialog-head{display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:16px}.dialog-head h3{margin:0;font-size:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:4px}.toast{position:fixed;right:24px;top:22px;z-index:100;background:#17191f;color:#fff;padding:12px 16px;border-radius:5px;font-size:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(-12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{background:var(--red)}.mobile-only,.backdrop{display:none}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.project-list{grid-template-columns:repeat(2,1fr)}.settings-layout{grid-template-columns:1fr}.span-two{grid-column:auto}.login-shell{grid-template-columns:1fr}.login-scene{display:none}}
@media(max-width:760px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.workspace{display:block}.backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:15}.mobile-only{display:block}.topbar{height:68px;padding:0 16px;justify-content:flex-start;gap:12px}.topbar .status-chip{margin-left:auto;font-size:0;padding:9px}.topbar .status-chip i{margin:0}.page{padding:22px 16px 40px}.page-intro{align-items:flex-start;gap:12px}.page-intro h3{font-size:19px}.page-intro p{line-height:1.5}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:16px;min-height:130px}.metric strong{font-size:28px;margin:18px 0 10px}.snippet{grid-template-columns:1fr}.filterbar{grid-template-columns:1fr 120px}.filterbar button{grid-column:1/-1}.project-list{grid-template-columns:1fr}.domain-item{grid-template-columns:1fr auto}.domain-item>span:nth-child(2),.domain-item>span:nth-child(3){font-size:11px}.field-grid,.risk-groups{grid-template-columns:1fr}.login-panel{padding:34px 24px}.login-panel h1{font-size:29px}.captcha-row{grid-template-columns:1fr 115px}}
@media(max-width:430px){.metric-grid{grid-template-columns:1fr}.metric{min-height:120px}.page-intro>.primary,.page-intro>.secondary{padding:0 12px}.content-block{padding:17px}.table-wrap{margin-left:-17px;margin-right:-17px}.domain-item{grid-template-columns:1fr}.domain-item button{width:100%}}

.project-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:17px;padding-top:13px;border-top:1px solid var(--line)}
.danger-link{border:0;background:transparent;color:var(--red);font-size:12px;padding:0 4px;margin-left:auto}
.catalog-list{display:grid;gap:12px}.catalog-card{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:18px}.catalog-card h4{margin:6px 0 7px;font-size:15px}.catalog-card p{margin:0 0 8px;color:var(--muted);font-size:12px}.catalog-card small{color:#92959e;font-size:11px}.catalog-kicker{display:block;color:var(--accent);font-size:10px;font-weight:700;letter-spacing:1px}.catalog-card .primary{flex:0 0 auto}
dialog{max-height:90vh}
dialog form{max-height:90vh;overflow:auto}

/* Frontend source management surfaces */
.catalog-list{margin:0 -32px}.source-table{background:#fff;border:1px solid var(--line);border-radius:6px;overflow:auto}.source-table-head,.source-row{display:grid;grid-template-columns:130px 90px minmax(190px,1fr) minmax(240px,1.3fr) 92px 120px 82px;align-items:center;gap:18px;padding:14px 24px;min-width:980px}.source-table-head{border-bottom:1px solid var(--line);color:#767b87;font-size:11px}.source-row{min-height:112px;font-size:12px;color:#666b76}.source-row+.source-row{border-top:1px solid var(--line)}.source-logo{font-size:21px;font-weight:800;color:#14a5d7;letter-spacing:1px}.source-logo small{display:block;font-size:8px;letter-spacing:0;color:#14a5d7}.source-url{color:#727784;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-preview{width:50px;height:70px;border:1px solid #d6d9df;border-radius:3px;display:grid;place-items:center;color:#a2a7b0;font-size:10px;background:linear-gradient(#fff 20%,#f0f2f6 20%,#f0f2f6 25%,#fff 25%,#fff 42%,#f0f2f6 42%,#f0f2f6 47%,#fff 47%)}.source-time{color:#8b9099}.rich-project-card{padding:18px 20px}.project-brand{display:flex;align-items:center;gap:12px}.project-logo{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#eee9ff;color:#8d72de;font-size:21px;font-weight:800}.project-logo sup{font-size:10px}.project-brand h4{font-size:15px;margin:0 0 5px}.project-brand p{margin:0;color:#8a8f99;font-size:12px}.frontend-address{display:block;margin-top:14px;color:var(--accent);font-size:12px}.frontend-address button{border:0;background:transparent;color:#b1b5c1;margin-left:4px}.frontend-address textarea{height:86px;resize:none;margin-top:7px;padding:12px;border-color:#d5d8df;color:#8d92a0;font-size:12px}.link-button{border:0;background:transparent;color:var(--accent);padding:0 5px;font-size:12px}.project-actions{gap:14px}.project-actions .danger-link{margin-left:auto}.wizard-head{display:flex;align-items:center;gap:18px;padding:18px 22px;border-bottom:1px solid var(--line);color:#999da7}.wizard-head>i{font-size:27px;font-style:normal;color:#b2b5be}.wizard-step{display:flex;align-items:center;gap:10px;color:#767b86}.wizard-step b{display:grid;place-items:center;width:42px;height:42px;border-radius:4px;background:#f4f5f7;font-weight:600}.wizard-step.active b{background:var(--accent);color:#fff}.wizard-step span{font-size:13px}.wizard-step small{display:block;color:#a3a7af;font-size:11px;margin-top:3px}.wizard-head>.icon-button{margin-left:auto}.config-heading{padding:20px 22px 0}.config-heading h3{margin:0;font-size:21px}.config-heading>p:last-child{margin:7px 0 0;color:var(--muted);font-size:12px}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:20px 22px}.config-panel{border:1px solid var(--line);border-radius:5px;padding:15px}.config-panel h4{font-size:15px;margin:0 0 18px}.inline-field{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start}.inline-field textarea{height:108px}.inline-field button{margin-top:0}.config-domain-list{margin-top:14px;min-height:34px;border:1px solid var(--line);padding:10px;color:#999da7;font-size:12px}.compact-checks{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin:10px 0}.check-row{display:flex;gap:8px;align-items:center;color:#686d78;font-size:12px;padding:12px 0;border-bottom:1px solid var(--line)}.check-row input{accent-color:var(--accent)}.risk-caption{font-size:12px;color:#6c717c;margin:14px 0 8px}.access-panel .risk-groups{gap:10px;margin-bottom:14px}.access-panel .risk-groups fieldset{padding:10px;gap:9px}.wizard-actions{display:flex;justify-content:space-between;padding:0 22px 20px}.wizard-actions .primary{min-width:116px}
@media(max-width:900px){.catalog-list{margin:0}.project-list{grid-template-columns:repeat(2,1fr)}.config-grid{grid-template-columns:1fr}.wizard-head{gap:8px}.wizard-step span{font-size:11px}}
@media(max-width:600px){.project-list{grid-template-columns:1fr}.source-table-head,.source-row{padding-left:14px;padding-right:14px}.wizard-head{overflow:auto}.wizard-step{flex:0 0 auto}.wizard-head>i{display:none}.config-grid{padding:15px}.config-heading{padding:15px 15px 0}.wizard-actions{padding:0 15px 15px}.project-actions{gap:9px}}
.source-filter{display:flex;align-items:center;gap:10px;padding:22px 24px;background:#fff;border:1px solid var(--line);border-radius:6px;margin-bottom:0}.source-filter input{width:240px;height:40px;border:1px solid #d7d9df;border-radius:5px;padding:0 12px}.source-notice{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 24px;margin:0 -32px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:#f05252;font-size:12px}.source-notice>div{display:flex;gap:12px}.source-notice input{height:40px;border:1px solid #d7d9df;border-radius:5px;padding:0 12px;width:160px}.source-notice+.catalog-list{margin-top:0}#projectConfigDialog{width:min(1100px,calc(100% - 28px))}
.source-table-head,.source-row{grid-template-columns:110px 70px minmax(150px,1fr) minmax(180px,1.3fr) 72px 90px 74px;gap:12px;min-width:0}.source-table-head{padding-left:16px;padding-right:16px}.source-row{padding-left:16px;padding-right:16px}.source-row>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#projectConfigDialog form{overflow:hidden}.config-grid{max-height:calc(90vh - 210px);overflow:auto}
.config-domain-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);color:#606570;font-size:12px}.config-domain-row button{border:0;background:transparent;color:var(--red);font-size:12px}
.project-list{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.rich-project-card{padding:0;min-height:292px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 22px rgba(21,23,30,.05)}.project-card-head{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:18px}.project-logo{width:44px;height:44px;border-radius:6px;background:#eeeaff;color:var(--accent);font-size:15px;letter-spacing:0}.project-title{min-width:0}.project-title h4{margin:0 0 5px;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-title p{margin:0;color:var(--muted);font-size:11px}.project-status{display:inline-flex!important;align-items:center;gap:6px;color:var(--green)!important;background:#eaf7f2;border-radius:4px;padding:6px 8px;font-size:10px!important;font-weight:700;margin:0!important}.project-status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green)}.project-address-block{padding:14px 18px;background:#f8f9fa;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.project-address-label{font-size:10px!important;color:#8a8e98!important;margin:0 0 7px!important;text-transform:uppercase}.project-address-value{min-height:34px;display:flex;align-items:center;gap:8px}.project-address-link{min-width:0;flex:1;color:var(--accent);font-family:ui-monospace,Consolas,monospace;font-size:12px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-address-link:hover{text-decoration:underline}.project-address-empty{color:#969aa3!important;font-size:12px!important;margin:0!important}.project-address-value .copy-address{flex:0 0 32px;width:32px;height:32px;border:1px solid #dfe1e5;background:#fff;color:var(--accent)}.project-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:14px 18px}.project-meta>span{min-width:0;margin:0!important;padding:0 12px;border-right:1px solid var(--line)}.project-meta>span:first-child{padding-left:0}.project-meta>span:last-child{padding-right:0;border-right:0}.project-meta small{display:block;color:#92969f;font-size:10px}.project-meta b{display:block;margin-top:5px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rich-project-card .project-actions{margin-top:auto;padding:13px 18px;border-top:1px solid var(--line);gap:8px;background:#fff}.rich-project-card .project-actions .danger-link{margin-left:auto}.rich-project-card .project-actions .primary,.rich-project-card .project-actions .secondary{height:32px;padding:0 11px}@media(max-width:430px){.project-list{grid-template-columns:1fr}.project-card-head{grid-template-columns:40px minmax(0,1fr) auto}.project-logo{width:40px;height:40px}.rich-project-card .project-actions{display:grid;grid-template-columns:1fr 1fr}.rich-project-card .project-actions .danger-link{margin:0;height:32px}.project-meta{padding-left:14px;padding-right:14px}}
.domain-item a{color:var(--accent);text-decoration:none}.domain-item a:hover{text-decoration:underline}.frontend-address textarea:not(:placeholder-shown){color:var(--accent)}
.redirect-links-field{margin-top:16px}.redirect-links-field>span{font-size:13px;font-weight:700}.redirect-links-editor{display:grid;gap:8px}.redirect-link-row{display:grid;grid-template-columns:minmax(0,1fr) 86px 34px;gap:8px;align-items:center}.redirect-link-row input{height:38px;padding:8px 10px}.redirect-link-row .icon-button{border:1px solid var(--line);color:var(--red)}.add-redirect-link{justify-self:start}
.redirect-batch-toolbar{display:flex;align-items:end;gap:8px;margin:12px 0}.redirect-batch-toolbar>label{display:flex;align-items:center;gap:8px;margin-left:auto;color:var(--muted);font-size:11px}.redirect-batch-limit{width:112px;height:34px;padding:6px 9px}.redirect-import-panel{margin:0 0 12px;padding:12px;background:#f6f7f9}.redirect-import-panel textarea{display:block;width:100%;height:112px;resize:vertical;margin:0 0 10px}.redirect-import-panel>div{display:flex;justify-content:flex-end;gap:8px}
@media(max-width:900px){.source-table-head,.source-row{min-width:900px}.source-notice{align-items:flex-start;flex-direction:column;margin-left:0;margin-right:0}.source-filter{flex-wrap:wrap}}
#projectConfigDialog{height:min(820px,calc(100vh - 28px));max-height:none}#projectConfigDialog form{height:100%;max-height:none;padding:0;display:flex;flex-direction:column;gap:0;overflow:hidden}#projectConfigDialog .wizard-head,#projectConfigDialog .config-heading,#projectConfigDialog .wizard-actions{flex:0 0 auto}#projectConfigDialog .config-grid{flex:1;min-height:0;max-height:none;overflow:auto}.config-grid.single-panel{grid-template-columns:1fr}.frontend-step-panel,.config-summary-panel{grid-column:1/-1;min-height:260px}.frontend-step-heading{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}.frontend-step-heading h4{margin-bottom:6px}.frontend-step-heading p{margin:0;color:var(--muted);font-size:12px}.wizard-step.complete b{background:#e8f8f2;color:var(--green)}#projectConfigDialog .wizard-actions{padding:14px 22px;border-top:1px solid var(--line);background:#fff;box-shadow:0 -8px 18px rgba(21,23,30,.04)}.config-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.config-summary-grid>div{border:1px solid var(--line);border-radius:5px;padding:16px;min-width:0}.config-summary-grid span,.config-summary-grid small{display:block;color:var(--muted);font-size:11px}.config-summary-grid strong{display:block;margin:10px 0 7px;font-size:18px;overflow-wrap:anywhere}.config-summary-grid small{line-height:1.5}@media(max-width:700px){#projectConfigDialog{height:calc(100vh - 16px)}.config-summary-grid{grid-template-columns:1fr}#projectConfigDialog .wizard-actions{padding:12px 15px}}

#ipregistryKeyLabel.credit-loading{color:var(--muted)}#ipregistryKeyLabel.credit-ready{color:var(--green)}#ipregistryKeyLabel.credit-error{color:var(--red)}.event-type.rejected{background:#fff0f0;color:var(--red);font-weight:700}
.country-field-grid{align-items:start}.country-field{min-width:0}.country-select{position:relative;margin-top:7px}.country-control{min-height:42px;display:flex;align-items:center;border:1px solid #d7d9df;border-radius:5px;background:#fff;transition:border-color .15s,box-shadow .15s;cursor:text}.country-select.open .country-control{border-color:var(--accent);box-shadow:0 0 0 2px rgba(113,87,220,.13)}.country-chips{min-width:0;flex:1;display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:6px 8px}.country-placeholder{color:#a0a4ad;font-size:12px;font-weight:400}.country-chip{display:inline-flex;align-items:center;gap:5px;height:27px;border:0;border-radius:4px;padding:0 8px;background:#eeeaff;color:var(--accent);font-size:11px;font-weight:700}.country-chip span{font-size:14px;font-weight:400;line-height:1}.country-toggle{flex:0 0 38px;width:38px;height:40px;border:0;border-left:1px solid #ececef;background:transparent;color:#777c86;font-size:20px;line-height:1}.country-select.open .country-toggle{transform:rotate(180deg)}.country-menu{position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:70;border:1px solid #d9dbe1;border-radius:5px;background:#fff;box-shadow:0 14px 35px rgba(21,23,30,.15);padding:8px}.country-search{height:38px!important;padding:0 10px!important;margin-bottom:6px}.country-options{max-height:220px;overflow:auto;display:grid}.country-option{min-height:39px;display:flex;align-items:center;justify-content:space-between;border:0;border-radius:3px;background:#fff;color:#555a64;padding:7px 9px;text-align:left}.country-option:hover,.country-option.selected{background:#f3f0ff;color:var(--accent)}.country-option>span{display:flex;align-items:baseline;gap:9px}.country-option b{width:24px;font-size:12px}.country-option small{font-size:11px;color:#8c9099;font-weight:400}.country-option i{font-style:normal;font-size:12px}.country-empty{margin:0;padding:18px;text-align:center;color:var(--muted);font-size:12px}.country-help{display:block;margin-top:6px;line-height:1.45}.country-field:first-child .country-help{color:#8c6513}
@media(max-width:760px){.country-menu{position:fixed;left:16px;right:16px;top:18%;max-height:64vh}.country-options{max-height:48vh}}
@media(max-width:600px){.redirect-batch-toolbar{align-items:stretch;flex-wrap:wrap}.redirect-batch-toolbar>label{order:3;width:100%;margin-left:0;justify-content:space-between}.redirect-batch-limit{flex:1}.redirect-link-row{grid-template-columns:minmax(0,1fr) 72px 34px}}
.metric-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.metric{min-width:0}.weekly-statistics{margin-top:22px}.weekly-statistics .block-heading{align-items:center}.chart-legend{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:12px}.chart-legend span{display:flex;align-items:center;gap:7px}.chart-legend i{width:9px;height:9px;border-radius:50%;background:var(--accent)}.chart-legend i.click{background:#f39a46}.weekly-chart-scroll{overflow-x:auto}.weekly-chart{position:relative;min-width:680px;height:330px;padding:10px 16px 0 54px;background:#fafafb}.chart-y-axis{position:absolute;left:0;top:8px;bottom:43px;width:42px;display:flex;flex-direction:column;justify-content:space-between;text-align:right;color:#91959e;font-size:10px}.chart-grid-lines{position:absolute;left:54px;right:16px;top:12px;bottom:47px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}.chart-grid-lines i{display:block;border-top:1px dashed #dfe1e6}.chart-columns{position:absolute;left:54px;right:16px;top:12px;bottom:0;display:grid;grid-template-columns:repeat(7,minmax(58px,1fr));gap:10px}.chart-day{min-width:0;display:grid;grid-template-rows:minmax(0,1fr) 42px}.chart-bar-area{min-height:0;display:flex;align-items:flex-end;justify-content:center;gap:7px}.chart-bar{position:relative;width:min(26px,34%);min-height:0;border-radius:5px 5px 2px 2px;background:var(--accent);transition:filter .15s}.chart-bar.click{background:#f39a46}.chart-bar:hover{filter:brightness(.93)}.chart-bar span{position:absolute;left:50%;bottom:calc(100% + 7px);z-index:3;transform:translateX(-50%);width:max-content;max-width:130px;padding:6px 8px;border-radius:4px;background:#242733;color:#fff;font-size:10px;opacity:0;pointer-events:none}.chart-bar:hover span{opacity:1}.chart-day time{align-self:center;text-align:center;color:#777c86;font-size:11px}@media(max-width:1200px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.weekly-statistics .block-heading{align-items:flex-start;gap:12px}.chart-legend{flex:0 0 auto}}@media(max-width:430px){.metric-grid{grid-template-columns:1fr}}

/* ===== 客户端分流跳转 / 爬虫防护 ===== */
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}
.dot-bot{background:#d6455d}.dot-ios{background:#6659e8}.dot-android{background:#1f9d73}.dot-desktop{background:#f39a46}.dot-unknown{background:#9aa0aa}
.client-rule-editor{display:grid;gap:8px;margin-top:16px}
.client-rule-row{display:grid;grid-template-columns:150px minmax(0,1fr) 92px auto;gap:10px;align-items:center}
.client-rule-row input{height:38px;padding:8px 10px}
.client-rule-name{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:#4d515b}
.client-rule-name small{display:block;font-size:10px;font-weight:400;color:#9aa0aa;text-transform:uppercase;letter-spacing:.4px}
.client-rule-help{margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.6}
.client-test-box{margin-top:20px;padding:18px;border:1px solid var(--line);border-radius:6px;background:#fafafb}
.client-test-head h4{margin:0 0 6px;font-size:14px}
.client-test-head p{margin:0 0 14px;color:var(--muted);font-size:12px}
.client-test-presets{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 12px}
.preset-chip{height:30px;padding:0 12px;border:1px solid var(--line);border-radius:15px;background:#fff;color:#555a64;font-size:12px}
.preset-chip:hover{border-color:var(--accent);color:var(--accent)}
.client-test-actions{display:flex;gap:9px}
.client-test-result{margin-top:14px;border-top:1px solid var(--line);padding-top:12px;display:grid;gap:8px}
.client-result-row{display:grid;grid-template-columns:90px minmax(0,1fr);gap:10px;align-items:baseline;font-size:12px}
.client-result-row>span:first-child{color:var(--muted)}
.client-result-row code{font-family:ui-monospace,Consolas,monospace;font-size:11px;color:#5b6070;overflow-wrap:anywhere}
.client-result-row a{color:var(--accent);overflow-wrap:anywhere}
.client-result-row em{color:var(--red);font-style:normal}
.tag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:4px;font-size:11px;font-weight:700}
.tag-bot{background:#ffeff1;color:#b32f45}.tag-ios{background:#eeeaff;color:#5145c9}.tag-android{background:#eaf7f2;color:#167a59}.tag-desktop{background:#fff2e4;color:#b96d17}.tag-unknown{background:#f1f2f4;color:#6a6f79}
.client-tag{display:inline-flex;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:600}
.client-breakdown-block{margin-top:22px}
.client-breakdown{display:grid;gap:10px}
.client-bar-row{display:grid;grid-template-columns:140px minmax(0,1fr) 60px 78px;gap:12px;align-items:center;font-size:12px}
.client-bar-name{display:flex;align-items:center;gap:8px;color:#4d515b;font-weight:600}
.client-bar-track{height:10px;border-radius:5px;background:#f0f1f4;overflow:hidden}
.client-bar-fill{height:100%;border-radius:5px}
.fill-bot{background:#d6455d}.fill-ios{background:#6659e8}.fill-android{background:#1f9d73}.fill-desktop{background:#f39a46}.fill-unknown{background:#9aa0aa}
.client-bar-row strong{text-align:right;font-size:13px}
.client-bar-row small{color:var(--muted);text-align:right;font-size:11px}
.source-preview img{border-radius:3px}
@media(max-width:900px){.client-rule-row{grid-template-columns:1fr}.client-rule-name{justify-content:flex-start}.client-bar-row{grid-template-columns:110px minmax(0,1fr) 50px}.client-bar-row small{display:none}}
@media(max-width:600px){.client-result-row{grid-template-columns:1fr}.client-test-actions{flex-direction:column}.filterbar{grid-template-columns:1fr}}
