@font-face{font-family:Bricolage Grotesque;font-weight:700;font-style:normal;font-display:swap;src:url(/assets/BricolageGrotesque_700Bold-C2jlrK5H.ttf) format("truetype")}@font-face{font-family:Bricolage Grotesque;font-weight:800;font-style:normal;font-display:swap;src:url(/assets/BricolageGrotesque_800ExtraBold-BzUh_L3P.ttf) format("truetype")}@font-face{font-family:Instrument Sans;font-weight:400;font-style:normal;font-display:swap;src:url(/assets/InstrumentSans_400Regular-Crsnzn7o.ttf) format("truetype")}@font-face{font-family:Instrument Sans;font-weight:500;font-style:normal;font-display:swap;src:url(/assets/InstrumentSans_500Medium-BBBDQKVc.ttf) format("truetype")}@font-face{font-family:Instrument Sans;font-weight:600;font-style:normal;font-display:swap;src:url(/assets/InstrumentSans_600SemiBold-DrPqsaX5.ttf) format("truetype")}@font-face{font-family:Instrument Sans;font-weight:700;font-style:normal;font-display:swap;src:url(/assets/InstrumentSans_700Bold-CEAwMKe7.ttf) format("truetype")}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ff-color-background-primary);color:var(--ff-color-text-primary);font-family:var(--ff-font-regular-family);font-weight:var(--ff-font-regular-weight);font-size:var(--ff-text-lg);line-height:var(--ff-leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--ff-font-display-family);font-weight:var(--ff-font-display-weight);letter-spacing:var(--ff-tracking-display);line-height:var(--ff-leading-tight);margin:0}h1{font-size:var(--ff-text-xxxl)}h2{font-size:var(--ff-text-xxl)}h3{font-size:var(--ff-text-xl);font-family:var(--ff-font-semibold-family);font-weight:var(--ff-font-semibold-weight)}p{margin:0;color:var(--ff-color-text-body)}a{color:var(--ff-color-text-accent);text-decoration-color:color-mix(in srgb,var(--ff-color-text-accent) 35%,transparent);text-underline-offset:2px}button,[role=button],input,select,textarea{font:inherit;min-height:44px}:focus-visible{outline:2px solid var(--ff-color-border-focus);outline-offset:2px;border-radius:var(--ff-radius-xs)}.ff-scroll-x{overflow-x:auto;overscroll-behavior-x:contain}.ff-panel{background:var(--ff-color-surface-primary);border-radius:var(--ff-radius-lg);box-shadow:var(--ff-card-shadow);border:var(--ff-card-border)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.ff-viz{--viz-surface: var(--ff-color-surface-primary);--viz-plane: var(--ff-color-surface-secondary);--viz-grid: var(--ff-color-border-primary);--viz-axis: var(--ff-color-border-secondary);--viz-ink: var(--ff-color-text-primary);--viz-ink-2: var(--ff-color-text-secondary);--viz-muted: var(--ff-color-text-tertiary);--viz-accent: var(--ff-color-primary-main);--viz-accent-soft: color-mix(in oklab, var(--ff-color-primary-main) 14%, var(--viz-surface));--viz-ok: var(--ff-color-success);--viz-no-engagement: var(--ff-color-category-event);--viz-zero-result: var(--ff-color-error);--viz-ord-base: var(--ff-color-primary-main);--viz-ord-1: color-mix(in oklab, var(--viz-ord-base) 77%, var(--ff-color-text-primary));--viz-ord-2: var(--viz-ord-base);--viz-ord-3: color-mix(in oklab, var(--viz-ord-base) 86%, var(--viz-surface));--viz-ord-4: color-mix(in oklab, var(--viz-ord-base) 71%, var(--viz-surface));--viz-ord-5: color-mix(in oklab, var(--viz-ord-base) 57%, var(--viz-surface));--viz-pos: var(--ff-color-success);--viz-neu: var(--ff-color-text-tertiary);--viz-neg: var(--ff-color-error);--viz-quiet: color-mix(in oklab, var(--ff-color-text-tertiary) 42%, var(--viz-surface))}:root[data-theme=dark] .ff-viz{--viz-accent: var(--ff-color-text-accent);--viz-accent-soft: color-mix(in oklab, var(--ff-color-text-accent) 18%, var(--viz-surface));--viz-ord-base: var(--ff-color-text-accent);--viz-ord-1: var(--viz-ord-base);--viz-ord-2: color-mix(in oklab, var(--viz-ord-base) 87%, var(--viz-surface));--viz-ord-3: color-mix(in oklab, var(--viz-ord-base) 73%, var(--viz-surface));--viz-ord-4: color-mix(in oklab, var(--viz-ord-base) 60%, var(--viz-surface));--viz-ord-5: color-mix(in oklab, var(--viz-ord-base) 46%, var(--viz-surface))}@media(prefers-color-scheme:dark){:root:where(:not([data-theme=light])) .ff-viz{--viz-accent: var(--ff-color-text-accent);--viz-accent-soft: color-mix(in oklab, var(--ff-color-text-accent) 18%, var(--viz-surface));--viz-ord-base: var(--ff-color-text-accent);--viz-ord-1: var(--viz-ord-base);--viz-ord-2: color-mix(in oklab, var(--viz-ord-base) 87%, var(--viz-surface));--viz-ord-3: color-mix(in oklab, var(--viz-ord-base) 73%, var(--viz-surface));--viz-ord-4: color-mix(in oklab, var(--viz-ord-base) 60%, var(--viz-surface));--viz-ord-5: color-mix(in oklab, var(--viz-ord-base) 46%, var(--viz-surface))}}.ff-ov{padding:var(--ff-space-xxl) var(--ff-space-xxxl) var(--ff-space-xxxl);max-width:1240px;margin:0 auto;display:flex;flex-direction:column;gap:var(--ff-space-xxxl)}@media(max-width:720px){.ff-ov{padding:var(--ff-space-lg) var(--ff-space-lg) var(--ff-space-xxl);gap:var(--ff-space-xxl)}}.ff-ov__section{display:flex;flex-direction:column;gap:var(--ff-space-lg)}.ff-ov__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--ff-space-md)}.ff-ov__lede{max-width:76ch;font-size:var(--ff-text-md);color:var(--ff-color-text-secondary)}.ff-ov__grid{display:grid;gap:var(--ff-space-lg)}.ff-card{padding:var(--ff-space-xl);display:flex;flex-direction:column;gap:var(--ff-space-md);min-width:0}.ff-note{border-left:2px solid var(--viz-accent);padding:2px 0 2px var(--ff-space-md);font-size:var(--ff-text-md);color:var(--ff-color-text-secondary);max-width:74ch}.ff-note strong{color:var(--ff-color-text-primary);font-family:var(--ff-font-semibold-family);font-weight:var(--ff-font-semibold-weight)}.ff-fig{font-family:var(--ff-font-bold-family);font-weight:var(--ff-font-bold-weight);line-height:1;color:var(--ff-color-text-primary);font-variant-numeric:proportional-nums}.ff-fig--hero{font-size:52px;letter-spacing:-.02em}.ff-fig--tile{font-size:var(--ff-text-xxl)}.ff-num{font-variant-numeric:tabular-nums}.ff-table{width:100%;border-collapse:collapse;font-size:var(--ff-text-md)}.ff-table th{text-align:left;font-family:var(--ff-font-semibold-family);font-weight:var(--ff-font-semibold-weight);font-size:var(--ff-text-sm);color:var(--ff-color-text-tertiary);padding:var(--ff-space-xs) var(--ff-space-md) var(--ff-space-sm);border-bottom:1px solid var(--viz-grid);white-space:nowrap}.ff-table td{padding:var(--ff-space-sm) var(--ff-space-md);border-bottom:1px solid var(--viz-grid);color:var(--ff-color-text-body);vertical-align:middle}.ff-table tr:last-child td{border-bottom:0}.ff-table__num{text-align:right;font-variant-numeric:tabular-nums;color:var(--ff-color-text-primary)}.ff-sort{display:inline-flex;align-items:center;gap:var(--ff-space-xs);background:none;border:0;padding:var(--ff-space-xs) 0;margin:0;min-height:44px;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}.ff-sort[aria-sort=ascending],.ff-sort[aria-sort=descending]{color:var(--ff-color-text-accent)}.ff-chip{display:inline-flex;align-items:center;gap:var(--ff-space-xs);padding:3px var(--ff-space-sm);border-radius:var(--ff-radius-sm);background:var(--ff-color-surface-tertiary);color:var(--ff-color-text-secondary);font-size:var(--ff-text-sm);white-space:nowrap}.ff-chip--mark{background:var(--viz-accent-soft);color:var(--ff-color-text-accent);font-family:var(--ff-font-semibold-family);font-weight:var(--ff-font-semibold-weight)}.ff-verbatim{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:var(--ff-text-sm);line-height:var(--ff-leading-normal);white-space:pre;-moz-tab-size:2;tab-size:2;color:var(--ff-color-text-primary);background:var(--ff-color-surface-secondary);border:1px solid var(--viz-grid);border-radius:var(--ff-radius-md);padding:var(--ff-space-md);max-height:420px;overflow:auto;overscroll-behavior:contain}.ff-pulse{width:8px;height:8px;border-radius:var(--ff-radius-full);flex:none}.ff-pulse--live{background:var(--viz-ok);animation:ff-ov-pulse 2.4s ease-in-out infinite}.ff-pulse--idle{background:var(--viz-muted)}@keyframes ff-ov-pulse{0%,to{opacity:1}50%{opacity:.35}}.ff-plot{position:relative;min-width:0}.ff-plot svg{display:block;overflow:visible}.ff-plot__hit{fill:transparent;cursor:crosshair}.ff-plot__hit:focus-visible{fill:var(--viz-accent-soft);outline:none}.ff-tip{position:absolute;z-index:3;pointer-events:none;padding:var(--ff-space-sm) var(--ff-space-md);border-radius:var(--ff-radius-md);background:var(--ff-color-background-elevated);border:1px solid var(--ff-color-border-secondary);box-shadow:var(--ff-shadow-medium);font-size:var(--ff-text-sm);color:var(--ff-color-text-primary);min-width:160px;transform:translate(-50%,calc(-100% - 10px))}.ff-tip__row{display:flex;align-items:center;gap:var(--ff-space-sm);justify-content:space-between;white-space:nowrap}.ff-tip__key{display:inline-flex;align-items:center;gap:6px;color:var(--ff-color-text-secondary)}.ff-swatch{width:10px;height:10px;border-radius:3px;flex:none}.ff-legend{display:flex;flex-wrap:wrap;gap:var(--ff-space-md);font-size:var(--ff-text-sm);color:var(--ff-color-text-secondary)}.ff-legend__item{display:inline-flex;align-items:center;gap:6px}.ff-seg{display:inline-flex;padding:3px;gap:2px;border-radius:var(--ff-radius-md);background:var(--ff-color-surface-tertiary)}.ff-seg button{min-height:38px;padding:0 var(--ff-space-md);border:0;border-radius:var(--ff-radius-sm);background:transparent;color:var(--ff-color-text-secondary);font-size:var(--ff-text-md);cursor:pointer}.ff-seg button[aria-pressed=true]{background:var(--ff-color-surface-primary);color:var(--ff-color-text-primary);font-family:var(--ff-font-semibold-family);font-weight:var(--ff-font-semibold-weight);box-shadow:var(--ff-shadow-small)}.ff-disclose>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:var(--ff-text-md);color:var(--ff-color-text-accent);list-style:none}.ff-disclose>summary::-webkit-details-marker{display:none}.ff-disclose>summary:before{content:"▸";margin-right:var(--ff-space-sm);font-size:var(--ff-text-sm)}.ff-disclose[open]>summary:before{content:"▾"}
