:root{--bg:#edf1f6;--panel:#f7f9fc;--card:#ffffff;--ink:#1e293b;--muted:#64748b;--line:#d7e0ea;--accent:#05102c;--accent-2:#0c1f4b;--accent-soft:#1d2b52;--success:#0f9f6e;--danger:#d4576b}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:SF Pro Display,Segoe UI,sans-serif}body{min-height:100vh}a{color:inherit}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top left,rgba(10,26,73,.28),transparent 24%),linear-gradient(135deg,#040b1e,#0b1740 54%,#13285c)}.login-card{width:min(100%,460px);border-radius:28px;padding:30px;background:rgba(255,255,255,.97);border:1px solid rgba(255,255,255,.2);box-shadow:0 30px 80px rgba(4,11,30,.35)}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px}.brand-logo{width:78px;height:auto;display:block}.login-brand p,.section-subtitle,.sidebar-subtitle{margin:4px 0 0;color:var(--muted);font-size:13px}.login-copy h1{margin:0 0 8px;font-size:34px;line-height:1.05}.login-copy p{margin:0 0 20px;color:var(--muted);line-height:1.5}.login-form{display:grid;gap:12px}.login-btn{margin-top:4px}.app-shell{display:grid;grid-template-columns:282px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#030b23,#030d2f);color:#eef4ff;padding:18px 12px;display:flex;flex-direction:column;gap:10px;border-right:1px solid rgba(255,255,255,.06)}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:6px 8px 18px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:8px}.sidebar-logo{width:52px;height:auto;display:block;object-fit:contain}.menu-btn{width:100%;text-align:left;border-radius:999px;border:1px solid transparent;background:transparent;color:#dbe6ff;padding:11px 14px;cursor:pointer;margin-bottom:4px;transition:background .18s ease,color .18s ease,border-color .18s ease;display:flex;align-items:center;gap:10px}.menu-btn:hover{background:rgba(255,255,255,.06)}.menu-btn.active{background:linear-gradient(90deg,rgba(255,255,255,.16),rgba(255,255,255,.08));color:#fff;border-color:rgba(255,255,255,.08)}.menu-btn:disabled{opacity:.45;cursor:not-allowed}.menu-icon{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;background:rgba(255,255,255,.08);color:#fff;font-size:10px;font-weight:800;letter-spacing:.08em;flex-shrink:0}.sidebar-user{border:1px solid rgba(255,255,255,.09);border-radius:18px;padding:12px;background:rgba(255,255,255,.05);margin-bottom:10px}.dashboard-shell{padding:12px 18px 18px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.topbar-search{flex:1 1}.topbar-input{height:46px;border-radius:999px;background:rgba(255,255,255,.75)}.topbar-actions,.topbar-user-pill{display:flex;align-items:center;gap:12px}.topbar-user-pill{min-width:196px;border-radius:999px;background:rgba(255,255,255,.72);border:1px solid var(--line);padding:10px 16px;justify-content:space-between}.topbar-user-name{font-weight:700}.topbar-user-role{font-size:12px;color:var(--muted)}.section-head{margin-bottom:16px}.grid{display:grid;gap:16px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{border:1px solid var(--line);border-radius:22px;background:var(--card);padding:18px;box-shadow:0 10px 24px rgba(15,23,42,.04)}.btn,.input,.textarea,select.input{border-radius:14px;border:1px solid var(--line);padding:11px 14px;font:inherit}.input,.textarea,select.input{width:100%;background:#fff;color:var(--ink)}.textarea{min-height:88px;resize:vertical}.btn{background:var(--accent-soft);color:#fff;border:1px solid transparent;cursor:pointer}.btn.secondary{background:#f8fafc;color:#334155;border-color:var(--line)}.btn.danger{color:#8a1c1c;background:#fff4f4;border:1px solid #f0c8c8}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.stat{min-height:120px;display:flex;flex-direction:column;justify-content:center;gap:4px}.stat .k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.stat .v{font-size:28px;font-weight:800}.status-card{min-height:170px;display:flex;flex-direction:column;gap:10px}.status-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.status-value{font-size:26px;font-weight:800;line-height:1.1}.status-note{margin:0;line-height:1.45}.metric-panel{display:flex;flex-direction:column;gap:12px;min-height:260px}.metric-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.delta{font-size:12px;font-weight:700}.delta.success{color:#0f7a54}.delta.danger{color:#b42323}.delta.neutral{color:var(--muted)}.alert-card.warning{border-color:#f1d39a;background:#fffaf0}.alert-card.danger{border-color:#f3b6c0;background:#fff4f6}.metric-row{display:flex;flex-direction:column;gap:7px}.metric-row-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.metric-label{color:#334155;font-size:14px;font-weight:600}.metric-bar-track{height:8px;border-radius:999px;background:#e8eef8;overflow:hidden}.metric-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#3459d1,#4f84ff)}.metric-timeline-card{min-height:320px}.timeline-chart{min-height:220px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;align-items:end}.timeline-bar-col{display:flex;flex-direction:column;align-items:center;gap:8px}.timeline-bar-stack{width:100%;min-height:160px;border-radius:18px 18px 10px 10px;background:linear-gradient(180deg,#f3f6fd,#eef3fb);padding:10px;display:flex;flex-direction:column;justify-content:end;gap:4px}.timeline-bar{width:100%;border-radius:12px;background:linear-gradient(180deg,#2947ab,#456df7)}.timeline-bar.error{background:linear-gradient(180deg,#ff7f91,#d4576b)}.timeline-bar-label,.timeline-bar-value{font-size:12px;color:var(--muted)}.timeline-bar-value{font-weight:700;color:var(--ink)}.compare-chart{display:grid;gap:14px}.compare-item{display:flex;flex-direction:column;gap:8px}.campaign-compare-text{display:flex;flex-direction:column;gap:2px;min-width:0}.campaign-compare-meta{font-size:12px}.compare-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.compare-track{height:12px}.compare-fill{background:linear-gradient(90deg,#1c2d6b,#355ad4)}.table-wrap{max-height:460px;overflow:auto;border:1px solid var(--line);border-radius:18px;background:#fff}.table{width:100%;border-collapse:collapse;font-size:13px}.table td,.table th{border-bottom:1px solid #e6ecf3;padding:14px 12px;text-align:left;vertical-align:top}.table thead th{position:sticky;top:0;background:#f8fafc;z-index:1;color:#475569;font-weight:700}.table-row-active{background:#f3f7ff}.badge{display:inline-block;padding:5px 10px;border-radius:999px;background:#eef3ff;color:#27407f;font-size:12px;font-weight:600}.badge.inverse{background:rgba(255,255,255,.12);color:#eef4ff}.badge.success{background:#e7f8f0;color:#0f7a54}.badge.warning{background:#fff7e4;color:#9a6700}.badge.danger{background:#fff0f2;color:#b42323}.badge-btn{border:1px solid #d8e3fb;background:#f7faff;color:#27407f;border-radius:999px;padding:8px 12px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}.muted{color:var(--muted)}.error{color:#b42323}.error,.ok{font-weight:600}.ok{color:#14532d}.category-editor,.push-composer,.user-editor{border:1px solid var(--line);border-radius:18px;padding:14px;background:#fbfdff}@media (max-width:1120px){.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline-chart{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}.dashboard-shell{padding:14px}.topbar{flex-direction:column;align-items:stretch}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.timeline-chart{grid-template-columns:repeat(2,minmax(0,1fr))}}