/* Page-scoped styles: safe beside an embedding host's own UI. */
.favos-page {
  --fp-ink:#191919;
  --fp-muted:#535353;
  --fp-accent:#b42b21;
  --fp-rule:#d8d8d8;
  box-sizing:border-box;
  position:relative;
  width:100%;
  max-width:1080px;
  margin:0 auto;
  padding:28px 32px 36px;
  color:var(--fp-ink);
  background:#fff;
  font:400 16px/1.65 "IBM Plex Sans",Arial,sans-serif;
  text-align:left;
}
.favos-page *, .favos-page *::before, .favos-page *::after { box-sizing:border-box; }
.favos-page h1,.favos-page h2,.favos-page h3,.favos-page p,.favos-page figure { margin:0; }
.favos-page a { color:var(--fp-accent); text-decoration:underline; text-underline-offset:3px; }
.favos-page button,.favos-page input { font:inherit; }
.favos-page button { cursor:pointer; color:var(--fp-ink); background:#fff; border:1px solid var(--fp-ink); border-radius:0; padding:8px 15px; line-height:1.4; }
.favos-page button:disabled { cursor:default; color:#666; border-color:#aaa; }
.favos-page button:hover:enabled { background:#f2f2f2; }
.favos-page :focus-visible { outline:3px solid var(--fp-accent); outline-offset:3px; }
.favos-page [hidden] { display:none!important; }
.favos-page img { max-width:100%; height:auto; }
.favos-page video { display:block; width:100%; max-width:100%; height:auto; background:#171717; }
.favos-page sup,.favos-page sub { font-size:.7em; line-height:0; position:relative; vertical-align:baseline; }
.favos-page sup { top:-.5em; }
.favos-page sub { bottom:-.2em; }
.favos-page h1,.favos-page h2,.favos-page h3 { font-family:"IBM Plex Serif",Georgia,"Times New Roman",serif; font-weight:500; line-height:1.25; }
.favos-page h2 { font-size:30px; margin-bottom:18px; }
.favos-page h3 { font-size:22px; margin:28px 0 12px; }
.favos-page p+p { margin-top:16px; }
.favos-page .fp-sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.favos-page .fp-skip { position:absolute; top:8px; left:8px; transform:translateY(-200%); background:white; padding:8px; z-index:5; }
.favos-page .fp-skip:focus { transform:none; }
.favos-page .fp-masthead { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-bottom:45px; }
.favos-page .fp-masthead a { display:block; }
.favos-page .fp-masthead img { display:block; }
.favos-page .fp-publication { text-align:center; margin-bottom:54px; }
.favos-page .fp-venue { color:var(--fp-accent); font-size:15px; margin-bottom:20px; }
.favos-page h1 { font-size:clamp(29px,4.2vw,45px); letter-spacing:-.6px; margin:0 auto 24px; max-width:960px; overflow-wrap:break-word; }
.favos-page h1 em { color:var(--fp-accent); font-weight:500; }
.favos-page .fp-authors { font-size:18px; line-height:1.85; }
.favos-page .fp-authors span { display:inline-block; white-space:nowrap; margin-inline:7px; }
.favos-page .fp-authors a { color:inherit; text-decoration:none; }
.favos-page .fp-authors a:hover,.favos-page .fp-authors a:focus-visible { text-decoration:underline; }
.favos-page .fp-affiliations { margin-top:10px; font-size:17px; }
.favos-page .fp-links { display:flex; justify-content:center; flex-wrap:wrap; gap:12px; margin-top:24px; }
.favos-page .resource-link { display:inline-flex; align-items:center; gap:6px; color:var(--fp-ink); border:1px solid #333; padding:6px 17px; text-decoration:none; }
.favos-page .resource-link small { font-size:10px; color:var(--fp-muted); }
.favos-page .fp-story { max-width:880px; margin:28px auto 0; border-block:1px solid var(--fp-rule); padding:16px 0; text-align:left; font-size:15px; line-height:1.6; }
.favos-page .fp-story ul { margin:0; padding:0; list-style:none; }
.favos-page .fp-story li+li { margin-top:8px; }
.favos-page .fp-challenge h2 { font-size:36px; }
.favos-page .fp-challenge-intro { display:flex; align-items:center; gap:20px; margin-bottom:20px; }
.favos-page .fp-challenge-intro img { width:112px; max-height:84px; object-fit:contain; flex:none; }
.favos-page .fp-challenge-intro p { font-size:16px; }
.favos-page .fp-challenge-intro .fp-challenge-hint { margin-top:6px; font-size:13px; color:var(--fp-muted); }
.favos-page .fp-screen { position:relative; padding-block:10px; background:repeating-linear-gradient(90deg,#222 0 12px,#fff 12px 20px); }
.favos-page .fp-challenge .fp-screen { max-width:330px; margin-inline:auto; }
.favos-page .fp-comparison video { max-width:990px; margin-inline:auto; }
.favos-page .fp-pane-labels { max-width:990px; margin-inline:auto; }
.favos-page .fp-math { position:relative; display:inline-block; max-width:100%; vertical-align:baseline; }
.favos-page .fp-math .fp-math-render { position:absolute; left:0; top:0; max-width:100%; overflow:hidden; }
.favos-page .fp-math-ready .fp-math-render { position:static; overflow:visible; }
.favos-page .fp-math-display { display:block; width:100%; }
.favos-page .fp-math mjx-container[jax="SVG"] { max-width:100%; margin:0!important; }
.favos-page .fp-math mjx-container[jax="SVG"]>svg { max-width:100%; height:auto; }
.favos-page .fp-hit-surface { position:absolute; inset:10px 0; width:100%; padding:0; background:transparent; border:0; color:transparent; cursor:crosshair; }
.favos-page .fp-hit-surface:hover:enabled { background:transparent; }
.favos-page .fp-hit-surface:disabled { cursor:default; }
.favos-page .fp-game-controls { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:12px; margin-top:16px; }
.favos-page #challenge-play { background:var(--fp-accent); color:white; border-color:var(--fp-accent); }
.favos-page #challenge-progress { font-family:"IBM Plex Mono",Consolas,monospace; font-size:13px; }
.favos-page .fp-caption,.favos-page figcaption { font-size:14px; line-height:1.6; color:var(--fp-muted); margin-top:12px; }
.favos-page .fp-game-result { border-left:3px solid var(--fp-accent); padding-left:20px; margin:28px 0; }
.favos-page .fp-game-result h3 { margin:0 0 12px; }
.favos-page .fp-game-result button { margin-top:14px; }
.favos-page .fp-game-result p+p { margin-top:8px; }
.favos-page .fp-game-result.fp-win h3 { color:var(--fp-accent); font-size:34px; transform-origin:left center; animation:fp-pop .55s ease-out; }
@keyframes fp-pop { 0% { transform:scale(.6); opacity:0; } 60% { transform:scale(1.08); opacity:1; } 100% { transform:scale(1); } }
.favos-page .fp-confetti { position:fixed; inset:0; width:100vw; height:100vh; pointer-events:none; z-index:50; }
.favos-page .fp-comparison { margin-top:32px; }
.favos-page .fp-pane-labels { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); text-align:center; font-weight:500; margin-bottom:8px; }
.favos-page .fp-headline { width:100%; max-width:660px; margin:24px auto 0; border-collapse:collapse; table-layout:fixed; }
.favos-page .fp-headline caption { text-align:left; margin-bottom:10px; font-size:16px; font-weight:500; }
.favos-page .fp-headline th,.favos-page .fp-headline td { padding:10px 8px; border-bottom:1px solid var(--fp-rule); text-align:center; overflow-wrap:break-word; }
.favos-page .fp-headline th:first-child { text-align:left; font-weight:500; }
.favos-page .fp-headline thead th { font-weight:400; line-height:1.35; font-size:15px; }
.favos-page .fp-headline td { font:500 32px/1.25 "IBM Plex Mono",Consolas,monospace; }
.favos-page .fp-headline td { color:var(--fp-accent); }
.favos-page .fp-section { border-top:1px solid var(--fp-rule); padding-top:36px; margin-top:48px; min-width:0; }
.favos-page .fp-section>p,.favos-page .fp-abstract { max-width:850px; }
.favos-page .fp-equation { font-family:"IBM Plex Mono",Consolas,monospace; font-size:19px; margin:22px 0; overflow-wrap:anywhere; }
.favos-page .fp-tau { margin-top:25px; max-width:740px; }
.favos-page .fp-tau label { display:flex; justify-content:space-between; font-weight:500; gap:20px; }
.favos-page #tau-value { font-family:"IBM Plex Mono",Consolas,monospace; }
.favos-page #tau-slider { display:block; width:100%; margin:16px 0; accent-color:var(--fp-accent); }
.favos-page .fp-contribution-controls { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; margin:22px 0; }
.favos-page .fp-contribution-controls label { display:block; font-size:14px; font-weight:400; }
.favos-page .fp-contribution-controls output { font-family:"IBM Plex Mono",Consolas,monospace; }
.favos-page .fp-contribution-controls input { display:block; width:100%; margin:12px 0; accent-color:var(--fp-accent); }
.favos-page .fp-control-definition { font-size:12px; line-height:1.45; color:var(--fp-muted); }
.favos-page .fp-contribution-figure { max-width:640px; margin:22px 0; }
.favos-page .fp-contribution-legend { display:flex; flex-wrap:wrap; gap:10px 24px; font-size:15px; }
.favos-page .fp-cls-label { color:#b36035; }
.favos-page .fp-seg-label { color:#315d82; }
.favos-page .fp-contribution-legend>span::before { content:""; display:inline-block; width:22px; margin-right:7px; vertical-align:middle; border-top:2px solid currentColor; }
.favos-page .fp-plot-axis { font-size:14px; margin-top:12px; }
.favos-page #favos-contribution-plot { display:block; width:100%; height:auto; overflow:visible; }
.favos-page #favos-contribution-plot text { font:20px Arial,sans-serif; fill:var(--fp-ink); }
.favos-page .fp-plot-grid { stroke:#ddd; stroke-dasharray:2 4; stroke-width:1; }
.favos-page .fp-plot-axis-line { fill:none; stroke:#333; stroke-width:1; }
.favos-page .fp-cls-curve,.favos-page .fp-seg-curve { fill:none; stroke-width:2.5; }
.favos-page .fp-cls-curve { stroke:#b36035; }
.favos-page .fp-seg-curve { stroke:#315d82; }
.favos-page .fp-crossover-line { stroke:#666; stroke-dasharray:6 5; stroke-width:1.5; }
.favos-page .fp-cls-marker { fill:#b36035; stroke:white; stroke-width:1; }
.favos-page .fp-seg-marker { fill:#315d82; stroke:white; stroke-width:1; }
.favos-page .fp-visibility-control { font-size:14px; }
.favos-page #contribution-status { font-size:17px; margin-top:18px; }
.favos-page .fp-examples { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px 24px; margin:26px 0; }
.favos-page .fp-example { min-width:0; }
.favos-page .fp-example figcaption { margin-top:9px; }
.favos-page .fp-example video { aspect-ratio:16/9; object-fit:contain; }
.favos-page .fp-table-wrap { overflow:auto; width:100%; min-width:0; margin-top:24px; }
.favos-page .fp-table-wrap table { width:100%; border-collapse:collapse; font-size:14px; font-variant-numeric:tabular-nums; }
.favos-page .fp-table-wrap caption { text-align:left; font-size:17px; font-weight:500; margin-bottom:10px; }
.favos-page .fp-table-wrap th,.favos-page .fp-table-wrap td { padding:8px 9px; border-bottom:1px solid var(--fp-rule); text-align:right; white-space:nowrap; }
.favos-page .fp-table-wrap th { font-weight:500; }
.favos-page .fp-table-wrap th:first-child { text-align:left; }
.favos-page .fp-table-wrap thead { border-block:1px solid #333; }
.favos-page .fp-table-wrap .empty-row th { color:var(--fp-accent); }
.favos-page .fp-results-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; }
.favos-page .fp-details { border-bottom:1px solid var(--fp-rule); padding:20px 0; }
.favos-page .fp-details summary { cursor:pointer; font-weight:500; }
.favos-page .fp-details>p { margin-top:15px; }
.favos-page .fp-citation-heading { display:flex; justify-content:space-between; align-items:baseline; gap:20px; }
.favos-page pre { margin:6px 0 0; padding:18px 0; border-block:1px solid var(--fp-rule); white-space:pre-wrap; overflow-wrap:anywhere; font:400 13px/1.7 "IBM Plex Mono",Consolas,monospace; }
.favos-page code { font:inherit; }
.favos-page .fp-footer { margin-top:50px; padding-top:22px; border-top:1px solid var(--fp-rule); font-size:13px; color:var(--fp-muted); }
@media(max-width:720px) {
  .favos-page { padding:22px 20px 28px; }
  .favos-page .fp-masthead { gap:20px; margin-bottom:32px; }
  .favos-page .fp-masthead a:first-child { max-width:120px; }
  .favos-page .fp-masthead a:last-child { max-width:165px; }
  .favos-page .fp-publication { margin-bottom:38px; }
  .favos-page .fp-authors { font-size:16px; }
  .favos-page .fp-venue { font-size:14px; }
  .favos-page .fp-affiliations { font-size:15.5px; }
  .favos-page .resource-link { padding:6px 12px; }
  .favos-page .fp-links { gap:8px; }
  .favos-page h2 { font-size:27px; }
  .favos-page .fp-challenge h2 { font-size:31px; }
  .favos-page .fp-challenge-intro { gap:14px; align-items:flex-start; }
  .favos-page .fp-challenge-intro img { width:90px; }
  .favos-page .fp-challenge-intro p { font-size:14px; }
  .favos-page .fp-game-controls { gap:10px; }
  .favos-page .fp-game-controls button { padding:9px 11px; font-size:14px; }
  .favos-page .fp-headline td { font-size:25px; }
  .favos-page .fp-headline thead th { font-size:13px; padding:8px 4px; }
  .favos-page .fp-headline th:first-child { font-size:14px; }
  .favos-page .fp-examples,.favos-page .fp-results-grid { grid-template-columns:minmax(0,1fr); }
  .favos-page .fp-section { margin-top:36px; padding-top:28px; }
  .favos-page .fp-equation { font-size:16px; }
  .favos-page .fp-contribution-controls { grid-template-columns:minmax(0,1fr); gap:4px; }
}
@media(prefers-reduced-motion:reduce) {
  .favos-page,.favos-page *, .favos-page *::before,.favos-page *::after { scroll-behavior:auto!important; animation:none!important; transition:none!important; }
}
.favos-page .fp-affiliations .fp-corresponding { font-size:13px; color:var(--fp-muted); }
