:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--text:#0b0b0c;--text-2:#5c5f66;--bg:#fff;--page:#fafafb;--surface:#f4f4f6;--border:#d9dadf;--primary:#0b0b0c;--on-primary:#fff;--danger:#b42318;--danger-surface:#fdecea;--success:#1f7a3a;--success-surface:#e7f4eb;--warning:#8a5a00;--warning-surface:#fdf3dc;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--grid:#ececef;--radius-sm:10px;--radius:14px;--radius-lg:20px;--font:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#f5f5f7;--text-2:#a6a8ae;--bg:#131416;--page:#0b0b0c;--surface:#1a1b1e;--border:#303238;--primary:#f5f5f7;--on-primary:#0b0b0c;--danger:#ff7a6e;--danger-surface:#3a1714;--success:#5ccb7e;--success-surface:#14301d;--warning:#f0b84a;--warning-surface:#33270e;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--grid:#26282d}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--page);color:var(--text);font:15px/1.5 var(--font);-webkit-font-smoothing:antialiased}a{color:inherit}h1,h2,h3{letter-spacing:-.01em;margin:0;line-height:1.25}h1{font-size:28px}h2{font-size:16px}h3{margin:4px 0 8px;font-size:17px}p{margin:0 0 8px}button{font:inherit}:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.muted{color:var(--text-2)}.small{font-size:13px}.center{text-align:center}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.big{font-size:18px;font-weight:600}.eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);font-size:12px}.min-w-0{min-width:0}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clamp-1,.clamp-2,.clamp-3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.clamp-1{-webkit-line-clamp:1;line-clamp:1}.clamp-2{-webkit-line-clamp:2;line-clamp:2}.clamp-3{-webkit-line-clamp:3;line-clamp:3}.stack-sm>*+*{margin-top:4px}.divider{background:var(--border);height:1px;margin:16px 0}.prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.logo{background:currentColor;flex:none;display:inline-block;-webkit-mask:url(/spool-mark.png) 50%/contain no-repeat;mask:url(/spool-mark.png) 50%/contain no-repeat}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg);border-right:1px solid var(--border);flex-direction:column;gap:16px;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:0 8px;font-size:20px;font-weight:700;display:flex}.btn.menu-toggle{margin-left:auto;display:none}.nav{flex-direction:column;gap:2px;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-2);padding:9px 12px;font-weight:500;text-decoration:none}.nav-link:hover{background:var(--surface);color:var(--text)}.nav-link.is-active{background:var(--primary);color:var(--on-primary)}.sidebar-foot{flex-direction:column;gap:4px;margin-top:auto;padding:0 8px;display:flex}.sidebar-foot .btn{align-self:flex-start;margin-top:8px}.main{flex-direction:column;gap:16px;min-width:0;max-width:1120px;padding:32px clamp(16px,4vw,48px) 64px;display:flex}@media (width<=800px){.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{z-index:10;border-right:0;border-bottom:1px solid var(--border);height:auto;padding:12px 16px;position:sticky}.brand{padding:0}.btn.menu-toggle{display:inline-flex}.main .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.main .stat{padding:14px 16px}.main .stat-value{font-size:22px}.sidebar .nav,.sidebar .sidebar-foot{display:none}.sidebar.is-open .nav,.sidebar.is-open .sidebar-foot{display:flex}.sidebar-foot{padding:8px 12px 0}.main{padding:20px 16px 48px}h1{font-size:24px}}.page-header{flex-direction:column;gap:4px;margin-bottom:4px;display:flex}.page-header p{margin:0}.back-link{color:var(--text-2);margin-bottom:4px;font-size:14px;text-decoration:none}.back-link:hover{color:var(--text)}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:0;padding:20px}.card-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.card-head a{color:var(--text-2);text-decoration:none}.card-head a:hover{color:var(--text)}.card-link{text-decoration:none;transition:border-color .15s;display:block}.card-link:hover{border-color:var(--text-2)}.cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.stat{padding:16px 20px;text-decoration:none}.stat-label{color:var(--text-2);font-size:13px}.stat-value{font-variant-numeric:tabular-nums;margin:2px 0;font-size:28px;font-weight:700}.stat-hint{color:var(--text-2);font-size:13px}.stat-link:hover{border-color:var(--text-2)}.list{margin:0;padding:0;list-style:none}.list>li+li{border-top:1px solid var(--border)}.list-row{justify-content:space-between;align-items:center;gap:16px;padding:12px 0;text-decoration:none;display:flex}a.list-row:hover .row-title,a.list-row:hover>div:first-child>div:last-child{text-decoration:underline}.list-row p{margin:4px 0 0}.row-title{font-weight:600}.row-meta{flex-direction:column;flex:none;align-items:flex-end;gap:4px;display:flex}.bullets{margin:0;padding-left:20px}.bullets li+li{margin-top:6px}.timeline{margin:0;padding:0;list-style:none}.timeline li{grid-template-columns:48px 1fr;gap:12px;padding:8px 0;display:grid}.timeline li+li{border-top:1px solid var(--border)}.dl{grid-template-columns:max-content 1fr;gap:8px 24px;margin:0 0 12px;display:grid}.dl dt{color:var(--text-2)}.dl dd{overflow-wrap:anywhere;margin:0}@media (width<=480px){.dl{grid-template-columns:1fr;gap:2px}.dl dd{margin-bottom:8px}}.badge{white-space:nowrap;background:var(--surface);color:var(--text-2);border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-success{background:var(--success-surface);color:var(--success)}.badge-warning{background:var(--warning-surface);color:var(--warning)}.badge-danger{background:var(--danger-surface);color:var(--danger)}.tags{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:13px}.chip.is-active{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.chip.is-active .muted{color:inherit;opacity:.7}.tabs{background:var(--surface);border-radius:999px;align-self:flex-start;gap:4px;padding:4px;display:inline-flex}.tab{color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 16px;font-weight:500}.tab.is-active{background:var(--bg);color:var(--text);box-shadow:0 1px 2px #00000014}.banner{border-radius:var(--radius);background:var(--warning-surface);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.banner-danger{background:var(--danger-surface)}.state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px 16px;display:flex}.state-title{margin:0;font-weight:600}.state-error p{color:var(--danger)}.spinner{border:2px solid var(--border);border-top-color:var(--text);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.inline-error{color:var(--danger);background:var(--danger-surface);border-radius:var(--radius-sm);white-space:pre-line;margin:0;padding:8px 12px}.btn{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:default}.btn-sm{padding:6px 14px;font-size:13px}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-secondary{background:var(--bg);color:var(--text);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--text-2)}.btn-danger{background:var(--danger-surface);color:var(--danger)}.btn-link{color:var(--text-2);background:0 0;border:0;padding:4px 0;font-weight:500}.btn-link:hover{color:var(--text)}.row-actions{flex-wrap:wrap;gap:12px;display:flex}.toolbar{gap:12px;display:flex}.search,.field input{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px}.search:focus,.field input:focus{border-color:var(--text);outline:none}.field{flex-direction:column;gap:6px;font-weight:500;display:flex}.check{align-items:center;gap:8px;font-size:14px;display:flex}.pager{justify-content:space-between;align-items:center;gap:12px;display:flex}.auth-page{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.auth-card{flex-direction:column;gap:16px;width:100%;max-width:400px;padding:32px 28px;display:flex}.auth-brand{text-align:center;flex-direction:column;align-items:center;gap:8px;margin-bottom:8px;display:flex}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px}.table th{color:var(--text-2);font-weight:500}.table .num{text-align:right;font-variant-numeric:tabular-nums}.viz-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.viz-title{font-weight:600}.viz-plot{position:relative}.viz-plot svg{width:100%;height:180px;display:block;overflow:visible}.viz-grid{stroke:var(--grid);stroke-width:1px}.viz-axis{fill:var(--text-2);font-variant-numeric:tabular-nums;font-size:11px}.viz-bar{fill:var(--series-1);transition:opacity .15s}.viz-plot svg:hover .viz-bar:not(.is-hover){opacity:.55}.viz-plot rect:focus-visible{stroke:var(--text);stroke-width:1px;outline:none}.viz-tooltip{pointer-events:none;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:nowrap;padding:6px 10px;font-size:13px;position:absolute;transform:translate(-50%,calc(-100% - 10px));box-shadow:0 4px 12px #0000001f}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.main-wide{max-width:1320px}.page-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 24px;display:flex}.page-toolbar .tabs{align-self:auto}.refresh-hint{margin-top:-8px}.stats-5{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.delta{font-variant-numeric:tabular-nums;font-weight:600}.delta-good{color:var(--success)}.delta-bad{color:var(--danger)}.mini-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin:0 0 12px;display:grid}.mini-stats dt{color:var(--text-2);font-size:13px}.mini-stats dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:20px;font-weight:700}.badge-admin{background:var(--primary);color:var(--on-primary);font-size:11px}.highlights{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;display:grid}.highlight{background:var(--surface);border-radius:var(--radius);padding:12px 16px}.legend{color:var(--text-2);flex-wrap:wrap;gap:6px 16px;margin-bottom:8px;font-size:13px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-swatch{border-radius:3px;flex:none;width:10px;height:10px;display:inline-block}.tt-row{grid-template-columns:10px 1fr auto;align-items:center;gap:8px;min-width:150px;display:grid}.viz-label{fill:var(--text-2);font-size:12px}.viz-crosshair{stroke:var(--text-2);stroke-width:1px;stroke-dasharray:3 3}.table-scroll{max-height:420px;overflow:auto}.table-x{overflow-x:auto}.barlist{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.barlist-head{justify-content:space-between;gap:12px;margin-bottom:4px;font-size:14px;display:flex}.barlist-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.barlist-value .muted{font-weight:400}.barlist-track{background:var(--surface);border-radius:999px;height:8px;overflow:hidden}.barlist-fill{background:var(--series-1);border-radius:999px;min-width:2px;height:100%}.heatmap-wrap{overflow-x:auto}.heatmap{grid-template-columns:36px repeat(24,minmax(14px,1fr));gap:3px;min-width:520px;display:grid}.heatmap-row{display:contents}.heatmap-day,.heatmap-hour{white-space:nowrap;font-size:11px}.heatmap-day{align-self:center}.heatmap-hour{overflow:visible}.heatmap-cell{--level:0;aspect-ratio:1;background:color-mix(in oklab, var(--series-1) calc(var(--level) * 1%), var(--surface));border-radius:3px;min-height:14px}.heatmap-cell.is-hover,.heatmap-cell:focus-visible{outline:2px solid var(--text);outline-offset:1px}.heatmap-foot{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:12px;display:flex}.heatmap-scale{align-items:center;gap:4px;display:inline-flex}.heatmap-scale .heatmap-cell{width:14px;min-height:14px;display:inline-block}.cohort-cell{--level:0;background:color-mix(in oklab, var(--series-1) calc(var(--level) * 0.6%), var(--bg))}.th-sort{font:inherit;color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0}.th-sort:hover{color:var(--text)}.users-table td{vertical-align:middle}.user-cell{flex-direction:column;min-width:180px;text-decoration:none;display:flex}.user-cell:hover .row-title{text-decoration:underline}.tags-tight{flex-wrap:nowrap;margin:0}
