: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}.mobile-menu-toggle{display:none;margin-left:auto;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.08);color:#fff;padding:9px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer}.sidebar-footer,.sidebar-menu{display:contents}.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:18px 22px 22px}.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:18px}.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:20px;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}.dashboard-kpis,.dashboard-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.compact-stat{min-height:102px;padding:16px 18px}.meta-stat{min-height:100px;padding:16px 18px}.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:160px;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}.dashboard-detail-card{min-height:340px}.dashboard-empty-state{display:flex;min-height:180px;flex-direction:column;justify-content:center;gap:6px}.error-empty-state{align-items:flex-start;border:1px dashed #d8e3fb;border-radius:18px;background:linear-gradient(180deg,#fbfdff,#f6f9ff);padding:22px}.empty-emoji{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;background:#eef3ff;color:#2844a0;font-size:20px;font-weight:800}.error-list{display:flex;flex-direction:column;gap:12px}.error-item{border:1px solid #e6ecf3;border-radius:16px;background:#fbfdff;padding:14px 16px}.error-select{width:100%;text-align:left;cursor:pointer;font:inherit}.error-select.active{border-color:#c8d9ff;background:#f4f8ff;box-shadow:inset 0 0 0 1px rgba(53,90,212,.08)}.error-item-main{display:flex;min-width:0;flex-direction:column;gap:8px}.error-item-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.error-path{display:inline-block;max-width:100%;border-radius:10px;background:#f2f6fc;color:#1e293b;padding:4px 8px;font-size:12px;line-height:1.45;white-space:normal;word-break:break-word}.error-meta{display:flex;flex-wrap:wrap;gap:8px}.error-meta span{border-radius:999px;background:#f8fafc;color:#64748b;padding:5px 9px;font-size:12px;font-weight:600}.error-center-grid{align-items:start}.error-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 18px}.error-filter{gap:6px}.error-detail,.error-filter{display:flex;flex-direction:column}.error-detail{gap:16px}.error-detail-block{display:flex;flex-direction:column;gap:6px}.error-detail-block p{margin:0;color:#334155;line-height:1.55}.error-detail-inline{display:flex;flex-wrap:wrap;gap:8px}.error-stack{margin:0;overflow:auto;border-radius:14px;background:#0f172a;color:#dbeafe;padding:14px;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.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){.dashboard-kpis,.dashboard-meta-grid,.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.error-filters{grid-template-columns:1fr}.timeline-chart{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:20;border-right:0;border-bottom:1px solid rgba(255,255,255,.08);flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px}.dashboard-shell{padding:14px}.sidebar-brand{width:100%;margin-bottom:0;padding:4px 4px 12px;justify-content:space-between}.mobile-menu-toggle{display:inline-flex;align-items:center;justify-content:center}.sidebar-footer,.sidebar-menu{width:100%;display:none}.sidebar-footer.open,.sidebar-menu.open{display:block}.sidebar-user{margin-bottom:0}.menu-btn{width:100%;margin-bottom:6px;padding:10px 12px}.sidebar-footer{margin-top:6px}.topbar{flex-direction:column;align-items:stretch}.dashboard-kpis,.dashboard-meta-grid,.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.timeline-chart{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.dashboard-shell{padding:12px}.card{border-radius:18px;padding:16px}.dashboard-kpis,.dashboard-meta-grid,.grid,.topbar{gap:12px}.topbar{margin-bottom:14px}.topbar-user-pill{min-width:0;width:100%;padding:10px 14px}.section-head>.row{flex-direction:column;align-items:stretch}.section-head>.row>.row.wrap{width:100%}.section-head>.row>.row.wrap .btn{flex:1 1 100%}.dashboard-detail-card,.metric-panel,.status-card{min-height:auto}.status-value{font-size:22px}.stat .v{font-size:24px}.menu-icon{width:24px;height:24px;font-size:9px}.sidebar-logo{width:42px}}