:root{color-scheme:light;--primary:#2563eb;--primary-strong:#1753d5;--primary-light:#eaf1ff;--ink:#17233e;--text:#37435d;--muted:#8995aa;--line:#e7edf6;--bg:#f5f7fc;--white:#fff;--danger:#e04958;--success:#0eaa81;--warn:#eb9b2e;--shadow:0 8px 32px rgba(35,62,111,.055);font-family:Inter,-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;font-size:14px;line-height:1.5}*{box-sizing:border-box}html,body{margin:0;min-height:100%;height:100%}body{background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}a{text-decoration:none;color:inherit}svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}svg.fill-icon{fill:currentColor;stroke:none}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.04em}h1{font-size:28px}h2{font-size:23px}h3{font-size:16px}h4{font-size:14px}small{font-size:12px}[hidden]{display:none!important}:focus-visible{outline:3px solid rgba(37,99,235,.25);outline-offset:2px}::selection{background:#cbdcfb;color:#17377e}
/* 登录 */
.login-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:46px 20px;position:relative;overflow:hidden;background:linear-gradient(136deg,#eef5ff 0%,#f9fbff 44%,#ebf3ff 100%)}.login-backdrop{position:absolute;inset:0;overflow:hidden;pointer-events:none}.login-glow{position:absolute;border-radius:50%;filter:blur(12px)}.glow-a{width:580px;height:580px;background:radial-gradient(circle,rgba(112,165,255,.27),transparent 65%);left:-170px;top:-215px}.glow-b{width:640px;height:640px;background:radial-gradient(circle,rgba(93,153,250,.17),transparent 65%);right:-185px;bottom:-300px}.login-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(42,94,180,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(42,94,180,.035) 1px,transparent 1px);background-size:36px 36px;mask-image:linear-gradient(to bottom,transparent,#000 35%,transparent)}.login-panel{position:relative;z-index:1;width:min(100%,448px);padding:42px 44px 29px;background:rgba(255,255,255,.97);border:1px solid #e8eef9;border-radius:22px;box-shadow:0 24px 75px rgba(38,85,169,.12),0 3px 12px rgba(40,75,130,.04)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:30px}.brand-logo{width:42px;height:42px;border-radius:13px;color:#fff;background:linear-gradient(145deg,#3186f4,#1859d7);display:grid;place-items:center;box-shadow:0 5px 11px #2671df2d;flex-shrink:0}.brand-logo svg{width:25px;height:25px;stroke:none;fill:#fff}.brand-logo-large{width:43px;height:43px}.brand-name{color:#1e3563;font-weight:800;font-size:20px;letter-spacing:-.04em}.login-panel h1{font-size:27px;line-height:1.3;margin-bottom:7px;font-weight:800}.login-subtitle{font-size:13px;color:#8a96aa;margin-bottom:29px}.form-label{display:block;color:#3b4966;font-size:13px;font-weight:600;margin:0 0 8px}.input-wrap{display:flex;align-items:center;gap:10px;width:100%;min-height:45px;padding:0 13px;border:1px solid #e0e7f1;border-radius:11px;background:#fbfcff;transition:.2s;margin-bottom:20px}.input-wrap:focus-within{border-color:#80aafa;box-shadow:0 0 0 3px #e8f0ff;background:#fff}.input-wrap>span svg{width:17px;height:17px;color:#91a0b6}.input-wrap input{height:43px;width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);font-size:13px}.input-wrap input::placeholder{color:#a7b0c0}.input-trailing{border:0;background:transparent;color:#98a5b8;display:grid;place-items:center;padding:4px}.input-trailing svg{width:17px;height:17px}.btn{border:1px solid transparent;min-height:37px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:9px;padding:8px 14px;font-weight:600;font-size:12.5px;white-space:nowrap;transition:background .16s,transform .16s,border-color .16s}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{color:#fff;background:linear-gradient(135deg,#2f7bf5,#1c60dc);box-shadow:0 4px 11px #286ee52b}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#1769ed,#1457cd)}.btn-soft{background:#f0f5ff;color:#2865d1;border-color:#e3ecff}.btn-plain{background:#fff;border-color:#e4ebf5;color:#61718f}.btn-danger{background:#fff2f3;color:#d44756;border-color:#ffe0e2}.btn-success{background:#e9f9f1;color:#0a9a72;border-color:#d7f4e5}.btn-full{width:100%}.btn-login{min-height:47px;margin-top:5px;font-size:13.5px}.btn svg{width:15px;height:15px}.form-error{color:#ce4252;background:#fff0f1;border:1px solid #ffe0e3;border-radius:8px;margin:-6px 0 12px;padding:8px 10px;font-size:12px}.login-divider{display:flex;align-items:center;gap:12px;color:#acb5c5;font-size:11px;margin:22px 0 16px;white-space:nowrap}.login-divider:before,.login-divider:after{content:"";height:1px;background:#e8edf6;flex:1}#telegram-widget{display:flex;justify-content:center;min-height:40px}.login-footer{border-top:1px solid #eef2f8;color:#9aa7ba;display:flex;align-items:center;justify-content:center;gap:7px;margin-top:27px;padding-top:19px;font-size:11px}.login-footer svg{width:14px;height:14px;color:#6097ea}.login-bottom{position:absolute;bottom:17px;left:0;right:0;text-align:center;font-size:11px;color:#a5b3c8}
/* 外框 */
.app-shell{display:flex;min-height:100vh}.sidebar{background:#fff;width:244px;flex:0 0 244px;min-height:100vh;min-height:100dvh;position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;z-index:20;border-right:1px solid #edf0f8;transition:width .22s,flex-basis .22s}.sidebar-brand{height:81px;display:flex;align-items:center;gap:12px;padding:0 23px;border-bottom:1px solid #f1f3f8;flex-shrink:0}.sidebar-brand-text{display:flex;flex-direction:column;gap:0;white-space:nowrap}.sidebar-brand-text strong{font-weight:800;font-size:18px;color:#243957;letter-spacing:-.035em}.sidebar-brand-text span{font-size:11px;color:#96a2b2;font-weight:500;letter-spacing:.1em}.sidebar-nav{padding:19px 12px;overflow-y:auto;scrollbar-width:thin;flex:1}.nav-group-label{padding:14px 14px 7px;color:#acb4c3;font-size:10px;font-weight:700;letter-spacing:.12em}.nav-link{border:0;background:transparent;width:100%;height:39px;display:flex;align-items:center;gap:13px;color:#64718a;text-align:left;padding:0 14px;margin:2px 0;border-radius:9px;font-size:12.5px;font-weight:600;transition:background .15s,color .15s}.nav-link svg{width:17px;height:17px;stroke-width:1.8}.nav-link:hover{background:#f4f8ff;color:#2d64c3}.nav-link.active{color:#2469dc;background:#eaf2ff}.nav-link.active::after{content:"";height:7px;width:7px;border-radius:50%;background:#3b82f6;margin-left:auto}.sidebar-bottom{padding:15px 22px;border-top:1px solid #f0f3f8;display:flex;justify-content:space-between;align-items:center;gap:10px;color:#8c9ab0}.sidebar-status{display:flex;align-items:center;gap:9px;white-space:nowrap;font-size:11px}.pulse-dot{width:7px;height:7px;background:#20c592;border-radius:50%;box-shadow:0 0 0 3px #e0f9f1;animation:pulse 2s infinite}@keyframes pulse{50%{box-shadow:0 0 0 6px #e0f9f100}}.icon-btn{width:35px;height:35px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:9px;background:transparent;color:#7e8da6}.icon-btn:hover{background:#f0f5ff;color:#2c67ca}.icon-btn svg{width:19px;height:19px}.workspace{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:69px;flex:0 0 69px;background:#fff;border-bottom:1px solid #edf0f8;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 31px;position:sticky;top:0;z-index:10}.topbar-left,.topbar-right{display:flex;align-items:center;gap:15px}.breadcrumbs{display:flex;align-items:center;gap:11px;color:#97a3b6;font-size:12px;white-space:nowrap}.breadcrumbs strong{color:#354360;font-weight:700}.breadcrumb-divider{color:#c5ccda}.topbar-date{font-size:11px;color:#8e9bb0;white-space:nowrap}.refresh-button{border:1px solid #edf1f7;background:#fff}.refresh-button.rotating svg{animation:spin .65s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.user-menu-wrap{position:relative}.user-trigger{border:0;border-left:1px solid #edf0f8;background:transparent;padding:3px 0 3px 17px;display:flex;align-items:center;gap:10px;text-align:left}.user-avatar{height:34px;width:34px;border-radius:11px;background:linear-gradient(145deg,#dceaff,#bcd7ff);color:#2866c9;display:grid;place-items:center;font-size:14px;font-weight:800;flex-shrink:0}.user-ident{display:flex;flex-direction:column;align-items:flex-start}.user-ident strong{font-size:12px;color:#293a57;max-width:118px;overflow:hidden;text-overflow:ellipsis}.user-ident small{color:#9aa5b7;font-size:10px}.chevron svg{width:14px;height:14px;color:#9fabbd}.user-menu{position:absolute;right:0;top:calc(100% + 14px);width:174px;background:#fff;border:1px solid #e6ecf5;box-shadow:0 16px 35px #203d6d19;border-radius:12px;padding:8px;z-index:25}.user-menu button{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:7px;background:transparent;padding:10px 9px;text-align:left;color:#56647d;font-size:12px}.user-menu button:hover{background:#f3f7fe}.user-menu button svg{height:16px;width:16px}.user-menu .menu-danger{color:#d34b5c}.user-menu-divider{height:1px;background:#eef2f8;margin:5px 0}.main-content{width:min(100%,1530px);margin:0 auto;padding:29px 31px 38px;flex:1;min-width:0}.main-footer{display:flex;justify-content:space-between;padding:16px 31px;border-top:1px solid #e8edf5;color:#a9b4c4;font-size:10px}.mobile-only,.menu-toggle{display:none}.app-shell.collapsed .sidebar{width:76px;flex-basis:76px}.app-shell.collapsed .sidebar-brand{padding:0 16px}.app-shell.collapsed .sidebar-brand-text,.app-shell.collapsed .nav-group-label,.app-shell.collapsed .nav-link>span,.app-shell.collapsed .sidebar-status,.app-shell.collapsed .nav-link.active::after{display:none}.app-shell.collapsed .sidebar-nav{padding:20px 13px}.app-shell.collapsed .nav-link{justify-content:center;padding:0}.app-shell.collapsed .sidebar-bottom{justify-content:center}
/* 内容 */
.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:23px}.page-heading h1{font-size:23px;font-weight:800;margin:0 0 5px}.page-heading p{color:#94a0b3;font-size:12px;margin:0}.heading-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid #ebf0f8;box-shadow:var(--shadow);border-radius:13px;padding:18px 19px 16px;position:relative;min-height:121px;overflow:hidden}.stat-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:8px}.stat-title{font-size:11px;font-weight:600;color:#8794a8}.stat-icon{height:34px;width:34px;border-radius:10px;display:grid;place-items:center}.stat-icon svg{width:17px;height:17px}.stat-icon.blue{background:#eaf3ff;color:#2b75ee}.stat-icon.teal{background:#e1f8f2;color:#14ab8a}.stat-icon.amber{background:#fff5df;color:#dd9721}.stat-icon.violet{background:#f1eeff;color:#8272e8}.stat-value{font-size:26px;font-weight:800;color:#1e2d49;letter-spacing:-.05em;line-height:1.15}.stat-desc{display:block;margin-top:8px;color:#9ba8b9;font-size:10.5px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.68fr) minmax(260px,1fr);gap:18px;margin-bottom:18px}.dashboard-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,1fr);gap:18px}.panel{background:#fff;border:1px solid #e9eef7;border-radius:13px;box-shadow:var(--shadow);min-width:0;overflow:hidden}.panel-header{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:19px 20px 12px}.panel-title{color:#253550;font-size:13px;font-weight:800;margin:0}.panel-subtitle{font-size:10px;color:#9faabc;margin:3px 0 0}.panel-body{padding:12px 20px 20px}.panel-link{font-size:11px;color:#2467d6;border:0;background:none;font-weight:600}.chart-wrap{height:232px;position:relative}.chart-wrap canvas{width:100%;height:100%;display:block}.chart-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:#9faabc}.range-control{display:inline-flex;gap:4px;padding:3px;background:#f4f7fc;border-radius:8px}.range-btn{background:transparent;border:0;border-radius:6px;padding:5px 9px;font-size:10px;font-weight:700;color:#9aa5b6}.range-btn.active{background:#fff;color:#2c6fdf;box-shadow:0 1px 6px #0000000b}.meter-row{margin:8px 0 21px}.meter-row:last-child{margin-bottom:0}.meter-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:9px;color:#667590}.meter-label strong{color:#344661;font-weight:700}.meter-track{height:7px;border-radius:9px;background:#edf1f7;overflow:hidden}.meter-progress{height:100%;border-radius:9px;background:linear-gradient(90deg,#5b9cf5,#2b70e6);max-width:100%}.meter-progress.green{background:linear-gradient(90deg,#57cdb4,#1ead8a)}.meter-progress.orange{background:linear-gradient(90deg,#f7cb7a,#e9a947)}.event-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #f0f2f6}.event-row:last-child{border-bottom:0}.event-dot{height:9px;width:9px;border-radius:50%;background:#cad4e1;flex-shrink:0}.event-dot.warning{background:#edaa4c}.event-dot.critical{background:#e66a75}.event-dot.good{background:#2ac29e}.event-copy{min-width:0;flex:1}.event-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#394966;font-weight:600;font-size:11.5px}.event-copy span{color:#a3aec0;font-size:10px}.event-time{font-size:10px;color:#aab5c4;white-space:nowrap}.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-action{display:flex;align-items:center;gap:11px;min-height:52px;padding:9px 11px;background:#f7faff;border:1px solid #eef3fc;border-radius:10px;text-align:left;color:#455979;font-size:11.5px;font-weight:600}.quick-action:hover{background:#edf4ff;border-color:#cfdeff}.quick-action svg{color:#3379e7;height:18px;width:18px}
/* 表格、控件 */
.table-panel{background:#fff;border:1px solid #e8eef7;border-radius:13px;box-shadow:var(--shadow);overflow:hidden}.table-toolbar{padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.search-field{height:37px;display:flex;align-items:center;gap:8px;border:1px solid #e2e9f4;border-radius:9px;background:#fbfcff;padding:0 11px;min-width:238px}.search-field svg{width:16px;height:16px;color:#9aa7ba}.search-field input{width:100%;border:0;outline:0;background:transparent;min-width:0;font-size:12px;color:#354460}.search-field input::placeholder{color:#a6b0be}.select-field{height:37px;background:#fff;border:1px solid #e4eaf3;border-radius:9px;padding:0 29px 0 11px;color:#60718d;font-size:11.5px;max-width:200px}.table-scroll{overflow-x:auto;scrollbar-width:thin}table{width:100%;border-collapse:collapse;font-size:11.5px;white-space:nowrap}thead{background:#f8faff}th{color:#8391a7;font-size:10.5px;text-transform:none;letter-spacing:.015em;font-weight:700;text-align:left;padding:13px 19px}td{border-top:1px solid #f0f3f8;padding:14px 19px;color:#53627a}tr:hover td{background:#fcfdff}.cell-strong{font-weight:700;color:#2e415d}.cell-muted{color:#93a0b3}.cell-actions{display:flex;gap:6px}.text-button{border:0;background:transparent;padding:4px 6px;font-size:11px;color:#286edb;font-weight:650}.text-button:hover{text-decoration:underline}.text-button.danger{color:#dc5362}.status-badge{display:inline-flex;align-items:center;gap:6px;border-radius:6px;padding:4px 8px;background:#f0f3f8;color:#738298;font-size:10px;font-weight:700}.status-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-badge.ok{color:#12a783;background:#e5f8f1}.status-badge.warn{color:#cb8b19;background:#fff5e3}.status-badge.danger{color:#d85160;background:#ffeff0}.status-badge.blue{color:#2d75e4;background:#edf4ff}.table-footer{padding:13px 19px;border-top:1px solid #edf1f7;display:flex;justify-content:space-between;align-items:center;gap:12px;color:#9aa5b5;font-size:11px;flex-wrap:wrap}.pagination{display:flex;align-items:center;gap:6px}.pagination button{min-width:29px;height:29px;border:1px solid #e6edf7;border-radius:7px;background:#fff;color:#70809b;padding:0 8px;font-size:11px}.pagination button.active{color:#fff;background:#2f70df;border-color:#2f70df}.pagination button:disabled{opacity:.4}.empty-state{text-align:center;color:#a3afc1;min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px;gap:10px}.empty-state svg{width:28px;height:28px;color:#acbfd9}.empty-state strong{font-size:13px;color:#778aa8}.empty-state span{font-size:11.5px;max-width:330px}.error-state{color:#d34c5a}.error-state svg{color:#d34c5a}.skeleton{height:12px;border-radius:6px;background:linear-gradient(90deg,#eef2f7,#f9fbfd,#eef2f7);background-size:200% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{to{background-position:-200% 0}}.loading-panel{padding:20px}.loading-panel .skeleton{margin:12px 0;height:20px}.panel-note{color:#93a2b7;font-size:11.5px;padding:7px 20px 16px}.settings-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.settings-card{padding:22px;background:#fff;border:1px solid #e8eef7;border-radius:13px;box-shadow:var(--shadow)}.settings-card h3{margin:0 0 6px;font-size:15px}.settings-description{font-size:11.5px;color:#94a0b2;margin:0 0 22px}.setting-row{padding:13px 0;border-bottom:1px solid #f0f3f8}.setting-row:last-child{border-bottom:0}.setting-row label,.field label{display:block;color:#42536f;font-size:12px;font-weight:650;margin-bottom:8px}.field-hint{color:#9fa9bb;font-size:10.5px;margin-top:6px}.form-control{height:39px;width:100%;border:1px solid #e1e8f2;border-radius:9px;background:#fcfdff;padding:0 12px;color:#304362;outline:0;font-size:12px}.form-control:focus{border-color:#80a9f4;box-shadow:0 0 0 3px #e8f0ff}.form-control:disabled{background:#f5f7fb;color:#91a0b4}.form-control.textarea{height:auto;min-height:90px;resize:vertical;padding:10px 12px}.form-control::-webkit-inner-spin-button{opacity:.4}.settings-actions{margin-top:20px;display:flex;justify-content:flex-end}.info-strip{border-radius:10px;background:#f0f6ff;border:1px solid #e2edff;display:flex;align-items:flex-start;gap:9px;padding:12px 14px;color:#60799c;font-size:11.5px}.info-strip svg{color:#407ad8;width:16px;height:16px}.toggle{appearance:none;width:38px;height:21px;border-radius:20px;background:#cdd7e6;position:relative;vertical-align:middle;cursor:pointer;transition:.2s}.toggle:checked{background:#367ae7}.toggle:before{content:"";position:absolute;left:3px;top:3px;width:15px;height:15px;border-radius:50%;background:#fff;transition:.2s}.toggle:checked:before{transform:translateX(17px)}.toggle:disabled{opacity:.45;cursor:not-allowed}.message-layout{display:grid;grid-template-columns:270px 1fr;gap:16px;min-height:440px}.message-list{border:1px solid #e8edf6;border-radius:10px;overflow:auto;max-height:570px}.message-item{padding:14px;border-bottom:1px solid #eef1f7;display:flex;gap:10px;align-items:flex-start;background:#fff;width:100%;border-left:3px solid transparent;text-align:left}.message-item.selected{background:#f1f7ff;border-left-color:#2e77ed}.message-item strong{display:block;color:#385071;font-size:11.5px}.message-item small{color:#a0aabb;font-size:10px}.message-item p{margin:5px 0 0;color:#7c8ca6;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:195px}.conversation{border:1px solid #e8edf6;border-radius:10px;display:flex;flex-direction:column;min-width:0;max-height:570px;overflow:hidden}.conversation-header{border-bottom:1px solid #eef1f7;padding:14px 17px;font-weight:700;color:#405370;font-size:12px}.conversation-body{flex:1;min-height:250px;overflow-y:auto;padding:16px;background:#fafcff}.bubble{max-width:85%;padding:10px 13px;border-radius:12px;background:#fff;border:1px solid #e8eef7;margin-bottom:11px;color:#435574;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.bubble.own{background:#e9f2ff;border-color:#d8e7fd;margin-left:auto}.bubble-time{display:block;font-size:9.5px;color:#a1aec1;margin-top:3px}.conversation-compose{display:flex;gap:8px;padding:12px;background:#fff;border-top:1px solid #e8edf6}.conversation-compose input{flex:1}.readonly-pair{display:grid;grid-template-columns:minmax(90px,130px) 1fr;gap:8px;padding:8px 0;font-size:12px;border-bottom:1px solid #f1f4f8}.readonly-pair dt{color:#9aa7b8}.readonly-pair dd{margin:0;color:#344560;word-break:break-word}.readonly-pair:last-child{border-bottom:0}
/* 弹窗 */
.modal-layer{position:fixed;inset:0;background:#10264f65;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}.modal{background:#fff;border-radius:16px;box-shadow:0 25px 75px #0b24434d;width:min(100%,560px);max-height:min(90dvh,800px);display:flex;flex-direction:column;overflow:hidden;animation:modal-in .16s ease}@keyframes modal-in{from{transform:translateY(9px);opacity:.6}to{transform:translateY(0);opacity:1}}.modal-head{padding:18px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #edf1f6}.modal-head h2{font-size:16px;margin:0}.modal-content{padding:20px 22px;overflow-y:auto}.modal-footer{padding:13px 22px;border-top:1px solid #edf1f6;display:flex;justify-content:flex-end;gap:9px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field.full{grid-column:1/-1}.field{min-width:0}.field input[type=file]{padding:9px;height:auto}.modal-close{flex-shrink:0}.confirm-description{line-height:1.8;color:#62728d;font-size:12px}.toast-stack{position:fixed;z-index:80;top:86px;right:22px;width:min(340px,calc(100vw - 30px));display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;background:#fff;box-shadow:0 11px 40px #1b33522a;border:1px solid #e7edf5;font-size:12px;color:#4b5d79;pointer-events:auto}.toast svg{color:#2678eb;width:18px;height:18px}.toast.error svg{color:#e15c69}.toast.success svg{color:#12a782}
@media(max-width:1240px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1.5fr 1fr}.sidebar{width:218px;flex-basis:218px}.main-content{padding:25px}.topbar{padding:0 25px}}@media(max-width:1020px){.dashboard-grid,.dashboard-bottom{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}.topbar-date{display:none}.message-layout{grid-template-columns:220px 1fr}}@media(max-width:760px){.sidebar{position:fixed;top:0;bottom:0;left:0;height:100dvh;width:255px;flex-basis:255px;transform:translateX(-102%);box-shadow:10px 0 35px #12294912}.sidebar.mobile-open{transform:translateX(0)}.app-shell.collapsed .sidebar{width:255px;flex-basis:255px}.app-shell.collapsed .sidebar-brand-text,.app-shell.collapsed .nav-group-label,.app-shell.collapsed .nav-link>span,.app-shell.collapsed .sidebar-status{display:flex}.app-shell.collapsed .sidebar-nav{padding:19px 12px}.app-shell.collapsed .nav-link{justify-content:flex-start;padding:0 14px}.mobile-only,.menu-toggle{display:inline-flex}.sidebar-brand{padding:0 18px}.sidebar-close{margin-left:auto}.sidebar-collapse{display:none}.mobile-shade:not([hidden]){display:block;position:fixed;inset:0;background:#10284955;z-index:19}.topbar{height:62px;flex-basis:62px;padding:0 15px}.topbar-left,.topbar-right{gap:7px}.topbar .breadcrumbs{gap:7px;font-size:11px}.topbar .breadcrumbs>span:first-child{display:none}.topbar .breadcrumb-divider{display:none}.user-ident,.chevron{display:none}.user-trigger{padding:0 0 0 7px}.user-avatar{width:33px;height:33px}.main-content{padding:19px 14px 32px}.page-heading{gap:12px;margin-bottom:17px}.page-heading h1{font-size:20px}.page-heading p{font-size:11px}.stat-grid{gap:10px}.stat-card{padding:15px;min-height:112px}.stat-head{margin-bottom:12px}.stat-value{font-size:24px}.dashboard-grid,.dashboard-bottom{gap:12px;margin-bottom:12px}.panel-header{padding:16px 15px 10px}.panel-body{padding:12px 15px 17px}.table-toolbar{padding:13px;align-items:stretch}.toolbar-left,.toolbar-right{flex:1;min-width:0}.toolbar-left{width:100%}.search-field{flex:1;min-width:130px}.select-field{max-width:160px}.table-footer{padding:11px 13px}.main-footer{padding:14px;font-size:10px}.message-layout{grid-template-columns:1fr}.message-list{max-height:210px}.conversation{max-height:420px}.chart-wrap{height:210px}.quick-grid{gap:7px}.quick-action{padding:9px;min-height:48px}.toast-stack{top:70px;right:15px}}@media(max-width:430px){.login-screen{padding:18px 15px 36px;align-items:center}.login-panel{border-radius:17px;padding:28px 23px 22px;box-shadow:0 14px 42px #326cba14}.login-brand{margin-bottom:24px}.login-panel h1{font-size:24px}.login-subtitle{margin-bottom:24px}.login-bottom{bottom:9px}.stat-card{padding:13px}.stat-title{font-size:10.5px}.stat-value{font-size:22px}.stat-icon{width:29px;height:29px;border-radius:8px}.stat-icon svg{width:15px;height:15px}.form-grid{grid-template-columns:1fr}.modal-layer{padding:11px}.modal-head,.modal-content,.modal-footer{padding-left:15px;padding-right:15px}.select-field{max-width:130px}.heading-actions>.btn{padding:8px 10px}.page-heading{flex-wrap:wrap}.page-heading .heading-actions{margin-left:auto}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* 表格交互及导入确认 */
.table-footer{flex-wrap:wrap;gap:10px}
.page-size-label,.page-jump{display:flex;align-items:center;gap:7px;font-size:12px;color:#7c8aa0;white-space:nowrap}
.page-size-label select,.page-jump input,.page-jump button{height:31px;border-radius:7px;border:1px solid #e4eaf4;background:#fff;color:#445575;padding:0 8px}
.page-size-label select{min-width:56px}.page-jump input{width:68px}.page-jump button{color:#2563eb;font-weight:600;padding:0 10px}
.page-jump input::-webkit-inner-spin-button{-webkit-appearance:none}.page-jump input{-moz-appearance:textfield}
.country-summary{max-height:170px;overflow:auto;border:1px solid #e8edf7;border-radius:10px;margin-top:7px}
.country-summary>div{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-bottom:1px solid #edf1f7;color:#61728e;font-size:12px}
.country-summary>div:last-child{border-bottom:0}.country-summary strong{color:#263d63}
@media(max-width:760px){.table-footer{justify-content:center}.table-footer>span{width:100%;text-align:center}.page-size-label,.page-jump{font-size:11px}}
@media(max-width:430px){.table-footer{gap:9px}.page-jump{width:100%;justify-content:center}.pagination{order:1}}

/* 页面和推送配置 */
.manager-tabs{display:flex;gap:5px;padding:5px;width:max-content;max-width:100%;background:#e9eff9;border-radius:10px;margin:0 0 17px}
.manager-tabs button{border:0;border-radius:7px;padding:10px 17px;background:transparent;color:#7485a0;font-size:12px;font-weight:700}
.manager-tabs button.selected{background:#fff;color:#2563eb;box-shadow:0 2px 9px #152e5b15}
.push-event-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.push-event{display:flex;gap:9px;align-items:center;color:#4a5c78;border:1px solid #e7edf6;border-radius:9px;padding:10px;font-size:12px}.push-event input{accent-color:#2563eb;width:16px;height:16px}
@media(max-width:430px){.push-event-grid{grid-template-columns:1fr}.manager-tabs{width:100%}.manager-tabs button{flex:1}}

.conversation-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.message-user-meta{display:block;color:#9ba9ba;font-weight:400;font-size:11px;margin-top:4px}.message-status-label{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:500;color:#8493a7}.message-status-label select{max-width:100px;padding:5px 9px;height:31px}

/* ===== UI收口覆盖：登录页与首页 ===== */
body{background:linear-gradient(180deg,#f5f8ff 0%,#f2f6fd 100%)}
.login-screen{padding:40px 24px 54px;align-items:center;justify-content:center}
.login-shell-wrap{position:relative;z-index:1;display:grid;grid-template-columns:minmax(320px,480px) minmax(420px,520px);gap:28px;align-items:stretch;width:min(100%,1080px)}
.login-showcase{display:flex;flex-direction:column;justify-content:space-between;padding:34px 30px;border-radius:28px;background:linear-gradient(180deg,rgba(255,255,255,.66),rgba(255,255,255,.42));border:1px solid rgba(226,235,249,.9);box-shadow:0 18px 60px rgba(43,91,173,.08);backdrop-filter:blur(8px)}
.login-brand-copy{display:flex;flex-direction:column;gap:2px}
.login-brand-copy small{font-size:12px;color:#8c9ab1;font-weight:600;letter-spacing:.08em}
.login-brand-showcase{margin-bottom:18px}
.showcase-copy h1{margin:0 0 14px;font-size:38px;line-height:1.2;color:#18345f;font-weight:800;letter-spacing:-.05em}
.showcase-copy p{margin:0;color:#6d7c95;font-size:15px;line-height:1.8;max-width:420px}
.showcase-cards{display:grid;gap:14px;margin-top:28px}
.showcase-card{padding:18px 18px 16px;border-radius:18px;background:rgba(255,255,255,.82);border:1px solid #e8eef8;box-shadow:0 10px 26px rgba(35,62,111,.05)}
.showcase-card strong{display:block;color:#23406b;font-size:15px;margin-bottom:6px}
.showcase-card span{display:block;color:#8290a7;font-size:13px;line-height:1.7}
.login-panel{width:100%;max-width:none;padding:34px 40px 28px;border-radius:28px;background:rgba(255,255,255,.98);box-shadow:0 22px 65px rgba(38,85,169,.12),0 3px 12px rgba(40,75,130,.04)}
.login-brand{margin-bottom:28px}.brand-logo-large{width:44px;height:44px}.brand-name{font-size:18px}
.login-panel h1{font-size:40px;margin-bottom:8px;color:#1a2f55}
.login-subtitle{font-size:15px;line-height:1.75;margin-bottom:30px;color:#8190a6}
.form-label{font-size:14px;margin-bottom:10px;color:#30435f}
.input-wrap{min-height:54px;padding:0 16px;border-radius:14px;background:#fdfefe;margin-bottom:22px}
.input-wrap input{height:52px;font-size:14px}
.input-wrap>span svg,.input-trailing svg{width:18px;height:18px}
.btn-login{min-height:54px;border-radius:14px;font-size:15px;margin-top:8px}
.login-divider{margin:24px 0 18px;font-size:12px}
.login-footer{margin-top:24px;padding-top:18px;font-size:12px}
.login-bottom{bottom:20px;color:#a1aec2}
.app-shell{background:#f3f6fc}
.sidebar{background:#fff;box-shadow:0 0 0 1px rgba(236,241,248,.9)}
.sidebar-brand{height:82px;padding:0 24px}
.sidebar-brand-text strong{font-size:17px}.sidebar-brand-text span{font-size:12px;letter-spacing:0}
.nav-group-label{padding-top:18px;padding-bottom:8px;font-size:11px}
.nav-link{height:42px;border-radius:12px;font-size:13px}
.nav-link.active{background:#eef4ff;color:#1f68de}
.topbar{height:74px;flex-basis:74px;padding:0 32px;background:rgba(255,255,255,.9);backdrop-filter:blur(10px)}
.topbar-date{font-size:12px}.refresh-button{height:40px;width:40px;border-radius:12px}
.user-avatar{width:38px;height:38px;border-radius:12px}.user-ident strong{font-size:14px}.user-ident small{font-size:11px}
.main-content{width:min(100%,1600px);padding:34px 32px 42px}.main-footer{padding:18px 32px;font-size:11px}
.page-heading{margin-bottom:26px}.page-heading h1{font-size:24px}.page-heading p{font-size:13px}
.stat-grid{gap:18px;margin-bottom:20px}.stat-card{min-height:134px;border-radius:18px;padding:22px 20px 18px}
.stat-title{font-size:12px}.stat-value{font-size:30px}.stat-foot{font-size:12px}
.dashboard-grid,.dashboard-bottom{gap:18px;margin-bottom:18px}
.panel{border-radius:18px;box-shadow:0 8px 28px rgba(35,62,111,.05)}
.panel-header{padding:20px 22px 12px}.panel-title{font-size:17px}.panel-subtitle{font-size:12px}
.panel-body{padding:14px 22px 22px}.chart-wrap{height:270px}
.quick-grid{gap:12px}.quick-action{min-height:58px;border-radius:14px;font-size:13px;padding:14px 16px}
.event-row{padding:12px 0}.event-copy strong{font-size:13px}.event-copy span,.event-time{font-size:11.5px}
.meter-label,.meter-value{font-size:12px}
@media(max-width:980px){
  .login-shell-wrap{grid-template-columns:1fr;max-width:560px}
  .login-showcase{display:none}
  .login-panel{padding:34px 34px 28px}
  .login-panel h1{font-size:34px}
}
@media(max-width:760px){
  .topbar{padding:0 16px;height:64px;flex-basis:64px}
  .main-content{padding:20px 14px 30px}
  .main-footer{padding:14px}
  .panel,.stat-card{border-radius:16px}
  .page-heading h1{font-size:22px}
}
@media(max-width:430px){
  .login-screen{padding:18px 16px 42px}
  .login-shell-wrap{max-width:100%}
  .login-panel{padding:28px 22px 24px;border-radius:20px}
  .login-panel h1{font-size:28px}
  .login-subtitle{font-size:14px;margin-bottom:24px}
  .login-brand{margin-bottom:22px}
  .brand-logo-large{width:42px;height:42px}
  .input-wrap{min-height:44px;border-radius:12px;padding:0 14px}
  .input-wrap input{height:42px;font-size:13px}
  .btn-login{min-height:46px;font-size:14px}
  .login-footer{font-size:11px}
  .login-bottom{bottom:10px}
}
