| /* ───────────────────────────────────────────── | |
| Design Tokens & Reset | |
| ───────────────────────────────────────────── */ | |
| :root { | |
| --bg-primary: #0d0f14; | |
| --bg-secondary: #13161e; | |
| --bg-card: #181c27; | |
| --bg-card-hover: #1e2334; | |
| --bg-input: #0f1219; | |
| --border: #2a2f3d; | |
| --border-light: #323848; | |
| --text-primary: #e8eaf0; | |
| --text-secondary: #8b91a8; | |
| --text-muted: #4f5568; | |
| --accent: #6366f1; | |
| --accent-hover: #4f51d4; | |
| --accent-glow: rgba(99, 102, 241, 0.25); | |
| --green: #22c55e; | |
| --green-bg: rgba(34, 197, 94, 0.12); | |
| --yellow: #eab308; | |
| --yellow-bg: rgba(234, 179, 8, 0.12); | |
| --red: #ef4444; | |
| --red-bg: rgba(239, 68, 68, 0.12); | |
| --blue: #38bdf8; | |
| --blue-bg: rgba(56, 189, 248, 0.12); | |
| --sidebar-w: 240px; | |
| --radius: 12px; | |
| --radius-sm: 8px; | |
| --transition: 0.2s ease; | |
| } | |
| *, | |
| *::before, | |
| *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| html { | |
| height: 100vh; | |
| overflow: hidden; | |
| } | |
| body { | |
| font-family: 'Inter', system-ui, sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| display: flex; | |
| height: 100vh; | |
| /* strict cap — never grow past viewport */ | |
| overflow: hidden; | |
| font-size: 14px; | |
| line-height: 1.6; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Sidebar | |
| ───────────────────────────────────────────── */ | |
| .sidebar { | |
| width: var(--sidebar-w); | |
| min-height: 100vh; | |
| background: var(--bg-secondary); | |
| border-right: 1px solid var(--border); | |
| display: flex; | |
| flex-direction: column; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| z-index: 100; | |
| transition: width var(--transition); | |
| overflow: hidden; | |
| } | |
| /* ── Collapsed sidebar ── */ | |
| body.sidebar-collapsed .sidebar { | |
| width: 0; | |
| border-right: none; | |
| } | |
| body.sidebar-collapsed .logo-text { | |
| display: none; | |
| } | |
| body.sidebar-collapsed .sidebar-footer { | |
| display: none; | |
| } | |
| body.sidebar-collapsed .nav-item span:not(.nav-icon) { | |
| display: none; | |
| } | |
| body.sidebar-collapsed .nav-item { | |
| padding: 10px; | |
| justify-content: center; | |
| } | |
| body.sidebar-collapsed .sidebar-logo { | |
| padding: 14px; | |
| justify-content: center; | |
| } | |
| body.sidebar-collapsed .main-content { | |
| margin-left: 0; | |
| } | |
| /* Toggle button in sidebar header */ | |
| .sidebar-toggle { | |
| background: none; | |
| border: none; | |
| color: var(--text-muted); | |
| font-size: 16px; | |
| cursor: pointer; | |
| padding: 4px 6px; | |
| border-radius: var(--radius-sm); | |
| line-height: 1; | |
| margin-left: auto; | |
| transition: color var(--transition), background var(--transition); | |
| } | |
| .sidebar-toggle:hover { | |
| color: var(--text-primary); | |
| background: var(--bg-card); | |
| } | |
| body.sidebar-collapsed .sidebar-toggle { | |
| margin-left: 0; | |
| } | |
| .sidebar-logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 24px 20px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .logo-icon { | |
| font-size: 22px; | |
| } | |
| .logo-text { | |
| font-weight: 700; | |
| font-size: 15px; | |
| background: linear-gradient(135deg, #6366f1, #a855f7); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| } | |
| .sidebar-nav { | |
| flex: 1; | |
| padding: 16px 12px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 10px 12px; | |
| border-radius: var(--radius-sm); | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| font-weight: 500; | |
| transition: all var(--transition); | |
| cursor: pointer; | |
| } | |
| .nav-item:hover { | |
| background: var(--bg-card); | |
| color: var(--text-primary); | |
| } | |
| .nav-item.active { | |
| background: var(--accent-glow); | |
| color: var(--accent); | |
| border: 1px solid rgba(99, 102, 241, 0.3); | |
| } | |
| .nav-icon { | |
| font-size: 16px; | |
| } | |
| .sidebar-footer { | |
| padding: 16px 20px; | |
| border-top: 1px solid var(--border); | |
| color: var(--text-muted); | |
| font-size: 11px; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Main Content | |
| ───────────────────────────────────────────── */ | |
| .main-content { | |
| margin-left: var(--sidebar-w); | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| height: 100vh; | |
| overflow: hidden; | |
| transition: margin-left var(--transition); | |
| } | |
| .topbar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 20px 32px; | |
| border-bottom: 1px solid var(--border); | |
| background: rgba(13, 15, 20, 0.8); | |
| backdrop-filter: blur(10px); | |
| position: sticky; | |
| top: 0; | |
| z-index: 50; | |
| } | |
| .topbar-title { | |
| font-size: 20px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| } | |
| .page { | |
| display: none; | |
| padding: 28px 32px; | |
| flex-direction: column; | |
| gap: 24px; | |
| overflow-y: auto; | |
| /* dashboard & strategies pages scroll internally */ | |
| } | |
| .page.active { | |
| display: flex; | |
| } | |
| /* Strategy Detail: scrollable like other pages */ | |
| #page-detail { | |
| overflow-y: auto; | |
| padding: 20px 32px; | |
| gap: 20px; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Cards | |
| ───────────────────────────────────────────── */ | |
| .card { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| overflow: hidden; | |
| transition: border-color var(--transition); | |
| } | |
| .card:hover { | |
| border-color: var(--border-light); | |
| } | |
| .card-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 16px 20px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .card-title { | |
| font-weight: 600; | |
| font-size: 14px; | |
| color: var(--text-primary); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Stats Grid | |
| ───────────────────────────────────────────── */ | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 16px; | |
| } | |
| .stat-card { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| padding: 20px 24px; | |
| transition: all var(--transition); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .stat-card::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: linear-gradient(135deg, var(--accent-glow), transparent 70%); | |
| opacity: 0; | |
| transition: opacity var(--transition); | |
| } | |
| .stat-card:hover::before { | |
| opacity: 1; | |
| } | |
| .stat-card:hover { | |
| border-color: var(--accent); | |
| transform: translateY(-2px); | |
| } | |
| .stat-label { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| margin-bottom: 8px; | |
| } | |
| .stat-value { | |
| font-size: 32px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| } | |
| .stat-value.green { | |
| color: var(--green); | |
| } | |
| .stat-value.yellow { | |
| color: var(--yellow); | |
| } | |
| .stat-value.blue { | |
| color: var(--blue); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Charts | |
| ───────────────────────────────────────────── */ | |
| .charts-row { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 20px; | |
| } | |
| .chart-card {} | |
| .chart-wrapper { | |
| padding: 12px 16px 16px; | |
| height: 260px; | |
| position: relative; | |
| } | |
| /* Smaller charts on detail page */ | |
| #page-detail .chart-wrapper { | |
| height: 170px; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Tables | |
| ───────────────────────────────────────────── */ | |
| .table-wrapper { | |
| overflow-x: auto; | |
| } | |
| .data-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 13px; | |
| white-space: nowrap; | |
| } | |
| .data-table th { | |
| padding: 10px 14px; | |
| text-align: left; | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| border-bottom: 1px solid var(--border); | |
| background: var(--bg-secondary); | |
| } | |
| .data-table td { | |
| padding: 12px 14px; | |
| border-bottom: 1px solid var(--border); | |
| color: var(--text-primary); | |
| } | |
| .data-table tr:last-child td { | |
| border-bottom: none; | |
| } | |
| .data-table tbody tr { | |
| transition: background var(--transition); | |
| } | |
| .data-table tbody tr:hover { | |
| background: var(--bg-card-hover); | |
| } | |
| .rank-num { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| background: var(--bg-secondary); | |
| font-weight: 600; | |
| font-size: 12px; | |
| } | |
| .rank-num.gold { | |
| background: rgba(234, 179, 8, 0.2); | |
| color: var(--yellow); | |
| } | |
| .rank-num.silver { | |
| background: rgba(148, 163, 184, 0.2); | |
| color: #94a3b8; | |
| } | |
| .rank-num.bronze { | |
| background: rgba(180, 83, 9, 0.2); | |
| color: #fb923c; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Strategy Cards | |
| ───────────────────────────────────────────── */ | |
| .strategies-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); | |
| gap: 20px; | |
| } | |
| .strategy-card { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| padding: 20px; | |
| cursor: pointer; | |
| transition: all var(--transition); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .strategy-card::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, #6366f1, #a855f7); | |
| transform: scaleX(0); | |
| transition: transform var(--transition); | |
| } | |
| .strategy-card:hover { | |
| border-color: var(--accent); | |
| transform: translateY(-3px); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); | |
| } | |
| .strategy-card:hover::after { | |
| transform: scaleX(1); | |
| } | |
| .strategy-card-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| margin-bottom: 12px; | |
| } | |
| .strategy-card-name { | |
| font-size: 15px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| margin-bottom: 4px; | |
| } | |
| .strategy-card-desc { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| margin-bottom: 16px; | |
| line-height: 1.5; | |
| max-height: 2rem; | |
| overflow: hidden; | |
| } | |
| .strategy-card-metrics { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 10px; | |
| padding-top: 14px; | |
| border-top: 1px solid var(--border); | |
| } | |
| .metric-mini { | |
| text-align: center; | |
| } | |
| .metric-mini-label { | |
| font-size: 10px; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| } | |
| .metric-mini-value { | |
| font-size: 15px; | |
| font-weight: 700; | |
| color: var(--accent); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Badges | |
| ───────────────────────────────────────────── */ | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 3px 10px; | |
| border-radius: 20px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.03em; | |
| } | |
| .badge-testing { | |
| background: var(--yellow-bg); | |
| color: var(--yellow); | |
| border: 1px solid rgba(234, 179, 8, 0.3); | |
| } | |
| .badge-active { | |
| background: var(--green-bg); | |
| color: var(--green); | |
| border: 1px solid rgba(34, 197, 94, 0.3); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Strategy Detail | |
| ───────────────────────────────────────────── */ | |
| .back-btn { | |
| margin-bottom: 0; | |
| } | |
| .strategy-header-card { | |
| padding: 8px 16px; | |
| } | |
| .detail-name-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 3px; | |
| } | |
| /* Name + badge on the same line */ | |
| .detail-name-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .detail-name-row h2 { | |
| font-size: 15px; | |
| font-weight: 700; | |
| margin-bottom: 0; | |
| } | |
| .detail-actions { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| /* Description + details */ | |
| .detail-meta-row { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| margin-top: 8px; | |
| } | |
| .detail-description { | |
| color: var(--text-secondary); | |
| font-size: 13px; | |
| margin: 0; | |
| line-height: 1.6; | |
| } | |
| .detail-details-inline { | |
| display: block; | |
| } | |
| .detail-details-sep { | |
| display: none; | |
| } | |
| .detail-details-text { | |
| color: var(--text-muted); | |
| font-size: 12px; | |
| white-space: pre-wrap; | |
| } | |
| .agg-count { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| background: var(--bg-secondary); | |
| padding: 3px 10px; | |
| border-radius: 20px; | |
| } | |
| .metrics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); | |
| gap: 1px; | |
| background: var(--border); | |
| } | |
| .metric-cell { | |
| background: var(--bg-card); | |
| padding: 8px 14px; | |
| } | |
| .metric-cell-label { | |
| font-size: 10px; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| margin-bottom: 2px; | |
| } | |
| .metric-cell-value { | |
| font-size: 15px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| } | |
| .metric-cell-value.positive { | |
| color: var(--green); | |
| } | |
| .metric-cell-value.negative { | |
| color: var(--red); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Buttons | |
| ───────────────────────────────────────────── */ | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 8px 16px; | |
| border-radius: var(--radius-sm); | |
| font-size: 13px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| border: 1px solid transparent; | |
| transition: all var(--transition); | |
| text-decoration: none; | |
| } | |
| .btn-primary { | |
| background: var(--accent); | |
| color: #fff; | |
| border-color: var(--accent); | |
| } | |
| .btn-primary:hover { | |
| background: var(--accent-hover); | |
| box-shadow: 0 0 16px var(--accent-glow); | |
| } | |
| .btn-secondary { | |
| background: transparent; | |
| color: var(--text-primary); | |
| border-color: var(--border-light); | |
| } | |
| .btn-secondary:hover { | |
| background: var(--bg-card-hover); | |
| } | |
| .btn-ghost { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| border-color: transparent; | |
| } | |
| .btn-ghost:hover { | |
| background: var(--bg-card); | |
| color: var(--text-primary); | |
| } | |
| .btn-danger { | |
| background: var(--red); | |
| color: #fff; | |
| border-color: var(--red); | |
| } | |
| .btn-danger:hover { | |
| background: #dc2626; | |
| } | |
| .btn-icon { | |
| padding: 5px 8px; | |
| font-size: 12px; | |
| } | |
| /* ───────────────────────────────────────────── | |
| Sort Controls | |
| ───────────────────────────────────────────── */ | |
| .sort-controls { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .select-label { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| } | |
| .select-sm { | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| color: var(--text-primary); | |
| border-radius: var(--radius-sm); | |
| padding: 5px 8px; | |
| font-size: 12px; | |
| cursor: pointer; | |
| outline: none; | |
| transition: border-color var(--transition); | |
| } | |
| .select-sm:hover, | |
| .select-sm:focus { | |
| border-color: var(--accent); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Modals | |
| ───────────────────────────────────────────── */ | |
| .modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.7); | |
| backdrop-filter: blur(6px); | |
| display: none; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 500; | |
| padding: 24px; | |
| } | |
| .modal-overlay.open { | |
| display: flex; | |
| } | |
| .modal { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-light); | |
| border-radius: var(--radius); | |
| width: 100%; | |
| max-width: 520px; | |
| max-height: 90vh; | |
| display: flex; | |
| flex-direction: column; | |
| box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6); | |
| animation: modal-in 0.2s ease; | |
| } | |
| .modal-wide { | |
| max-width: 860px; | |
| } | |
| .modal-sm { | |
| max-width: 400px; | |
| } | |
| @keyframes modal-in { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.96) translateY(8px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1) translateY(0); | |
| } | |
| } | |
| .modal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 20px 24px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .modal-header h3 { | |
| font-size: 16px; | |
| font-weight: 700; | |
| } | |
| .modal-close { | |
| background: none; | |
| border: none; | |
| color: var(--text-muted); | |
| font-size: 22px; | |
| cursor: pointer; | |
| line-height: 1; | |
| padding: 0 4px; | |
| transition: color var(--transition); | |
| } | |
| .modal-close:hover { | |
| color: var(--text-primary); | |
| } | |
| .modal-body { | |
| padding: 24px; | |
| overflow-y: auto; | |
| } | |
| .modal-footer { | |
| display: flex; | |
| justify-content: flex-end; | |
| gap: 10px; | |
| padding: 16px 24px; | |
| border-top: 1px solid var(--border); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Forms | |
| ───────────────────────────────────────────── */ | |
| .form-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| } | |
| .field-label { | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| } | |
| .form-input { | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-sm); | |
| color: var(--text-primary); | |
| padding: 9px 12px; | |
| font-size: 13px; | |
| font-family: inherit; | |
| outline: none; | |
| transition: border-color var(--transition), box-shadow var(--transition); | |
| width: 100%; | |
| } | |
| .form-input:focus { | |
| border-color: var(--accent); | |
| box-shadow: 0 0 0 3px var(--accent-glow); | |
| } | |
| .form-input::placeholder { | |
| color: var(--text-muted); | |
| } | |
| textarea.form-input { | |
| resize: vertical; | |
| } | |
| .form-row-3 { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 14px; | |
| margin-bottom: 14px; | |
| } | |
| .form-row-4 { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 14px; | |
| } | |
| .form-divider { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin: 16px 0; | |
| color: var(--text-muted); | |
| font-size: 12px; | |
| font-weight: 600; | |
| } | |
| .form-divider::before, | |
| .form-divider::after { | |
| content: ''; | |
| flex: 1; | |
| height: 1px; | |
| background: var(--border); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Toast | |
| ───────────────────────────────────────────── */ | |
| .toast { | |
| position: fixed; | |
| bottom: 24px; | |
| right: 24px; | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-light); | |
| border-radius: var(--radius-sm); | |
| padding: 12px 20px; | |
| font-size: 13px; | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); | |
| transform: translateY(16px); | |
| opacity: 0; | |
| pointer-events: none; | |
| transition: all 0.3s ease; | |
| z-index: 999; | |
| max-width: 320px; | |
| } | |
| .toast.show { | |
| transform: translateY(0); | |
| opacity: 1; | |
| } | |
| .toast.success { | |
| border-left: 3px solid var(--green); | |
| } | |
| .toast.error { | |
| border-left: 3px solid var(--red); | |
| } | |
| /* ───────────────────────────────────────────── | |
| Empty state | |
| ───────────────────────────────────────────── */ | |
| .empty-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 60px 24px; | |
| color: var(--text-muted); | |
| text-align: center; | |
| } | |
| .empty-state-icon { | |
| font-size: 48px; | |
| } | |
| .empty-state h3 { | |
| font-size: 16px; | |
| color: var(--text-secondary); | |
| } | |
| /* Scrollbar */ | |
| ::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--border-light); | |
| border-radius: 3px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: var(--text-muted); | |
| } |
Xet Storage Details
- Size:
- 20.7 kB
- Xet hash:
- b8bfdf4fc01a8c747e7cc7f50523f0adb63b57c24d1bcdec79fe7e43dcaaa6be
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.