@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";.sidebar[data-v-e62e5d34]{width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border-hover);z-index:100;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-brand[data-v-e62e5d34]{padding:24px var(--space-lg);border-bottom:1px solid var(--border-sidebar);justify-content:center;align-items:center;display:flex}.sidebar-logo-img[data-v-e62e5d34]{object-fit:contain;width:140px;height:auto}.sidebar-nav[data-v-e62e5d34]{padding:var(--space-lg) var(--space-md);flex:1}.sidebar-section-title[data-v-e62e5d34]{color:var(--text-sidebar-muted);text-transform:uppercase;letter-spacing:.08em;padding:var(--space-md) var(--space-sm) var(--space-sm);font-size:11px;font-weight:600}.sidebar-nav-item[data-v-e62e5d34]{border-radius:var(--radius-md);color:var(--text-sidebar-secondary);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:10px;margin-bottom:4px;padding:10px 12px;font-size:13px;font-weight:500;text-decoration:none;display:flex;position:relative}.sidebar-nav-icon[data-v-e62e5d34]{color:var(--text-sidebar-muted);transition:color var(--transition-fast);align-items:center;display:flex}.sidebar-nav-item[data-v-e62e5d34]:hover{background:var(--bg-sidebar-hover);color:var(--text-sidebar-primary)}.sidebar-nav-item:hover .sidebar-nav-icon[data-v-e62e5d34]{color:var(--text-sidebar-primary)}.sidebar-nav-item.active[data-v-e62e5d34]{background:var(--bg-sidebar-active);color:var(--text-sidebar-primary);font-weight:600}.sidebar-nav-item.active .sidebar-nav-icon[data-v-e62e5d34]{color:var(--border-sidebar-active)}.sidebar-nav-item.active[data-v-e62e5d34]:before{content:"";background:var(--border-sidebar-active);border-radius:0 4px 4px 0;width:4px;height:20px;position:absolute;top:50%;left:-12px;transform:translateY(-50%)}.sidebar-footer[data-v-e62e5d34]{padding:var(--space-md);border-top:1px solid var(--border-sidebar)}.sidebar-user[data-v-e62e5d34]{padding:var(--space-sm);align-items:center;gap:12px;display:flex}.sidebar-avatar[data-v-e62e5d34]{border-radius:var(--radius-full);background:var(--bg-sidebar-active);border:1px solid var(--border-sidebar);width:36px;height:36px;color:var(--text-sidebar-primary);letter-spacing:.02em;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.sidebar-user-name[data-v-e62e5d34]{color:var(--text-sidebar-heading);font-size:13px;font-weight:600}.sidebar-user-role[data-v-e62e5d34]{color:var(--text-sidebar-muted);font-size:11px}:root{--brand-primary:#0369a1;--brand-primary-hover:#075985;--brand-light:#e0f2fe;--brand-glow:#0369a114;--bg-primary:#f8fafc;--bg-secondary:#f1f5f9;--bg-card:#fff;--bg-card-hover:#f8fafc;--bg-surface:#f1f5f9;--bg-input:#fff;--bg-sidebar:#0f172a;--color-success:#059669;--color-success-light:#ecfdf5;--color-warning:#d97706;--color-warning-light:#fffbeb;--color-danger:#dc2626;--color-danger-light:#fef2f2;--color-info:#0284c7;--color-info-light:#f0f9ff;--text-heading:#0f172a;--text-primary:#334155;--text-secondary:#64748b;--text-muted:#94a3b8;--text-placeholder:#cbd5e1;--text-sidebar-heading:#fff;--text-sidebar-primary:#f1f5f9;--text-sidebar-secondary:#94a3b8;--text-sidebar-muted:#64748b;--border-sidebar:#1e293b;--bg-sidebar-hover:#1e293b;--bg-sidebar-active:#1e293b;--border-sidebar-active:#38bdf8;--border-default:#e2e8f0;--border-hover:#cbd5e1;--border-focus:var(--brand-primary);--border-strong:#cbd5e1;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #0f172a0d;--shadow-sm:0 1px 3px 0 #0f172a0d, 0 1px 2px -1px #0f172a0d;--shadow-md:0 4px 6px -1px #0f172a0d, 0 2px 4px -2px #0f172a0d;--shadow-lg:0 10px 15px -3px #0f172a0d, 0 4px 6px -4px #0f172a05;--font-sans:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", monospace;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--sidebar-width:250px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6}.app-layout{min-height:100vh;display:flex}.main-content{margin-left:var(--sidebar-width);background:var(--bg-primary);flex:1;min-height:100vh}.page-container{padding:var(--space-xl) var(--space-2xl);max-width:1400px;margin:0 auto}.page-fade-enter-active{animation:.22s fadeSlideIn}.page-fade-leave-active{animation:.12s reverse fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-header{margin-bottom:var(--space-xl);justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.page-title-group{align-items:center;gap:12px;display:flex}.page-icon{border-radius:var(--radius-md);background:var(--brand-light);width:36px;height:36px;color:var(--brand-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.page-icon svg{width:20px;height:20px}.page-title{color:var(--text-heading);letter-spacing:-.02em;font-size:22px;font-weight:700}.page-subtitle{color:var(--text-secondary);margin-top:2px;font-size:13px}.kpi-grid{gap:var(--space-md);margin-bottom:var(--space-xl);grid-template-columns:repeat(4,1fr);display:grid}.kpi-card{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);gap:var(--space-md);transition:all var(--transition-normal);box-shadow:var(--shadow-xs);align-items:flex-start;display:flex}.kpi-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-sm)}.kpi-icon{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.kpi-icon svg{width:20px;height:20px}.kpi-icon.blue{color:#2563eb;background:#eff6ff}.kpi-icon.green{color:#059669;background:#ecfdf5}.kpi-icon.red{color:#dc2626;background:#fef2f2}.kpi-icon.slate{color:#475569;background:#f1f5f9}.kpi-content{flex:1;min-width:0}.kpi-card-label{color:var(--text-secondary);margin-bottom:4px;font-size:12px;font-weight:500}.kpi-card-value{font-variant-numeric:tabular-nums;color:var(--text-heading);letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:1.2}.kpi-card-trend{border-radius:var(--radius-full);align-items:center;gap:3px;margin-top:6px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.kpi-card-trend.up,.kpi-card-trend.down-good{color:var(--color-success);background:var(--color-success-light)}.kpi-card-trend.down,.kpi-card-trend.up-bad{color:var(--color-danger);background:var(--color-danger-light)}.kpi-card-trend.neutral{color:var(--text-muted);background:var(--bg-surface)}.kpi-card-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.chart-grid{gap:var(--space-md);margin-bottom:var(--space-xl);grid-template-columns:1fr 1fr;display:grid}.chart-card{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-xs)}.chart-card-header{margin-bottom:var(--space-lg);justify-content:space-between;align-items:center;display:flex}.chart-card-title{color:var(--text-heading);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.chart-card-title svg{width:16px;height:16px;color:var(--text-muted)}.granularity-toggle{background:var(--bg-surface);border-radius:var(--radius-sm);border:1px solid var(--border-default);padding:2px;display:inline-flex}.granularity-btn{color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);font-size:12px;font-weight:500;font-family:var(--font-sans);background:0 0;border:none;border-radius:4px;padding:4px 14px}.granularity-btn:hover{color:var(--text-secondary)}.granularity-btn.active{background:var(--bg-card);color:var(--text-heading);box-shadow:var(--shadow-xs);font-weight:600}.table-container{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.table-toolbar{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-default);justify-content:space-between;align-items:center;display:flex}.table-result-count{color:var(--text-secondary);font-size:13px}.table-result-count strong{color:var(--text-heading);font-weight:600}.table-wrapper{overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{padding:10px var(--space-md);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;text-align:left;border-bottom:1px solid var(--border-strong);background:var(--bg-primary);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--transition-fast);font-size:11px;font-weight:600}thead th:hover{color:var(--text-secondary)}thead th.sorted{color:var(--brand-primary)}tbody tr{border-bottom:1px solid var(--border-default);transition:background var(--transition-fast)}tbody tr:hover{background:var(--bg-primary)}tbody tr:last-child{border-bottom:none}tbody td{padding:14px var(--space-md);white-space:nowrap;color:var(--text-primary);font-size:13px}td.mono{font-family:var(--font-mono);letter-spacing:-.01em;font-size:12px}.status-badge{white-space:nowrap;align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.status-dot{border-radius:var(--radius-full);flex-shrink:0;width:6px;height:6px}.status-badge.delivered .status-dot{background:var(--color-success)}.status-badge.delivered{color:var(--color-success)}.status-badge.failed .status-dot,.status-badge.rejected .status-dot{background:var(--color-danger)}.status-badge.failed,.status-badge.rejected{color:var(--color-danger)}.status-badge.sending .status-dot,.status-badge.scheduled .status-dot{background:var(--color-info)}.status-badge.sending,.status-badge.scheduled{color:var(--color-info)}.status-badge.pending .status-dot{background:var(--text-muted)}.status-badge.pending{color:var(--text-muted)}.status-badge.blocked .status-dot{background:var(--text-muted)}.status-badge.blocked{color:var(--text-muted)}.campaign-badge{border-radius:var(--radius-full);align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:500;display:inline-flex}.campaign-badge.completed{color:var(--color-success);background:var(--color-success-light)}.campaign-badge.active{color:var(--color-info);background:var(--color-info-light)}.type-badge{border-radius:var(--radius-full);background:var(--bg-surface);color:var(--text-secondary);padding:2px 10px;font-size:12px;font-weight:500;display:inline-flex}.type-badge.batch{background:var(--color-info-light);color:var(--color-info)}.type-badge.single{background:var(--color-warning-light);color:var(--color-warning)}.pagination{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-default);justify-content:space-between;align-items:center;display:flex}.pagination-info{color:var(--text-secondary);font-size:13px}.pagination-buttons{gap:4px;display:flex}.pagination-btn{border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-card);min-width:32px;height:32px;color:var(--text-secondary);font-size:13px;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;padding:0 8px;display:flex}.pagination-btn:hover:not(:disabled){border-color:var(--brand-primary);color:var(--brand-primary)}.pagination-btn.active{background:var(--brand-primary);border-color:var(--brand-primary);color:#fff}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.filter-bar{margin-bottom:var(--space-lg);padding:var(--space-md) var(--space-lg);background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);flex-direction:column;gap:16px;display:flex}.filter-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.filter-select,.filter-input{background:var(--bg-primary);border:1px solid var(--border-hover);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;font-family:var(--font-sans);transition:all var(--transition-fast);outline:none;min-width:140px;padding:8px 12px}.filter-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-color:var(--bg-primary);padding-right:28px}.filter-select:focus,.filter-input:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-glow)}.filter-input{min-width:200px}.filter-input::placeholder{color:var(--text-placeholder)}.filter-date-group{flex-direction:column;gap:2px;display:flex}.filter-date-label{color:var(--text-muted);font-size:11px;font-weight:500}.filter-date{cursor:pointer;min-width:150px!important}.filter-date-separator{color:var(--text-muted);align-items:flex-end;padding-bottom:8px;font-size:14px;display:flex}.btn{border-radius:var(--radius-sm);font-size:13px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:none;align-items:center;gap:6px;padding:8px 16px;display:inline-flex}.btn svg{width:14px;height:14px}.btn-primary{background:var(--brand-primary);color:#fff}.btn-primary:hover{background:var(--brand-primary-hover);box-shadow:0 1px 3px #4f46e54d}.btn-secondary{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-hover)}.btn-secondary:hover{border-color:var(--border-strong);color:var(--text-primary);background:var(--bg-primary)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{background:var(--bg-surface);color:var(--text-primary)}.date-picker-wrapper{position:relative}.date-picker-trigger{background:var(--bg-card);border:1px solid var(--border-hover);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.date-picker-trigger:hover{border-color:var(--border-strong)}.date-picker-trigger svg{width:14px;height:14px;color:var(--text-muted)}.date-picker-dropdown{background:var(--bg-card);border:1px solid var(--border-hover);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:200;padding:var(--space-xs);min-width:180px;position:absolute;top:calc(100% + 4px);right:0}.date-picker-option{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);padding:8px 12px;font-size:13px}.date-picker-option:hover{background:var(--bg-surface);color:var(--text-primary)}.date-picker-option.active{background:var(--brand-light);color:var(--brand-primary);font-weight:600}.detail-grid{gap:var(--space-md);margin-bottom:var(--space-lg);grid-template-columns:1fr 1fr;display:grid}.detail-card{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-xs)}.detail-card-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-md);align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.detail-card-title svg{width:14px;height:14px}.detail-row{border-bottom:1px solid var(--border-default);justify-content:space-between;padding:10px 0;display:flex}.detail-row:last-child{border-bottom:none}.detail-label{color:var(--text-secondary);font-size:13px}.detail-value{color:var(--text-heading);font-size:13px;font-weight:500}.timeline{padding-left:32px;position:relative}.timeline:before{content:"";background:var(--border-hover);width:2px;position:absolute;top:12px;bottom:12px;left:9px}.timeline-item{align-items:center;gap:12px;padding:10px 0;display:flex;position:relative}.timeline-dot{border-radius:var(--radius-full);border:2.5px solid var(--brand-primary);background:var(--bg-card);z-index:1;width:14px;height:14px;position:absolute;left:-28px}.timeline-item.last .timeline-dot{border-color:var(--color-success);background:var(--color-success)}.timeline-item.error .timeline-dot{border-color:var(--color-danger);background:var(--color-danger)}.timeline-time{font-family:var(--font-mono);color:var(--text-muted);width:72px;font-size:12px}.timeline-label{color:var(--text-primary);font-size:13px}.message-body{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg);box-shadow:var(--shadow-xs)}.message-body-text{padding:var(--space-md);background:var(--bg-primary);border-radius:var(--radius-md);border-left:3px solid var(--brand-primary);font-size:14px;line-height:1.8}.message-meta{gap:var(--space-lg);margin-top:var(--space-md);color:var(--text-muted);font-size:12px;display:flex}.tabs{border-bottom:1px solid var(--border-hover);margin-bottom:var(--space-xl);gap:0;display:flex;overflow-x:auto}.tab-btn{color:var(--text-muted);font-size:13px;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 20px}.tab-btn:hover{color:var(--text-secondary)}.tab-btn.active{color:var(--brand-primary);border-bottom-color:var(--brand-primary);font-weight:600}.tab-btn svg{vertical-align:-2px;width:14px;height:14px;margin-right:6px}.heatmap-grid{margin-top:var(--space-md);grid-template-columns:60px repeat(12,1fr);gap:3px;display:grid}.heatmap-header{color:var(--text-muted);text-align:center;padding:4px;font-size:11px}.heatmap-row-label{color:var(--text-secondary);align-items:center;padding-right:8px;font-size:12px;display:flex}.heatmap-cell{aspect-ratio:1.6;cursor:default;transition:transform var(--transition-fast);border-radius:4px;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex}.heatmap-cell:hover{z-index:1;transform:scale(1.1)}.heatmap-cell.level-0{color:var(--text-placeholder);background:#f8fafc}.heatmap-cell.level-1{color:#991b1b;background:#fecaca}.heatmap-cell.level-2{color:#92400e;background:#fde68a}.heatmap-cell.level-3{color:#166534;background:#bbf7d0}.heatmap-cell.level-4{color:#14532d;background:#86efac}.heatmap-legend{align-items:center;gap:var(--space-lg);margin-top:var(--space-md);color:var(--text-muted);font-size:12px;display:flex}.heatmap-legend-item{align-items:center;gap:6px;display:flex}.heatmap-legend-swatch{border:1px solid var(--border-default);border-radius:3px;width:16px;height:16px}.error-bar-wrapper{background:var(--bg-surface);border-radius:var(--radius-full);width:80px;height:6px;overflow:hidden}.error-bar{background:var(--color-danger);border-radius:var(--radius-full);height:100%;transition:width .6s}.back-link{color:var(--text-secondary);cursor:pointer;margin-bottom:var(--space-md);transition:color var(--transition-fast);align-items:center;gap:6px;padding:6px 0;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--brand-primary)}.back-link svg{width:14px;height:14px}.link-primary{color:var(--brand-primary);cursor:pointer;transition:color var(--transition-fast)}.link-primary:hover{color:var(--brand-primary-hover)}.skeleton{background:linear-gradient(90deg, var(--bg-surface) 25%, #e2e8f0 50%, var(--bg-surface) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.text-success{color:var(--color-success)!important}.text-danger{color:var(--color-danger)!important}.text-warning{color:var(--color-warning)!important}.text-muted{color:var(--text-muted)!important}.fw-600{font-weight:600}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#cbd5e1}@media (width<=1200px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.sidebar{display:none}.main-content{margin-left:0}.kpi-grid,.chart-grid,.detail-grid{grid-template-columns:1fr}.page-container{padding:var(--space-md)}}
