: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;--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;--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}
