:root{--bg:#F9FAFB;--surface:#fff;--border:#E5E7EB;--text:#111827;--sec:#6B7280;--pri:#4F46E5;--pri-h:#4338CA;--ok:#16A34A;--warn:#D97706;--err:#DC2626;--sub:#F3F4F6}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:20px}
a{color:var(--pri);text-decoration:none}a:hover{text-decoration:underline}
button{font:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 14px;font-weight:500}
.btn:hover{border-color:#D1D5DB}.btn-pri{background:var(--pri);color:#fff;border-color:var(--pri)}.btn-pri:hover{background:var(--pri-h)}
.btn-danger{color:var(--err)}.btn-sm{padding:5px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}
input,select,textarea{font:inherit;width:100%;border:1px solid var(--border);border-radius:8px;padding:9px 12px;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #C7D2FE;border-color:var(--pri)}
label{display:block;font-weight:500;margin:14px 0 6px}label:first-child{margin-top:0}
.field-hint{font-size:12px;color:var(--sec);margin-top:4px}
#app{display:flex;min-height:100vh}
#sidebar{width:248px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);padding:20px 12px;position:sticky;top:0;height:100vh}
#logo{font-size:18px;font-weight:700;padding:0 12px 16px}
#logo span{color:var(--pri)}
.nav{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.nav a{display:block;padding:9px 12px;border-radius:8px;color:var(--text);font-weight:500}
.nav a:hover{background:var(--sub);text-decoration:none}
.nav a.active{background:#EEF2FF;color:var(--pri)}
#main{flex:1;min-width:0;padding:32px;max-width:1100px}
h1{font-size:26px;line-height:34px;margin:0 0 4px}h2{font-size:18px;margin:24px 0 12px}h3{font-size:15px;margin:0 0 8px}
.sub{color:var(--sec);margin:0 0 24px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.metric{font-size:30px;font-weight:700;margin:4px 0}.metric-label{color:var(--sec);font-size:13px}
table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--sec);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--border)}
td{padding:12px 8px;border-bottom:1px solid var(--border);vertical-align:top}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;background:var(--sub)}
.badge.draft{background:#F3F4F6}.badge.active{background:#DCFCE7;color:#166534}.badge.paused{background:#FEF3C7;color:#92400E}
.badge.scheduled{background:#DBEAFE;color:#1E40AF}.badge.completed{background:#EDE9FE;color:#5B21B6}.badge.cancelled,.badge.failed{background:#FEE2E2;color:#991B1B}
.badge.sent{background:#DCFCE7;color:#166534}.badge.pending{background:#F3F4F6}.badge.retry{background:#FEF3C7;color:#92400E}
.progress{height:8px;background:var(--sub);border-radius:999px;overflow:hidden}.progress>div{height:100%;background:var(--pri)}
.tabs{display:flex;gap:4px;margin-bottom:16px}.tabs button{border:0;background:transparent;padding:8px 12px;border-radius:8px;font-weight:500}
.tabs button.active{background:#EEF2FF;color:var(--pri)}
.steps{display:flex;gap:8px;margin-bottom:20px}.step{flex:1;text-align:center;padding:8px;border-bottom:2px solid var(--border);color:var(--sec);font-weight:500}
.step.on{border-color:var(--pri);color:var(--pri)}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal{background:#fff;border-radius:12px;padding:24px;max-width:560px;width:100%;max-height:90vh;overflow:auto}
.toast{position:fixed;bottom:20px;right:20px;background:#111827;color:#fff;padding:12px 18px;border-radius:8px;z-index:100;max-width:400px}
.toast.err{background:var(--err)}
.empty{color:var(--sec);text-align:center;padding:32px}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:180px}
.var-btn{font-size:12px;padding:3px 8px}
#login-wrap{max-width:420px;margin:120px auto;text-align:center}
#login-wrap .card{padding:32px}
.warn-box{background:#FFFBEB;border:1px solid #FDE68A;border-radius:8px;padding:12px 16px;margin-bottom:16px}
.err-box{background:#FEF2F2;border:1px solid #FECACA;border-radius:8px;padding:12px 16px;margin-bottom:16px;color:#991B1B}
@media(max-width:760px){#app{flex-direction:column}#sidebar{width:100%;height:auto;position:static;border-right:0;border-bottom:1px solid var(--border)}#sidebar .nav{flex-direction:row;flex-wrap:wrap}#main{padding:16px}}
