:root{color-scheme:dark;--bg:#0a0e10;--panel:#12191a;--panel2:#161e1e;--line:#273231;--muted:#82918d;--text:#ebf1ec;--green:#b9e877;--green2:#9bcc63;--yellow:#e8c67c;--red:#e79883;--font:'DM Sans','Microsoft YaHei',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px var(--font);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.app{display:flex;min-height:100vh}.sidebar{width:238px;flex:none;background:#0e1415;border-right:1px solid #25302e;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;z-index:3;padding:27px 16px 0}.brand{display:flex;align-items:center;gap:11px;padding:0 6px 34px}.brand-mark{height:37px;width:37px;display:grid;place-content:center;border:1px solid #a1cf69;border-radius:10px;color:var(--green);font:800 21px Manrope,sans-serif;letter-spacing:-2px}.brand-mark span{color:#f2f6e9}.brand strong{display:block;font:800 13px Manrope,sans-serif;letter-spacing:1.4px}.brand small{display:block;font-size:10px;color:#84948b;margin-top:4px;letter-spacing:1px}.side-label{color:#81908a;font-size:10px;font-weight:700;letter-spacing:1px;padding:0 10px;margin:4px 0 14px}.side-label span{font-size:8px;color:#4d5a55;float:right;letter-spacing:.6px}.nav-section{margin:32px 0 12px}.nav-item{width:100%;height:43px;color:#8f9d97;background:none;border:0;border-radius:6px;text-align:left;display:flex;align-items:center;gap:12px;padding:0 11px;margin:3px 0;font-weight:600;position:relative}.nav-item:hover{background:#192321;color:#dbe9dd}.nav-item.active{background:#263629;color:#c9ed9d}.nav-icon{width:18px;color:#91a398;font-size:18px;font-weight:400;text-align:center}.active .nav-icon{color:var(--green)}.nav-count{margin-left:auto;font-size:10px;background:#27352f;color:#a4b6a8;padding:3px 6px;border-radius:4px}.nav-line{position:absolute;width:3px;height:18px;background:var(--green);left:-16px;border-radius:0 3px 3px 0}.side-bottom{margin-top:auto}.preview-tag{display:flex;align-items:flex-start;gap:10px;background:#18231d;border:1px solid #2a3a2c;border-radius:7px;padding:13px 10px}.preview-tag strong,.preview-tag small{display:block}.preview-tag strong{font-size:11px;color:#d4e5cf}.preview-tag small{color:#829388;font-size:10px;margin-top:5px}.pulse,.demo-pill i{width:7px;height:7px;background:#b8e77a;border-radius:50%;display:inline-block;box-shadow:0 0 0 4px #a5d77718;flex:none;margin-top:3px}.side-foot{border-top:1px solid #27312e;margin-top:18px;padding:19px 2px;color:#57645d;font:700 9px Manrope,sans-serif;letter-spacing:1px}.side-foot span{float:right}.main{margin-left:238px;width:calc(100% - 238px);min-width:0}.topbar{height:67px;border-bottom:1px solid #202a28;display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:#0d1213}.crumb{color:#71817a;font-size:12px}.crumb span{padding:0 12px;color:#46534c}.crumb b{font-weight:500;color:#bdc9c0}.top-right{display:flex;align-items:center;gap:14px}.demo-pill{background:#1b2a1d;border:1px solid #304334;color:#bcdca8;padding:7px 10px;border-radius:5px;font-size:10px}.demo-pill i{width:5px;height:5px;margin:0 5px 1px 0;box-shadow:none}.icon-button{border:1px solid #34413c;background:#151d1c;color:#a8b8ae;border-radius:50%;width:27px;height:27px}.avatar{height:31px;width:31px;display:grid;place-items:center;background:#3b513c;border-radius:50%;font-size:11px;font-weight:bold;color:#ddf0d5}.admin{font-size:11px;color:#d6dfd7}.admin small{display:block;color:#73827b;font-size:10px;margin-top:3px}.menu-toggle{display:none}.content{max-width:1580px;margin:auto;padding:37px 39px 44px}.eyebrow{color:#a6cf81;letter-spacing:1.5px;font:700 10px Manrope,sans-serif;margin-bottom:11px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:27px}.page-head h1{font-size:25px;letter-spacing:.5px;margin:0 0 9px;font-weight:700}.page-head p{margin:0;color:#84938c;font-size:12px;line-height:1.6}.head-actions{display:flex;gap:9px;flex-shrink:0}.btn{border:1px solid #3c4b44;color:#d4ded5;background:#1a2420;border-radius:5px;min-height:36px;padding:0 13px;font-weight:600;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{border-color:#819a81;background:#243129}.btn-primary{background:var(--green);color:#14200f;border-color:var(--green)}.btn-primary:hover{background:#c9f294;color:#14200f}.btn-plain{background:transparent}.plus{font-size:18px;line-height:1}.notice{border:1px solid #34452f;background:#19241b;border-radius:6px;padding:12px 15px;display:flex;gap:10px;align-items:center;color:#b6c8af;font-size:11px;margin-bottom:19px}.notice-icon{height:20px;width:20px;border:1px solid #69865f;color:#b9dc9d;border-radius:50%;display:grid;place-items:center;font-size:11px;flex:none}.notice b{color:#d2e7c5}.notice .notice-close{margin-left:auto;background:none;border:0;color:#879983;font-size:17px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.stat{border:1px solid var(--line);border-radius:7px;background:#141c1c;padding:18px 19px;min-height:124px;position:relative;overflow:hidden}.stat:after{content:'';position:absolute;right:-32px;bottom:-55px;height:110px;width:110px;border:1px solid #2a3930;border-radius:50%}.stat-label{font-size:11px;color:#a2b0a7;display:flex;align-items:center;gap:7px}.stat-label .dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.stat-value{font:700 28px Manrope,sans-serif;margin-top:12px;line-height:1}.stat-value small{font:500 11px var(--font);color:#8c9b91;margin-left:5px}.stat-caption{font-size:10px;color:#73837b;margin-top:11px}.stat-icon{position:absolute;right:18px;top:17px;color:#9ac67c;background:#243328;padding:7px 9px;border-radius:5px;font-size:13px}.stat.warn .stat-icon{color:#e8c67c;background:#372e20}.stat.warn .stat-label .dot{background:var(--yellow)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 302px;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:7px;min-width:0}.panel-head{padding:19px 20px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head h2{font-size:14px;margin:0 0 5px}.panel-head p{color:#77877f;font-size:10px;margin:0}.text-link{background:none;border:0;color:#b6d99b;font-size:11px;padding:5px}.text-link:hover{color:#e3ffd2}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}.table th{height:39px;background:#17201f;border-top:1px solid #24302d;border-bottom:1px solid #283330;font-size:10px;color:#87978e;font-weight:600;padding:0 19px}.table td{height:64px;border-bottom:1px solid #222e2a;padding:11px 19px;color:#c8d3ca;font-size:11px}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#19221f}.primary-cell{font-weight:700;color:#e0e8e1}.sub-cell{display:block;margin-top:5px;color:#778a80;font-size:10px}.mono{font:11px Manrope,monospace;letter-spacing:.2px}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 7px;border-radius:4px;font-size:10px;font-weight:600;background:#253629;color:#b9dfab}.badge:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.badge.warn{background:#3b3324;color:#e3ca91}.badge.danger{background:#3e2a28;color:#e1a18f}.badge.neutral{background:#293333;color:#9aaba1}.row-button{background:transparent;border:0;color:#b9da9c;font-size:11px;padding:6px 0}.row-button:hover{color:#e4ffce}.activity{padding:0 20px 19px}.activity-item{display:flex;gap:11px;padding:15px 0;border-bottom:1px solid #26312e}.activity-item:last-child{border:0}.activity-icon{height:28px;width:28px;flex:none;display:grid;place-items:center;background:#26382b;color:#bde3a5;border-radius:5px}.activity-icon.warn{background:#3b3324;color:#e1c884}.activity-item strong{font-size:11px;font-weight:600}.activity-item p{font-size:10px;color:#85958a;line-height:1.5;margin:4px 0}.activity-item time{font:10px Manrope,sans-serif;color:#64756b}.hint-panel{margin-top:16px;padding:18px 19px;background:#1b281e;border:1px solid #344937;border-radius:6px}.hint-panel .hint-title{font-size:11px;color:#d2e5c7;font-weight:700}.hint-panel p{font-size:10px;color:#92a891;line-height:1.7;margin:8px 0 0}.toolbar{display:flex;gap:10px;align-items:center;padding:0 20px 17px;flex-wrap:wrap}.input,.select{background:#111918;border:1px solid #34413c;color:#dce6dd;border-radius:5px;height:36px;padding:0 11px;font-size:11px}.input{width:250px}.input::placeholder{color:#6b7d73}.select{min-width:124px}.toolbar-note{font-size:10px;color:#778a7e;margin-left:auto}.full-panel{overflow:hidden}.empty{padding:50px;text-align:center;color:#82938a}.modal-wrap{position:fixed;inset:0;z-index:10;display:none;align-items:center;justify-content:center;padding:20px}.modal-wrap.show{display:flex}.modal-shade{position:absolute;inset:0;background:#000b}.modal{position:relative;width:min(480px,100%);max-height:90vh;overflow:auto;background:#18211f;border:1px solid #43534a;border-radius:9px;box-shadow:0 24px 80px #0009}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:21px 24px 17px;border-bottom:1px solid #314039}.modal-header h2{font-size:16px;margin:0 0 7px}.modal-header p{font-size:11px;color:#8c9d92;margin:0}.close{background:none;border:0;color:#a3b2a9;font-size:20px}.modal-content{padding:21px 24px}.field{display:block;margin-bottom:16px;color:#cbd8cd;font-size:11px;font-weight:600}.field input,.field select{display:block;width:100%;margin-top:8px}.field small{display:block;margin-top:6px;color:#7c8f82;font-weight:400;line-height:1.5}.modal-footer{display:flex;justify-content:flex-end;gap:9px;padding:15px 24px;border-top:1px solid #314039}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.detail-grid div{background:#111a18;border:1px solid #2d3b34;border-radius:5px;padding:12px}.detail-grid small{display:block;font-size:10px;color:#819489;margin-bottom:7px}.detail-grid strong{font-size:12px}.toast{position:fixed;right:25px;bottom:25px;z-index:20;transform:translateY(20px);opacity:0;pointer-events:none;background:#d4efbd;color:#24331e;padding:11px 15px;border-radius:6px;font-size:12px;font-weight:bold;transition:.2s}.toast.show{opacity:1;transform:none}footer{border-top:1px solid #202b27;padding:18px 39px;color:#586a60;font-size:10px}footer span{padding:0 5px}.footer-right{float:right}.mobile-overlay{display:none}@media(max-width:1100px){.layout{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.activity{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.activity-item{border:0}}@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:.2s;box-shadow:10px 0 35px #0008}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.topbar{height:58px;padding:0 18px}.menu-toggle{display:block;background:none;border:0;color:#c5d3c7;font-size:19px;margin-right:12px}.crumb{margin-right:auto}.admin,.icon-button{display:none}.top-right{gap:10px}.content{padding:28px 17px}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:23px}.stats{gap:9px}.stat{padding:15px;min-height:110px}.stat-value{font-size:24px}.stat-icon{display:none}.activity{display:block}.activity-item{border-bottom:1px solid #26312e}.toolbar{padding:0 14px 15px}.input{width:100%}.toolbar-note{margin-left:0}.panel-head{padding:17px 15px}.table th,.table td{padding-left:15px;padding-right:15px}footer{padding:18px}.footer-right{display:none}}
.compact-table .table th,.compact-table .table td{padding-left:12px;padding-right:12px}@media(max-width:400px){.detail-grid{grid-template-columns:1fr}.modal-header,.modal-content{padding-left:18px;padding-right:18px}.modal-footer{padding-left:18px;padding-right:18px}}
[hidden]{display:none!important}
@media(max-width:400px){.modal-footer{flex-wrap:wrap}.modal-footer .btn{flex:1 1 auto}}

/* 内置矢量图标，离线可用 */
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.ui-icon{display:inline-block;width:20px;height:20px;flex:none;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.brand-mark{width:40px;height:40px;display:grid;place-items:center;background:linear-gradient(150deg,#213426,#101c16);border:1px solid #354d39;border-radius:12px;box-shadow:inset 0 1px #ffffff0d,0 4px 15px #0003}
.brand-mark svg{width:36px;height:36px;fill:none;stroke-linecap:round;stroke-linejoin:round}
.brand-mark .mark-shield{stroke:#98cc72;stroke-width:1.4}
.brand-mark .mark-letter{stroke:#d9f5c0;stroke-width:2.5}
.brand-mark .mark-accent{stroke:#d9f5c0;stroke-width:1.4}
.nav-icon{width:20px;height:20px;display:inline-grid;place-items:center;flex:none}
.nav-icon .ui-icon{width:19px;height:19px;stroke-width:1.65}
.nav-item:hover .nav-icon{color:#c9e5ba}
.stat-icon{width:35px;height:35px;padding:0;display:grid;place-items:center}
.stat-icon .ui-icon{width:19px;height:19px}
.activity-icon .ui-icon{width:17px;height:17px}
.notice-icon{border:0;width:20px;height:20px}
.notice-icon .ui-icon{width:19px;height:19px}
.button-icon{width:16px;height:16px;stroke-width:2}
.inline-icon{width:14px;height:14px;stroke-width:1.8}
.text-link,.row-button{display:inline-flex;align-items:center;gap:4px}
.hint-title{display:flex;align-items:center;gap:7px}
.notice-close,.close,.icon-button,.menu-toggle{display:inline-grid;place-items:center}
.notice-close .ui-icon,.close .ui-icon{width:17px;height:17px}
.icon-button .ui-icon{width:17px;height:17px}
.menu-toggle{display:none}
@media(max-width:700px){.menu-toggle{display:inline-grid}.menu-toggle .ui-icon{width:21px;height:21px}}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 8%,#1c3023 0%,#0a0e10 48%)}
.login-card{width:min(100%,430px);padding:38px;background:#12191a;border:1px solid #2d3c34;border-radius:14px;box-shadow:0 24px 80px #0007}
.login-mark{width:48px;height:48px;display:grid;place-items:center;margin-bottom:25px;color:#b9e877;background:#203222;border:1px solid #3c5a37;border-radius:13px}
.login-mark svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.login-card h1{margin:12px 0 9px;font-size:26px}.login-intro{color:#9aada0;margin:0 0 28px;line-height:1.7}
.login-form .field{font-size:13px;margin-bottom:20px}.login-form .input{height:44px}.login-submit{width:100%;min-height:44px;margin-top:5px}
.login-error{padding:12px 14px;margin-bottom:20px;border-radius:6px;background:#3e2a28;color:#ffbba8}.login-foot{font-size:11px;color:#6d8074;margin:28px 0 0}
.pagination{display:flex;justify-content:flex-end;gap:12px;align-items:center;padding:16px 22px;color:#9eafa3;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}
.scope-all{color:#cceba9}.danger-button,.danger-text{color:#e9a196}.danger-button:hover{border-color:#b36b60}.toast.error{background:#704139;color:#fff}.loading{padding:40px;color:#9cad9f}.no-pad{padding:22px 0 10px}
