:root{--bg:#f4f7fb;--panel:#fff;--text:#172033;--muted:#6b7280;--line:#e5eaf2;--blue:#2878ff;--blue2:#1765e5;--green:#0a9f6d;--red:#d93d4f;--orange:#c87712;--shadow:0 8px 30px rgba(32,51,90,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}.topbar{height:64px;background:#111a33;color:#fff;display:flex;align-items:center;padding:0 28px;gap:34px;box-shadow:0 2px 12px rgba(0,0,0,.18);position:sticky;top:0;z-index:10}.brand{font-size:17px;font-weight:750;white-space:nowrap}.topbar nav{display:flex;height:100%;align-items:center;gap:5px;flex:1}.topbar nav a{color:#bfc9dd;text-decoration:none;padding:10px 14px;border-radius:8px}.topbar nav a:hover,.topbar nav a.active{background:#25355f;color:#fff}.topbar .user{color:#bfc9dd}.topbar .user a{color:#fff}.container{max-width:1500px;margin:0 auto;padding:24px 28px 50px}.page-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.page-title h1{font-size:25px;margin:0}.safety{font-weight:700;color:#925d0b;background:#fff3d6;border:1px solid #f0d398;padding:7px 12px;border-radius:9px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);padding:20px;margin-bottom:20px}.panel h2{font-size:17px;margin:0 0 15px}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.panel-head h2{margin:0}.panel-head>a,.panel-head span{color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:20px}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:19px;box-shadow:var(--shadow)}.stat b{display:block;font-size:28px}.stat span{color:var(--muted)}.stat.success b{color:var(--green)}.stat.danger b{color:var(--red)}.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;font-size:12px;color:#6e7788;background:#f7f9fc}th,td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);margin-top:3px}.preview-cell{white-space:normal;min-width:210px;max-width:380px}.error-cell{white-space:normal;color:var(--red);max-width:260px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 8px;border-radius:999px;background:#eef1f5;color:#576071}.status-success,.status-sent,.status-hit{color:#087653;background:#dff7ee}.status-failed,.status-miss{color:#ac2738;background:#ffe4e8}.status-pending,.status-draft{color:#8a5c10;background:#fff1d4}.status-sending{color:#145fc0;background:#dfedff}.status-retry{color:#a9500a;background:#ffeadb}.on{color:var(--green);font-weight:700}.off{color:var(--red);font-weight:700}.alert{padding:12px 14px;border-radius:9px;margin:0 0 16px;border:1px solid}.alert.success{background:#e5f8f0;border-color:#b6e7d4;color:#087552}.alert.error{background:#ffebee;border-color:#ffc9d0;color:#a72435}.alert.info{background:#e8f1ff;border-color:#c5dcff;color:#185cae}.warning{margin-top:15px;padding:11px 13px;border-radius:8px;background:#fff4d9;color:#7b500b}.muted{color:var(--muted)}.empty{padding:36px;text-align:center;color:var(--muted);background:#f9fafc;border-radius:9px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}label{display:block;color:#444d5d;margin:10px 0}input,select,textarea{display:block;width:100%;margin-top:6px;padding:9px 11px;border:1px solid #cfd7e4;border-radius:7px;background:#fff;color:#172033;font:inherit}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #cde0ff;border-color:var(--blue)}button{border:1px solid #cbd4e1;background:#fff;border-radius:7px;padding:9px 14px;font:inherit;font-weight:650;cursor:pointer;color:#293449}button:hover{border-color:#8ca3c4;background:#f8fbff}button.primary{border-color:var(--blue);background:var(--blue);color:#fff}button.primary:hover{background:var(--blue2)}button.full{width:100%;margin-top:8px}.inline-form{display:inline-block}.check{display:flex;align-items:center;gap:8px;padding:9px 0}.check input{width:auto;margin:0}.detail-grid{display:grid;grid-template-columns:120px 1fr;margin:0 0 18px}.detail-grid dt,.detail-grid dd{padding:8px 0;border-bottom:1px solid var(--line)}.detail-grid dt{color:var(--muted)}.detail-grid dd{margin:0}.version{border:1px solid var(--line);border-radius:10px;margin:13px 0;overflow:hidden}.version-meta{display:flex;gap:18px;align-items:center;padding:10px 13px;background:#f7f9fc}.version-meta span{color:var(--muted)}pre{white-space:pre-wrap;word-break:break-word;margin:0;padding:14px;background:#fbfcfe;font:13px/1.65 Consolas,"Microsoft YaHei",monospace;max-height:500px;overflow:auto}.error-text{padding:10px 13px;color:var(--red);background:#fff1f3}.filters{display:flex;gap:10px;align-items:center;margin-bottom:16px}.filters a{background:#fff;border:1px solid var(--line);border-radius:7px;padding:8px 12px}.filters form{margin-left:auto}details{min-width:90px}details pre{min-width:450px;max-width:700px}footer{text-align:center;color:#8992a3;padding:20px}.login-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top,#e7efff,#f7f9fc 50%)}.login-card{width:min(410px,calc(100% - 32px));background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 60px rgba(37,68,130,.15);padding:32px}.login-card h1{margin:0;font-size:25px}.login-card>p{color:var(--muted);margin:5px 0 22px}@media(max-width:1000px){.topbar{height:auto;flex-wrap:wrap;padding:14px}.topbar nav{order:3;overflow:auto}.container{padding:18px 14px}.stat-grid{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.form-grid.cols-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.stat-grid,.form-grid,.form-grid.cols-4{grid-template-columns:1fr}.version-meta{align-items:flex-start;flex-direction:column;gap:3px}}
