.eco-analytics-root,:root{--eco-analytics-primary:var(--qbit-brand-primary,#6366f1);--eco-analytics-success:var(--qbit-status-success,#10b981);--eco-analytics-warning:var(--qbit-status-warning,#f59e0b);--eco-analytics-error:var(--qbit-status-danger,#ef4444);--eco-analytics-bg:var(--qbit-white,#fff);--eco-analytics-bg-secondary:#f8fafc;--eco-analytics-border:var(--qbit-bg-card,#e2e8f0);--eco-analytics-text:var(--qbit-brand-primary,#1e293b);--eco-analytics-text-secondary:var(--qbit-brand-primary,#64748b);--eco-analytics-radius:12px;--eco-analytics-transition:all .2s ease}@media (prefers-color-scheme:dark){.eco-analytics-root,:root{--eco-analytics-bg:var(--qbit-bg-canvas,#1e1e2e);--eco-analytics-bg-secondary:#2a2a3e;--eco-analytics-border:var(--qbit-brand-primary,#3a3a4e);--eco-analytics-text:var(--qbit-bg-card,#f1f5f9);--eco-analytics-text-secondary:var(--qbit-brand-primary,#94a3b8)}}.eco-analytics-dashboard{flex-direction:column;gap:24px;display:flex}.eco-analytics-dashboard-header{justify-content:space-between;align-items:center;display:flex}.eco-analytics-dashboard-header h2{color:var(--eco-analytics-text);margin:0;font-size:24px}.eco-analytics-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.eco-analytics-card{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);border-radius:var(--eco-analytics-radius);transition:var(--eco-analytics-transition);align-items:flex-start;gap:12px;padding:20px;display:flex}.eco-analytics-card:hover{box-shadow:0 4px 12px rgba(var(--qbit-black-rgb,0,0,0),.08)}.eco-analytics-card-icon{font-size:24px}.eco-analytics-card-content{flex-direction:column;gap:4px;display:flex}.eco-analytics-card-title{color:var(--eco-analytics-text-secondary);font-size:13px}.eco-analytics-card-value{color:var(--eco-analytics-text);font-size:24px;font-weight:700}.eco-analytics-card-change{color:var(--eco-analytics-text-secondary);font-size:12px;font-weight:500}.eco-analytics-card-change.up{color:var(--eco-analytics-success)}.eco-analytics-card-change.down{color:var(--eco-analytics-error)}.eco-analytics-realtime{background:linear-gradient(135deg,var(--qbit-brand-primary,#6366f1),var(--qbit-brand-secondary,#8b5cf6));border-radius:var(--eco-analytics-radius);color:#fff;flex-direction:column;align-items:center;padding:24px;display:flex}.eco-analytics-realtime-header{align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.eco-analytics-realtime-dot{background:var(--qbit-status-danger,#ef4444);border-radius:50%;width:8px;height:8px;animation:2s infinite eco-analytics-pulse}.eco-analytics-realtime.connected .eco-analytics-realtime-dot{background:var(--eco-analytics-success)}@keyframes eco-analytics-pulse{0%,to{opacity:1}50%{opacity:.5}}.eco-analytics-realtime-value{margin:8px 0;font-size:48px;font-weight:700}.eco-analytics-realtime-label{opacity:.8;font-size:14px}.eco-analytics-chart{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);border-radius:var(--eco-analytics-radius);padding:20px}.eco-analytics-chart-bars{justify-content:space-between;align-items:flex-end;gap:4px;height:100%;display:flex}.eco-analytics-chart-bar-wrapper{flex-direction:column;flex:1;align-items:center;gap:8px;height:100%;display:flex}.eco-analytics-chart-bar{background:linear-gradient(180deg,var(--eco-analytics-primary),#a5b4fc);max-width:32px;transition:var(--eco-analytics-transition);border-radius:4px 4px 0 0;width:100%}.eco-analytics-chart-bar:hover{opacity:.8}.eco-analytics-chart-label{color:var(--eco-analytics-text-secondary);white-space:nowrap;font-size:10px}.eco-analytics-table{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);border-radius:var(--eco-analytics-radius);padding:20px}.eco-analytics-table-header{color:var(--eco-analytics-text-secondary);text-transform:uppercase;padding-bottom:12px;font-size:12px;font-weight:600}.eco-analytics-table-header,.eco-analytics-table-row{border-bottom:1px solid var(--eco-analytics-border);grid-template-columns:2fr 1fr 1fr;gap:16px;display:grid}.eco-analytics-table-row{align-items:center;padding:12px 0}.eco-analytics-table-row:last-child{border-bottom:none}.eco-analytics-table-name,.eco-analytics-table-value{color:var(--eco-analytics-text);font-size:14px}.eco-analytics-table-value{font-weight:600}.eco-analytics-table-bar-wrapper{align-items:center;gap:8px;display:flex}.eco-analytics-table-bar{background:var(--eco-analytics-primary);border-radius:3px;flex:1;max-width:80px;height:6px}.eco-analytics-table-percent{color:var(--eco-analytics-text-secondary);min-width:40px;font-size:12px}.eco-analytics-date-picker{position:relative}.eco-analytics-date-btn{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);color:var(--eco-analytics-text);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;display:flex}.eco-analytics-date-arrow{color:var(--eco-analytics-text-secondary);font-size:10px}.eco-analytics-date-dropdown{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);box-shadow:0 10px 30px rgba(var(--qbit-black-rgb,0,0,0),.1);z-index:100;border-radius:8px;min-width:150px;margin-top:4px;padding:8px;position:absolute;top:100%;right:0}.eco-analytics-date-option{color:var(--eco-analytics-text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;width:100%;padding:8px 12px;font-size:13px;display:block}.eco-analytics-date-option:hover{background:var(--eco-analytics-bg-secondary)}.eco-analytics-date-option.active{background:var(--eco-analytics-primary);color:#fff}.eco-analytics-activity{background:var(--eco-analytics-bg);border:1px solid var(--eco-analytics-border);border-radius:var(--eco-analytics-radius);padding:20px}.eco-analytics-activity h4{color:var(--eco-analytics-text);margin:0 0 16px;font-size:16px}.eco-analytics-activity-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.eco-analytics-activity-item{text-align:center}.eco-analytics-activity-value{color:var(--eco-analytics-primary);font-size:28px;font-weight:700;display:block}.eco-analytics-activity-label{color:var(--eco-analytics-text-secondary);font-size:12px}.eco-analytics-dashboard-charts{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;display:grid}.eco-analytics-dashboard-chart h4{color:var(--eco-analytics-text);margin:0 0 16px;font-size:16px}.eco-analytics-dashboard-tables{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;display:grid}.eco-analytics-loading{justify-content:center;align-items:center;min-height:200px;display:flex}.eco-analytics-spinner{border:3px solid var(--eco-analytics-border);border-top-color:var(--eco-analytics-primary);border-radius:50%;width:28px;height:28px;animation:1s linear infinite eco-analytics-spin}@keyframes eco-analytics-spin{to{transform:rotate(1turn)}}.eco-analytics-empty{color:var(--eco-analytics-text-secondary);justify-content:center;align-items:center;min-height:100px;display:flex}@media (max-width:768px){.eco-analytics-dashboard-header{flex-direction:column;align-items:flex-start;gap:16px}.eco-analytics-grid{grid-template-columns:repeat(2,1fr)}.eco-analytics-activity-grid{grid-template-columns:1fr;gap:12px}}@media (max-width:480px){.eco-analytics-grid{grid-template-columns:1fr}}:root{--analytics-primary:var(--qbit-brand-primary,#6366f1);--analytics-success:var(--qbit-status-success,#22c55e);--analytics-warning:var(--qbit-status-warning,#f59e0b);--analytics-danger:var(--qbit-status-danger,#ef4444);--analytics-info:var(--qbit-brand-primary,#3b82f6);--analytics-gray-50:var(--qbit-white,#f9fafb);--analytics-gray-100:var(--qbit-bg-card,#f3f4f6);--analytics-gray-200:var(--qbit-bg-card,#e5e7eb);--analytics-gray-300:var(--qbit-line-soft,#d1d5db);--analytics-gray-500:var(--qbit-text-secondary,#6b7280);--analytics-gray-700:var(--qbit-brand-primary,#374151);--analytics-gray-900:var(--qbit-bg-canvas,#111827);--analytics-radius:12px}.analytics-overview{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:24px;display:grid}.analytics-stat-card{border-radius:var(--analytics-radius);box-shadow:0 1px 3px rgba(var(--qbit-black-rgb,0,0,0),.1);background:#fff;padding:24px;position:relative;overflow:hidden}.analytics-stat-card:before{background:linear-gradient(90deg,var(--analytics-primary),var(--analytics-info));content:"";height:4px;position:absolute;top:0;left:0;right:0}.analytics-stat-icon{margin-bottom:12px;font-size:24px}.analytics-stat-value{color:var(--analytics-gray-900);font-size:32px;font-weight:700}.analytics-stat-label{color:var(--analytics-gray-500);margin-top:4px;font-size:14px}.analytics-stat-change{border-radius:16px;align-items:center;gap:4px;margin-top:8px;padding:4px 8px;font-size:13px;display:inline-flex}.analytics-stat-change.positive{background:var(--qbit-status-success,#dcfce7);color:var(--qbit-status-success,#166534)}.analytics-stat-change.negative{background:var(--qbit-status-danger,#fee2e2);color:var(--qbit-status-danger,#991b1b)}.analytics-realtime{background:linear-gradient(135deg,var(--qbit-brand-primary,#1e1b4b),var(--qbit-brand-primary,#312e81));border-radius:var(--analytics-radius);color:#fff;padding:24px}.analytics-realtime-value{font-size:56px;font-weight:800}.analytics-realtime-label{opacity:.9;font-size:16px}.analytics-realtime-dot{background:var(--qbit-status-success,#22c55e);border-radius:50%;width:8px;height:8px;margin-right:8px;animation:1.5s infinite analytics-pulse;display:inline-block}.analytics-card{border-radius:var(--analytics-radius);box-shadow:0 1px 3px rgba(var(--qbit-black-rgb,0,0,0),.1);background:#fff;overflow:hidden}.analytics-header{border-bottom:1px solid var(--analytics-gray-200);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.analytics-title{color:var(--analytics-gray-900);font-size:18px;font-weight:600}.analytics-table{border-collapse:collapse;width:100%}.analytics-table td,.analytics-table th{border-bottom:1px solid var(--analytics-gray-100);padding:14px 20px}.analytics-table th{color:var(--analytics-gray-500);letter-spacing:.5px}.analytics-table th,.analytics-table tr:hover td{background:var(--analytics-gray-50)}.analytics-chart{padding:24px}.analytics-chart-area{align-items:flex-end;gap:4px;height:280px;display:flex}.analytics-chart-bar{background:linear-gradient(to top,var(--analytics-primary),var(--analytics-info));border-radius:4px 4px 0 0;flex:1;min-height:4px;transition:height .3s;position:relative}.analytics-chart-bar:hover{opacity:.8}.analytics-chart-bar:hover:after{background:var(--analytics-gray-900);color:#fff;content:attr(data-value);white-space:nowrap;border-radius:4px;padding:4px 8px;font-size:12px;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.analytics-date-picker{background:var(--analytics-gray-100);border-radius:8px;padding:4px;display:inline-flex}.analytics-date-btn{color:var(--analytics-gray-500);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.analytics-date-btn.active{box-shadow:0 1px 2px rgba(var(--qbit-black-rgb,0,0,0),.1);color:var(--analytics-gray-900);background:#fff}.analytics-btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.analytics-btn-primary{background:var(--analytics-primary);color:#fff}.analytics-btn-primary:hover{background:var(--qbit-brand-primary,#4f46e5)}.analytics-btn-outline{border:1px solid var(--analytics-gray-300);color:var(--analytics-gray-700);background:0 0}.analytics-empty{color:var(--analytics-gray-500);text-align:center;padding:60px 20px}.analytics-empty-icon{opacity:.5;margin-bottom:16px;font-size:64px}.analytics-loading{justify-content:center;padding:40px;display:flex}.analytics-spinner{border:4px solid var(--analytics-gray-200);border-top-color:var(--analytics-primary);width:40px;height:40px}.analytics-overview{box-shadow:0 4px 24px rgba(var(--qbit-black-rgb,0,0,0),.08);background:#fff;border-radius:20px;padding:24px}.analytics-overview-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.analytics-overview-title{color:var(--qbit-bg-canvas,#111827);margin:0;font-size:20px;font-weight:700}.analytics-time-selector{gap:8px;display:flex}.analytics-time-btn{border:1px solid var(--qbit-bg-card,#e5e7eb);color:var(--qbit-text-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px;font-size:13px;transition:all .15s}.analytics-time-btn:hover{background:var(--qbit-white,#f9fafb)}.analytics-time-btn.active{background:var(--qbit-brand-primary,#6366f1);border-color:var(--qbit-brand-primary,#6366f1);color:#fff}.analytics-metrics-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.analytics-metric-card{background:var(--qbit-white,#f9fafb);border-radius:16px;align-items:center;gap:16px;padding:20px;transition:all .2s;display:flex}.analytics-metric-card:hover{background:var(--qbit-bg-card,#f3f4f6)}.analytics-metric-icon{font-size:32px}.analytics-metric-content{flex:1}.analytics-metric-value{color:var(--qbit-bg-canvas,#111827);font-size:24px;font-weight:700}.analytics-metric-label{color:var(--qbit-text-secondary,#6b7280);margin-top:4px;font-size:13px}.analytics-metric-change{border-radius:6px;padding:4px 8px;font-size:12px;font-weight:500}.analytics-metric-change.positive{background:var(--qbit-status-success,#dcfce7);color:var(--qbit-status-success,#16a34a)}.analytics-metric-change.negative{background:var(--qbit-status-danger,#fee2e2);color:var(--qbit-status-danger,#dc2626)}.analytics-realtime{box-shadow:0 2px 12px rgba(var(--qbit-black-rgb,0,0,0),.06);background:#fff;border-radius:16px;padding:20px}.analytics-realtime-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.analytics-realtime-title{color:var(--qbit-bg-canvas,#111827);align-items:center;gap:8px;margin:0;font-size:16px;font-weight:600;display:flex}.analytics-status-dot{background:var(--qbit-text-muted,#9ca3af);border-radius:50%;width:8px;height:8px}.analytics-status-dot.connected{background:var(--qbit-status-success,#22c55e);animation:2s infinite analytics-pulse}@keyframes analytics-pulse{0%,to{opacity:1}50%{opacity:.5}}.analytics-refresh-btn{background:var(--qbit-bg-card,#f3f4f6);cursor:pointer;border:none;border-radius:8px;padding:8px 16px;font-size:13px;transition:background .15s}.analytics-refresh-btn:hover{background:var(--qbit-bg-card,#e5e7eb)}.analytics-realtime-list{flex-direction:column;gap:8px;max-height:300px;display:flex;overflow-y:auto}.analytics-realtime-item{background:var(--qbit-white,#f9fafb);border-radius:8px;align-items:center;gap:12px;padding:12px;font-size:14px;display:flex}.analytics-realtime-time{color:var(--qbit-text-muted,#9ca3af);font-family:monospace}.analytics-realtime-event{color:var(--qbit-brand-primary,#374151);flex:1}.analytics-realtime-value{color:var(--qbit-bg-canvas,#111827);font-weight:500}.analytics-chart{box-shadow:0 2px 12px rgba(var(--qbit-black-rgb,0,0,0),.06);background:#fff;border-radius:16px;padding:20px}.analytics-chart-title{color:var(--qbit-bg-canvas,#111827);margin:0 0 16px;font-size:16px;font-weight:600}.analytics-bar-chart,.analytics-chart-container{align-items:flex-end;display:flex}.analytics-bar-chart{justify-content:space-around;gap:8px;width:100%;height:100%}.analytics-bar-wrapper{flex-direction:column;flex:1;align-items:center;height:100%;display:flex}.analytics-bar{border-radius:4px 4px 0 0;width:100%;max-width:40px;transition:height .3s}.analytics-bar-label{color:var(--qbit-text-secondary,#6b7280);margin-top:8px;font-size:12px}.analytics-table{box-shadow:0 2px 12px rgba(var(--qbit-black-rgb,0,0,0),.06);background:#fff;border-radius:16px;overflow:hidden}.analytics-table table{border-collapse:collapse;width:100%}.analytics-table td,.analytics-table th{text-align:left;padding:14px 16px}.analytics-table th{background:var(--qbit-white,#f9fafb);color:var(--qbit-text-secondary,#6b7280);text-transform:uppercase;font-size:13px;font-weight:600}.analytics-table td{border-top:1px solid var(--qbit-bg-card,#f3f4f6);color:var(--qbit-brand-primary,#374151);font-size:14px}.analytics-load-more,.analytics-table tr:hover td{background:var(--qbit-white,#f9fafb)}.analytics-load-more{color:var(--qbit-text-secondary,#6b7280);cursor:pointer;border:none;width:100%;padding:14px;font-size:14px;transition:background .15s}.analytics-load-more:hover{background:var(--qbit-bg-card,#f3f4f6)}.analytics-date-picker{flex-direction:column;gap:12px;display:flex}.analytics-date-presets{flex-wrap:wrap;gap:8px;display:flex}.analytics-preset-btn{background:var(--qbit-bg-card,#f3f4f6);color:var(--qbit-brand-primary,#374151);cursor:pointer;border:none;border-radius:8px;padding:8px 16px;font-size:13px;transition:all .15s}.analytics-preset-btn:hover{background:var(--qbit-bg-card,#e5e7eb)}.analytics-preset-btn.active{background:var(--qbit-brand-primary,#6366f1);color:#fff}.analytics-date-inputs{align-items:center;gap:12px;display:flex}.analytics-date-input{border:1px solid var(--qbit-bg-card,#e5e7eb);border-radius:8px;padding:10px 14px;font-size:14px}.analytics-date-input:focus{border-color:var(--qbit-brand-primary,#6366f1);outline:none}.analytics-date-separator,.analytics-empty,.analytics-loading{color:var(--qbit-text-secondary,#6b7280)}.analytics-empty,.analytics-loading{flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px;display:flex}.analytics-spinner{border:3px solid var(--qbit-bg-card,#e5e7eb);border-top-color:var(--qbit-brand-primary,#6366f1);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite analytics-spin}@keyframes analytics-spin{to{transform:rotate(1turn)}}
