:root {
  --bg: #ffffff;
  --ink: #24211d;
  --muted: #716b62;
  --rule: #e4e4e4;
  --card: #ffffff;
  --accent: #b76534;
  --blue: #2e91b8;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 19px;
}
main { width: min(1120px, calc(100% - 32px)); margin: 0 auto; }
.paper-hero { text-align: center; padding: 52px 0 28px; }
h1 {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 6vw, 78px);
  line-height: 1;
  margin: 0 0 8px;
  letter-spacing: -0.045em;
  font-weight: 800;
}
.paper-title {
  width: min(1840px, calc(100vw - 32px));
  margin-left: 50%;
  transform: translateX(-50%);
  font-size: clamp(25px, 2.15vw, 40px);
  line-height: 1.15;
  letter-spacing: -0.035em;
  white-space: nowrap;
}
h2 { font-size: clamp(22px, 3vw, 36px); font-weight: 500; margin: 0 auto 18px; max-width: 980px; }
h3 { font-size: clamp(32px, 3vw, 40px); text-align: center; margin: 0 0 18px; font-family: Georgia, "Times New Roman", serif; }
h4 { margin: 8px 0; font-size: 20px; }
.authors { color: #4a4a4a; font-size: 20px; margin: 0 0 9px; line-height: 1.7; }
.authors a {
  color: var(--blue);
  font-weight: 600;
  text-decoration: none;
  text-underline-offset: 3px;
}
.authors a:hover,
.authors a:focus-visible {
  color: #176d91;
  text-decoration: underline;
}
.affiliations { color: var(--muted); margin: 0 0 22px; font-size: 17px; line-height: 1.55; }
.authors sup, .affiliations sup { font-size: 12px; vertical-align: super; }
.link-row { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; margin-bottom: 28px; }
.pill { padding: 11px 20px; border-radius: 999px; background: #222; color: white; text-decoration: none; font-weight: 700; font-size: 16px; }
.pill-soon { background: #e9e6e0; color: #514b44; }
.pill-soon small { font-size: 12px; font-weight: 500; margin-left: 4px; }
.wide-video { width: 100%; border-radius: 12px; box-shadow: 0 18px 45px rgba(50, 35, 18, .18); background: #111; }
.paper-hero > .wide-video,
.application-section > .wide-video {
  position: relative;
  left: 50%;
  display: block;
  transform: translateX(-50%);
  object-fit: contain;
}
.paper-hero > .wide-video {
  width: min(1050px, calc(100vw - 36px));
}
.application-section > .wide-video {
  width: min(1120px, calc(100vw - 32px));
}
.caption, .section-note { max-width: 900px; margin: 16px auto 0; color: var(--muted); font-size: 18px; line-height: 1.65; text-align: center; }
.section { padding: 44px 0; border-top: 1px solid var(--rule); }
.abstract p { max-width: 940px; margin: 0 auto; color: #38332e; font-size: 19px; line-height: 1.75; text-align: justify; }
.section-kicker {
  margin: 0 0 8px;
  color: var(--accent);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .16em;
  text-align: center;
  text-transform: uppercase;
}
.application-copy,
.method-lead {
  max-width: 980px;
  margin: 0 auto 28px;
  color: #4b4640;
  font-size: 20px;
  line-height: 1.7;
  text-align: center;
}
.application-section .wide-video { margin-top: 4px; }
.method-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 24px; }
.method-card { background: linear-gradient(145deg, #ffffff, #faf8f4); border: 1px solid #ded9d1; border-radius: 14px; padding: 20px; text-align: left; box-shadow: 0 9px 24px rgba(50, 35, 18, .06); }
.method-card span { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: white; background: var(--accent); font-weight: 800; }
.method-card p { color: var(--muted); font-size: 18px; line-height: 1.6; margin-bottom: 0; }
.method-overview { padding-bottom: 54px; }
.method-figure {
  position: relative;
  margin: 30px auto 0;
  background: white;
  border: 1px solid var(--rule);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(50, 35, 18, .09);
}
.method-hero { margin-top: 32px; }
.method-figure img { width: 100%; display: block; background: #fff; }
.method-figure figcaption {
  padding: 14px 20px;
  color: var(--muted);
  font-size: 18px;
  line-height: 1.55;
  text-align: center;
  background: #fafafa;
}
.snap-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 24px; }
.snap-grid figure { margin: 0; background: white; border: 1px solid var(--rule); border-radius: 12px; overflow: hidden; }
.snap-grid img { width: 100%; display: block; }
figcaption { padding: 11px; color: var(--muted); font-size: 16px; }
.compare-scroll { overflow-x: auto; background: white; border-radius: 12px; border: 1px solid var(--rule); margin-top: 22px; }
.comparison-section {
  width: min(1640px, calc(100vw - 32px));
  margin-left: 50%;
  transform: translateX(-50%);
}
.gif-table { border-collapse: collapse; min-width: 1600px; width: 100%; table-layout: fixed; }
.gif-table th { position: sticky; top: 0; background: #f8f8f8; z-index: 1; }
th, td { border-bottom: 1px solid var(--rule); padding: 12px; text-align: center; font-size: 16px; }
.gif-table td:first-child, .gif-table th:first-child { font-weight: 800; color: var(--accent); position: sticky; left: 0; background: #f8f8f8; }
.gif-table th:first-child { width: 90px; }
.gif-table img { width: 150px; height: 150px; object-fit: contain; display: block; margin: 0 auto; }
.gif-table td:nth-child(2) img { width: 156px; height: 156px; }
.gif-table td[data-faces]::after {
  content: "F#" attr(data-faces);
  display: block;
  min-height: 24px;
  margin-top: 3px;
  color: #39342f;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  line-height: 1.25;
}
.gif-table td.ours-result::after { color: #111; font-weight: 800; }
.sample-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 22px; }
.sample-grid img { width: 100%; aspect-ratio: 1.2; object-fit: contain; background: white; border: 1px solid var(--rule); border-radius: 12px; }
.samples-ten { grid-template-columns: repeat(5, 1fr); }
.sample-strip {
  width: min(1880px, calc(100vw - 32px));
  position: relative;
  left: 50%;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(190px, 1fr);
  gap: 14px;
  margin-top: 24px;
  padding: 2px 2px 14px;
  overflow-x: auto;
  transform: translateX(-50%);
  scrollbar-width: thin;
}
.sample-strip figure {
  margin: 0;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 13px;
  box-shadow: 0 8px 22px rgba(50, 35, 18, .07);
}
.sample-strip img {
  width: 100%;
  aspect-ratio: 1 / 1;
  display: block;
  object-fit: contain;
  background: #fff;
}
.sample-strip figcaption { padding: 9px 12px 11px; color: var(--ink); font-size: 16px; font-weight: 700; text-align: center; }
.viewer-heading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 32px;
  text-align: left;
}
.viewer-arrow { color: var(--accent); font-family: Georgia, serif; font-size: 48px; line-height: 1; }
.viewer-heading h4 { margin: 0; font-size: 23px; line-height: 1.2; }
.viewer-heading p { margin: 4px 0 0; color: var(--muted); font-size: 16px; }
.interactive-meshes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 16px;
}
.interactive-meshes figure {
  margin: 0;
  overflow: hidden;
  background: linear-gradient(145deg, #f7f5f0, #fff);
  border: 1px solid var(--rule);
  border-radius: 15px;
  box-shadow: 0 12px 28px rgba(50, 35, 18, .08);
}
.interactive-meshes .mesh-canvas {
  width: 100%;
  height: 340px;
  display: block;
  background: radial-gradient(circle at 50% 45%, #fff 0, #f1eee7 72%);
  cursor: grab;
  touch-action: none;
}
.interactive-meshes .mesh-canvas:active { cursor: grabbing; }
.interactive-meshes figcaption { color: var(--ink); font-size: 18px; font-weight: 700; text-align: center; }
.results table { width: 100%; border-collapse: collapse; background: white; border: 1px solid var(--rule); border-radius: 12px; overflow: hidden; }
.results th, .results td { padding: 14px; }
.bibtex pre { max-width: 850px; margin: 0 auto; background: #29251f; color: #ffffff; padding: 20px; border-radius: 12px; overflow-x: auto; }
@media (max-width: 820px) {
  main { width: min(100% - 20px, 1120px); }
  .method-grid, .snap-grid, .sample-grid, .samples-ten { grid-template-columns: 1fr; }
  .application-copy, .method-lead { font-size: 18px; text-align: left; }
  .interactive-meshes { grid-template-columns: 1fr; }
  .interactive-meshes .mesh-canvas { height: 300px; }
  .comparison-section { width: calc(100vw - 20px); }
  .gif-table img { width: 130px; height: 130px; }
  .gif-table td:nth-child(2) img { width: 138px; height: 138px; }
}
@media (max-width: 1250px) {
  .paper-title {
    width: min(100% - 20px, 1080px);
    white-space: normal;
  }
}
