:root{color-scheme:light;--bg:#f4f6fa;--paper:#fff;--text:#10192b;--muted:#506078;--line:#dce2ec;--primary:#4338e8;--select:#eeecff;--select-text:#3b2ccf;--teal:#007e73;--good:#006854;--good-bg:#e2f5ef;--amber:#824900;--amber-bg:#fff0cf;--danger:#b4233b;--shadow:0 1px 2px #15244108;--rail:218px}
:root[data-theme=dark]{color-scheme:dark;--bg:#101827;--paper:#192435;--text:#f3f6fc;--muted:#b1bfd3;--line:#304058;--primary:#6455eb;--select:#352d73;--select-text:#e0dbff;--teal:#008e80;--good:#93e9d5;--good-bg:#153d3d;--amber:#ffd584;--amber-bg:#49361e;--danger:#e24660;--shadow:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 Inter,"Segoe UI","Microsoft YaHei UI",system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button,input,select,textarea{border:1px solid var(--line);border-radius:8px;background:var(--paper);min-height:40px;padding:8px 12px}button{cursor:pointer;font-weight:650}button:hover{filter:brightness(.95)}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}input::placeholder{color:var(--muted)}textarea{min-height:96px;resize:vertical}label{display:grid;gap:7px;font-weight:600}label input,label textarea{width:100%;font-weight:400}[hidden]{display:none!important}.primary,.accent,.danger{color:#fff;border-color:transparent}.primary{background:var(--primary)}.accent{background:var(--teal)}.danger{background:var(--danger)}
h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:36px;letter-spacing:-.035em;line-height:1.2}h2{font-size:20px;margin-bottom:14px}.muted{color:var(--muted)}.brand{display:flex;align-items:center;gap:11px;font-size:24px;font-weight:800;white-space:nowrap}.hex{display:inline-block;width:28px;height:31px;background:var(--primary);clip-path:polygon(50% 0,98% 25%,98% 75%,50% 100%,2% 75%,2% 25%);position:relative;flex:none}.hex:after{content:"";position:absolute;inset:4px;background:var(--paper);clip-path:inherit}
.sidebar{width:var(--rail);position:fixed;inset:0 auto 0 0;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px;z-index:3}.sidebar .brand{padding:0 12px 27px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:8px;font-weight:650}.sidebar nav a[aria-current]{background:var(--select);color:var(--select-text)}.nav-icon{font-size:22px;width:23px;text-align:center;line-height:1}.sidebar-user{margin-top:auto;border-top:1px solid var(--line);padding:18px 13px 3px}.workspace{margin-left:var(--rail)}.top{display:flex;justify-content:flex-end;align-items:center;gap:9px;padding:9px 22px;min-height:58px;background:var(--paper);border-bottom:1px solid var(--line)}.icon{font-size:20px;min-width:40px;padding:3px 8px}.mobile{display:none}.content{padding:22px;max-width:1680px;margin:auto}.page-title,.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:17px}.section-head h2{margin:0 auto 0 0}.section-head select{min-height:34px;padding:4px 8px}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px;min-width:0;box-shadow:var(--shadow);margin-bottom:14px}.services,.resources{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:12px}.services{text-align:center}.services>*+*{border-left:1px solid var(--line)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric strong{font-size:clamp(19px,2.2vw,31px);display:block;line-height:1.15;margin:8px 0;overflow-wrap:anywhere}.metric small{color:var(--muted)}.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px}.subscriptions{grid-template-columns:1fr 1fr}.subscriptions input[type=search]{width:100%;margin-bottom:12px}.subscriptions label{margin:14px 0}.settings{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}.settings form{display:grid;gap:10px}.settings form button{justify-self:start}.tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}.tabs button{border:none;border-radius:0;background:transparent;white-space:nowrap}.tabs [aria-current]{color:var(--select-text);border-bottom:2px solid var(--primary)}
.filters{display:flex;align-items:end;flex-wrap:wrap;gap:10px;margin-bottom:14px}.filters input[type=search]{min-width:235px}.filters label{font-size:13px}.table-wrap{overflow:auto}.panel.table-wrap{padding:0}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;text-align:left}th,td{padding:12px;white-space:nowrap;border-bottom:1px solid var(--line)}th{font-size:13px;background:var(--bg)}tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);max-width:200px;overflow:hidden;text-overflow:ellipsis}.pill{display:inline-block;padding:3px 8px;border-radius:7px;background:var(--bg);color:var(--muted);font-size:13px;font-weight:650}.pill.good{color:var(--good);background:var(--good-bg)}.pill.warn{color:var(--amber);background:var(--amber-bg)}.actions,.pager,.export-actions{display:flex;gap:8px;flex-wrap:wrap}.pager{justify-content:flex-end;margin-bottom:12px}.actions{justify-content:flex-end}.row-actions{display:flex;gap:5px}.row-actions button{min-height:32px;padding:4px 8px;font-size:13px}.rank-row{padding:11px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px}.rank-row:last-child{border:0}.resources strong{display:block;font-size:17px;margin-top:4px}.empty{padding:24px 0;text-align:center;color:var(--muted)}.chart{width:100%;height:235px;display:block}.legend{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;font-size:13px;margin:4px 0 11px}.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px}.legend .up{background:#6853ec}.legend .down{background:#00988b}.legend .gap{background:#d7a345}.feedback{color:var(--good);margin-bottom:14px}.feedback.error{color:var(--danger)}hr{border:0;border-top:1px solid var(--line);margin:18px 0}
dialog{background:var(--paper);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:22px;width:min(430px,calc(100% - 30px))}dialog::backdrop{background:#0c16235c}dialog form{display:grid;gap:14px}dialog h2,dialog p{margin:0}.login-top{display:flex;justify-content:flex-end;padding:18px}.login{width:min(440px,calc(100% - 40px));margin:5vh auto 32px}.login .brand{justify-content:center;font-size:34px;margin-bottom:28px}.login h1{text-align:center;margin-bottom:34px}.login form{display:grid;gap:18px}.login input,.login .primary{min-height:46px}.password{position:relative}.password input{padding-right:48px}.password button{position:absolute;right:3px;top:3px;border:0;background:transparent}.login .feedback{margin:0}.login .feedback:empty{display:none}#qr-image{display:block;margin:14px auto;max-width:100%;height:auto}
@media(max-width:1000px){:root{--rail:185px}.content{padding:16px}.split{grid-template-columns:1fr}.resources{grid-auto-flow:row;grid-template-columns:repeat(3,1fr)}}
@media(max-width:660px){.sidebar{width:100%;inset:auto 0 0;padding:5px 6px max(5px,env(safe-area-inset-bottom));border:0;border-top:1px solid var(--line)}.sidebar .brand,.sidebar-user{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.sidebar nav a{flex-direction:column;font-size:11px;gap:4px;padding:5px 2px;min-height:46px;white-space:nowrap}.workspace{margin-left:0;padding-bottom:68px}.top{padding:7px 13px}.mobile{display:flex;margin-right:auto;font-size:19px}.mobile .hex{width:20px;height:23px}.content{padding:13px}.page-title{margin-bottom:13px}h1{font-size:28px}h2{font-size:18px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric strong{font-size:21px}.panel{padding:12px;margin-bottom:10px}.services{gap:4px;font-size:12px}.resources{grid-template-columns:repeat(2,1fr)}.chart{height:185px}th,td{padding:9px}.filters input[type=search]{min-width:0;width:100%}.login{margin-top:4vh}}
.rank-row{display:grid;grid-template-columns:1fr auto;gap:5px 12px}
.rank-row progress{grid-column:1/-1;width:100%;height:8px;accent-color:var(--teal)}
