* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif; background: #0f172a; min-height: 100vh; padding: 20px; color: #f1f5f9; } .container { max-width: 1600px; margin: 0 auto; } header { background: #1e293b; padding: 24px 32px; border-radius: 12px; border: 1px solid #334155; margin-bottom: 24px; display: flex; justify-content: space-between; align-items: center; } h1 { font-size: 1.875rem; font-weight: 600; color: #f1f5f9; } .update-info { display: flex; align-items: center; gap: 12px; } #last-update { color: #94a3b8; font-size: 0.875rem; } .dashboard { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 600px), 1fr)); gap: 16px; } .card { background: #1e293b; padding: 24px; border-radius: 12px; border: 1px solid #334155; } .card.full-width { grid-column: 1 / -1; } h2 { color: #f1f5f9; margin-bottom: 20px; font-size: 1.125rem; font-weight: 600; border-bottom: 1px solid #334155; padding-bottom: 12px; } .card-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; } .card-header h2 { margin-bottom: 0; padding-bottom: 0; border-bottom: none; flex: 1; min-width: 200px; } .stats-controls { display: flex; align-items: center; gap: 12px; } .stats-duration { color: #94a3b8; font-size: 0.875rem; } .reset-btn { background: #f1f5f9; color: #0f172a; border: none; padding: 8px 16px; border-radius: 6px; cursor: pointer; font-size: 0.875rem; font-weight: 500; transition: all 0.15s; } .reset-btn:hover:not(:disabled) { background: #cbd5e1; } .reset-btn:disabled { cursor: not-allowed; opacity: 0.5; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 12px; } .stat-item { background: #0f172a; padding: 16px; border-radius: 8px; border: 1px solid #334155; display: flex; flex-direction: column; gap: 8px; transition: border-color 0.15s; } .stat-item:hover { border-color: #475569; } .stat-item.highlight { background: #1e293b; border-color: #3b82f6; } .stat-item.success { background: #1e293b; border-color: #22c55e; } .stat-item.info { background: #1e293b; border-color: #06b6d4; } .stat-item.warning { background: #1e293b; border-color: #f59e0b; } .stat-label { font-size: 0.875rem; color: #94a3b8; } .stat-value { font-size: 1.5rem; font-weight: 600; color: #f1f5f9; } .table-container { overflow-x: auto; } table { width: 100%; border-collapse: collapse; margin-top: 8px; } thead { background: #0f172a; border-bottom: 1px solid #334155; } th { padding: 12px 16px; text-align: left; font-weight: 500; font-size: 0.875rem; color: #94a3b8; } tbody tr { border-bottom: 1px solid #334155; transition: background 0.15s; } tbody tr:hover { background: #0f172a; } td { padding: 12px 16px; font-size: 0.875rem; } .no-data { text-align: center; color: #64748b; padding: 24px; } .error-high { color: #ef4444; font-weight: 500; } .rank-cell { font-weight: 600; text-align: center; width: 60px; } #top-clients-table th:nth-child(1), #top-clients-table td:nth-child(1), #top-domains-table th:nth-child(1), #top-domains-table td:nth-child(1) { width: 60px; } .rank-1 { background: rgba(234, 179, 8, 0.1); } .rank-1 .rank-cell { color: #eab308; } .rank-2 { background: rgba(148, 163, 184, 0.1); } .rank-2 .rank-cell { color: #94a3b8; } .rank-3 { background: rgba(251, 146, 60, 0.1); } .rank-3 .rank-cell { color: #fb923c; } .domain-cell { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } footer { text-align: center; color: #94a3b8; margin-top: 24px; padding: 20px; font-size: 0.875rem; } .footer-content { display: flex; justify-content: center; align-items: center; gap: 16px; flex-wrap: wrap; } .version-info { display: flex; align-items: center; gap: 8px; background: #1e293b; padding: 6px 12px; border-radius: 6px; border: 1px solid #334155; } #version-display { font-weight: 500; } .update-btn { background: transparent; color: #94a3b8; border: 1px solid #334155; width: 28px; height: 28px; border-radius: 6px; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: all 0.15s; } .update-btn:hover:not(:disabled) { background: #334155; color: #f1f5f9; } .update-btn:disabled { cursor: not-allowed; opacity: 0.5; } @media (max-width: 768px) { body { padding: 12px; } header { flex-direction: column; gap: 12px; padding: 16px; } h1 { font-size: 1.5rem; } .card { padding: 16px; } .stats-grid { grid-template-columns: 1fr; } table { font-size: 0.8rem; min-width: 500px; } th, td { padding: 8px; } #upstream-table th:nth-child(5), #upstream-table td:nth-child(5) { display: none; } }