.project-traction{scroll-margin-top:calc(var(--header-height) + var(--space-5))}.project-traction .traction-surface{padding:var(--space-6);color:var(--foreground);background:var(--card)}.traction-heading h2{font-size:var(--text-section);letter-spacing:-.02em;line-height:1.25}.traction-heading p{margin-top:var(--space-2);color:var(--muted-foreground);font-size:var(--text-small);max-width:58ch;line-height:1.5}.traction-current{margin:var(--space-6) 0 var(--space-5)}.traction-current dt,.traction-supporting dt{color:var(--muted-foreground);font-size:var(--text-small);line-height:1.5}.traction-current dd{margin:var(--space-2) 0 0;color:var(--foreground);font-family:var(--font-mono);font-size:var(--text-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-weight:600;line-height:1.2}.traction-history{min-width:0}.traction-history-heading{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.traction-history-heading h3{font-size:var(--text-small);font-weight:600;line-height:1.5}.traction-history-heading>span,.traction-chart-axis,.traction-chart-range{color:var(--muted-foreground);font-family:var(--font-mono);font-size:var(--text-caption);font-variant-numeric:tabular-nums}.traction-chart-plot{--traction-line:var(--foreground);padding-inline-end:var(--space-7);position:relative}.traction-chart-growing{--traction-line:var(--brand)}.traction-chart{width:100%;height:auto;display:block;overflow:visible}.traction-chart-guide{stroke:var(--border);stroke-width:1px;vector-effect:non-scaling-stroke}.traction-chart-line{fill:none;stroke:var(--traction-line);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;animation:traction-line-reveal calc(var(--duration-slow) * 2) var(--ease-out) both}.traction-chart-point{fill:var(--card);stroke:var(--traction-line);stroke-width:1.5px;vector-effect:non-scaling-stroke}.traction-chart-point-current{fill:var(--traction-line)}.traction-chart-axis{inset-inline-end:0;flex-direction:column;justify-content:space-between;line-height:1;display:flex;position:absolute;top:4%;bottom:4%}.traction-chart-range{justify-content:space-between;align-items:start;gap:var(--space-3);margin:var(--space-3) var(--space-7) 0 0;line-height:1.5;display:flex}.traction-chart-range time:last-child{text-align:right}.traction-history-empty{margin:var(--space-5) 0;color:var(--muted-foreground);font-size:var(--text-small);max-width:58ch;line-height:1.6}.traction-history-values{margin-top:var(--space-4);font-size:var(--text-small)}.traction-history-values summary{width:fit-content;min-height:44px;color:var(--muted-foreground);cursor:pointer;border-radius:var(--radius-small);transition:color var(--duration-fast) var(--ease-out);align-content:center}.traction-history-values summary:hover,.traction-history-values summary:active{color:var(--foreground)}.traction-history-values summary:focus-visible{outline:2px solid var(--ring);outline-offset:var(--space-1)}.traction-history-values table{width:100%;margin-top:var(--space-2);border-collapse:collapse}.traction-history-values th,.traction-history-values td{padding:var(--space-3) 0;border-bottom:1px solid var(--border);text-align:left;overflow-wrap:anywhere}.traction-history-values th{color:var(--muted-foreground);font-weight:500}.traction-history-values th:last-child,.traction-history-values td:last-child{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.traction-supporting{gap:var(--space-5) var(--space-6);margin:var(--space-4) 0 0;padding-top:var(--space-5);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.traction-supporting>div{flex:120px;min-width:0}.traction-supporting dd{margin:var(--space-2) 0 0;font-family:var(--font-mono);font-size:var(--text-lead);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-weight:500}@keyframes traction-line-reveal{0%{stroke-dasharray:1;stroke-dashoffset:1px}to{stroke-dasharray:1;stroke-dashoffset:0}}@media (max-width:479px){.project-traction .traction-surface{padding:var(--space-5) var(--space-4)}.traction-current{margin-top:var(--space-5)}.traction-current dd{font-size:var(--text-page)}.traction-supporting{gap:var(--space-5) var(--space-4)}.traction-supporting dd{font-size:var(--text-body)}}@media (prefers-reduced-motion:reduce){.traction-chart-line{animation:none}.traction-history-values summary{transition:none}}
